keycloak~keycloak14.0源代码二次开发
编译keycloak源代码某个包mvn package -Denforcer.skiptrue -Dmaven.test.skiptrue mvn clean install -Dskiptrue部署到私服,建议源码修改后应该部署到私服这样其它应用在部署时也有可以使用修改后的代码了$ mvn deploy -Denforcer.skiptrue -Dmaven.test.skiptrue当用户已经在浏览器登录在使用自动登录接口或者之前同时打开两个登录页这时为了保证用户的登录状态后面的登录请求会被拦截跳转到“首页”如果非iframe的情况使用下面的代码可以实现问题在org.keycloak.services.resources.LoginActionsServiceChecks.checkNotLoggedInYet()和SessionCodeChecks.initialVerifyAuthSession()方法添加302跳转对于iframe里面的登录页需要考虑如何在顶级窗口实现重定向,目前添加js重定向解决了这个iframe问题// TODO: 当用户已经登录了直接跳到首页 Response.status(302).header(HttpHeaders.LOCATION, https://www.xxx.com).build();js重定向解决了同时多个iframe登录框在其中一个登录另一个在本iframe重定向问题修改url中有特殊符号的问题修改org.keycloak.protocol.oidc.utils.RedirectUtils.removeUrlSpaceParams方法将特殊符号进行编码生成token时添加日志修改code to token的缓存类型默认使用BasicCache应该是本地缓存,查通过查看TokenEndpoint发现是分布式缓存LOGIN事件的个性化配置org.keycloak.services.managers.AuthenticationManager的方法nextRequiredAction和actionRequired,添加了LOGIN事件的个性化字段code_to_token时去掉了clientId限制code_to_token时去掉了clientId必须一致的条件的检验这样不同客户端在通过code换token时可以减少与kc交互交次数方法变更TokenEndpoint.codeToToken()code_to_token时对浏览器sessionId操作当code to token出现错误时添加了清空浏览器里sessionId在kc的会话信息但如果是httpclient的调用咱们是拿不到客户端浏览器的cookie的Code %s already used for userSessionorg.keycloak.protocol.oidc.util.OAuth2CodeParser.parseCode这块添加了clientId的日志描述

相关新闻