keycloak~为认证提供者添加配置项
keycloak提供多种认证提供者,如用户名密码的方式,第三方社区的方式,一般来说,第三方社区的方式都是符合oauth2标准的,第三方社区像github,google,weixin之类的都需要你去申请个appid,appsecret,而这些信息我们不要硬编码,kc为我们提供了一种配置的方式,在kc管理平台中去配置它们。
几种认证接口
- Authenticator 认证接口
- AbstractFormAuthenticator 表单认证
- AbstractUsernameFormAuthenticator 用户名和密码的表单认证
- BaseDirectGrantAuthenticator 直接认证接口
- IdentityProvider 认证服务的标准接口,所有三方认证服务都实现它
- AbstractIdentityProvider 证服务的抽象类
- AbstractOAuth2IdentityProvider 提供了oauth2的标准
- SocialIdentityProvider 第三方社区认证
认证服务的配置
- 为ProviderConfigProperty对象添加配置集合
private static final List<ProviderConfigProperty> configProperties = new ArrayList<>();
static {
List<ProviderConfigProperty> config = ProviderConfigurationBuilder.create()
.property()
.name(DEFAULT_REGISTER_ADDRESS).label("默认注册页").helpText("不设置时,前端登录显示不显示'注册'按钮").type(ProviderConfigProperty.STRING_TYPE).add()
.property()
.name(FORGET_PASSWORD_ADDRESS).label("忘记密码页").helpText("不设置时,前端不显示'忘记密码'按钮").type(ProviderConfigProperty.STRING_TYPE).add()
.property()
.name(SHOW_AUTO_LOGIN).label("显示自动登录").type(ProviderConfigProperty.BOOLEAN_TYPE).add()
.property()
.name(WEIXIN_CALLBACK).label("微信回调地址").type(ProviderConfigProperty.STRING_TYPE).add()
.build();
configProperties.addAll(config);
}
- 重写可配置方法
@Override
public boolean isConfigurable() {
return true;
}
- 返回配置对象
@Override
public List<ProviderConfigProperty> getConfigProperties() {
return configProperties;
}
获取配置荐
- 直接获取
String regAddr=context.getAuthenticatorConfig().getConfig().get(DEFAULT_REGISTER_ADDRESS)
- 将配置通过表单属性传递到前端ftl里
LoginFormsProvider forms = context.form();
if (context.getAuthenticatorConfig() != null
&& context.getAuthenticatorConfig().getConfig() != null) {
forms.setAttribute(SHOW_AUTO_LOGIN, context.getAuthenticatorConfig().getConfig().get(SHOW_AUTO_LOGIN));
forms.setAttribute(WEIXIN_CALLBACK, context.getAuthenticatorConfig().getConfig().get(WEIXIN_CALLBACK));
}
- 前端直接使用
<span>${(account.email!'未设置')}<span>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2020-08-24 hbase~工作原理
2020-08-24 hbase~基础知识梳理
2020-08-24 es~ElasticsearchTemplate的查询和聚合
2015-08-24 我心中的核心组件~HttpHandler和HttpModule实现图像的缩放与Url的重写
2013-08-24 EF架构~数据分批批量提交
2012-08-24 Lucene中对document(记录)的CURD操作~为分布式全文检索设计
2011-08-24 在MVC中Controller为VIEW页面中的DropDownList赋值并锁定