keycloak~11.3.0之后微信认证问题解决
之前写过基于keycloak11.0.3版的微信认证的实现,而在升级到keycloak14.0.0之后,这个认证出现了问题,原因是因为人家keycloak内部源码又变了。
- 影响类文件
server-spi-private/src/main/java/org/keycloak/broker/provider/BrokeredIdentityContext.java
- github地址:https://github.com/keycloak/keycloak/commit/41dc94fead4c20560e0dd96c3efbd7bd10a484b6
- 修改的地方:去掉了code字段,相应的setCode,getCode也去了,在认证后回调的地方也进行了调整
AuthenticationSessionModel authSession = this.callback.getAndVerifyAuthenticationSession(state);
session.getContext().setAuthenticationSession(authSession);
federatedIdentity.setIdpConfig(getConfig());
federatedIdentity.setIdp(AbstractOAuth2IdentityProvider.this);
federatedIdentity.setAuthenticationSession(authSession);
上面源代码的调整直接影响了我们的微信认证的集成,我们也需要进行调整Endpoint
类中的authResponse
方法,也相应的修改即可
BrokeredIdentityContext federatedIdentity = null;
if (authorizationCode != null) {
String response = generateTokenRequest(authorizationCode, wechatFlag).asString();
logger.info("authResponse.response=" + response);
federatedIdentity = getFederatedIdentity(response, wechatFlag);
if (getConfig().isStoreToken()) {
if (federatedIdentity.getToken() == null)
federatedIdentity.setToken(response);
}
federatedIdentity.setIdpConfig(getConfig());
federatedIdentity.setIdp(WeiXinIdentityProvider.this);
//11.3.0之后改成这样了,去掉了code字段
AuthenticationSessionModel authSession = this.callback.getAndVerifyAuthenticationSession(state);
session.getContext().setAuthenticationSession(authSession);
federatedIdentity.setAuthenticationSession(authSession);
logger.info("authResponse success" + federatedIdentity);
return callback.authenticated(federatedIdentity);
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示
2017-11-02 WebApi系列~对HttpClient的响应流进行解压
2016-11-02 爱上MVC~一个Action多套View模版的设计
2012-11-02 EF架构~看看下面这代码,你还敢用它的延时加载吗?