我试图实现一个自定义密钥克拉克身份验证器SPI,用于对外部身份提供程序进行身份验证。用户已经存在于keycloak存储中,我只需要连接到自定义SPI来验证他们。
我正在遵循官方指南https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi_walkthrough的第8.3节,这与我所需要的非常相似。
// org.keycloak.authentication.AuthenticationProcessor - line 876
if (authenticationSession.getAuthenticatedUser() == null) {
throw new AuthenticationFlowException(AuthenticationFlowError.UNKNOWN_USER);
}
// Connect against external Service Provider
// and asume "USER_ID" represents an already validated User
// AuthenticationFlowContext = afc is given as parameter
UserFederationManager ufm = afc.getSession().users(); // <-- PROBLEM
UserModel userFound = ufm.getUserById("USER_ID", afc.getRealm());
if (userFound != null) {
// get reference to the authSession
AuthenticationSessionModel asm = afc.getAuthenticationSession();
// set authenticated user on the session
asm.setAuthenticatedUser(userFound );
return true;
}
return false;
问题似乎是我使用了org.keycloak.models.UserFederationManager实例,而不是org.keycloak.models.UserProvider实例。UserFederationManager实现了UserProvider,在keycloak使用的注入机制下,更通用的类型似乎比更具体的类型更好用
// UserFederationManager ufm = afc.getSession().users(); // <-- PROBLEM
// UserProvider ufm = afc.getSession().users(); // <-- WORKS
即使它现在起作用,您的两个建议都是有效的,因为我的构建版本确实不同于运行时的版本,我将解决这一点,以避免进一步的bug。
谢谢你们的投入!
我需要在自定义密钥斗篷SPI身份验证器中处理用户的取消。我实现了它,它工作得很好。我所需要的是取消登录流程,并从用户点击取消时的乞讨开始 在我的例子中,我得到了登录页面,但URL错误: http://localhost:8080/auth/realms/realm1/login-actions/authenticate?execution=bb1fb7c3-0b59-4a07-b997-b619c
我正在尝试实现一个自定义密钥克拉克身份验证器SPI,用于针对外部数据源/REST服务进行身份验证。计划是将它们迁移到Keycloak。 成功后,在keycloak数据源上创建用户。 创建自定义映射器以在令牌上添加额外的用户属性。 我正在遵循官方指南https://www.keycloak.org/docs/latest/server_development/index.html#_auth_spi
我向我的领域添加了一个自定义OIDC身份提供者,我想使用直接访问授权流(或< code>grant_type=password),但这不起作用。 钥匙斗篷有可能吗? 当尝试使用授权代码流程时,一切正常,但使用时出错 被退回。 我正在尝试获取访问令牌 e 刷新令牌执行以下请求: 这是身份提供者配置:这是身份提供者配置
嗨,好几天了,我都被困在这上面了!在使用本指南转换我的react应用程序后,我尝试使用KeyClope对我的electron应用程序进行身份验证。 当我运行'npm运行电子:dev'时,keyCloak会重定向到登录页面。然而,当我运行'npm运行电子:prod'这失败。 来自KeyClope服务器的日志显示: 请注意,重定向_uri是'file:///...“我相信这就是原因。 我也试图改变下面
注意:我正在使用Spring Boot 2.1.10和Keycloak 6.0.1,我希望我可以在Web应用程序(MVC)的启动时在基本身份验证和SSO之间进行选择。所以我首先将Spring Security Keycloak与keycloak-spring-boot-starter集成 然后我定义了一个“sso”Spring配置文件和一个默认配置: application.properties是
关于我在Spring安全方面的问题,我想请求你的帮助。我有一个要求,其中我必须验证登录凭据的基础上的选项所选择的用户。选项1将通过第三方服务验证登录用户。选项2将是使用数据库身份验证级别的常规验证。我如何实现这一点?