我们目前正在实施密钥斗篷,但面临一个问题,即我们不确定解决方案的最佳方法。
我们有使用sso的不同Web应用,并且运行良好。我们遇到的问题是,当我们在一个Web应用程序中使用sso登录时,然后在另一个Web应用程序中执行相同的操作。
最初,这第二个网络应用程序不知道哪个用户来了(并且无需登录即可使用它)。单击“登录”时,它会自动登录用户(通过重定向到密钥库并自动将已登录的用户登录到另一个Web应用程序中)。这第二次记录对用户“透明”发生,因为重定向到密钥斗篷的速度非常快,并且不引人注意。这种行为不是很用户友好。
问题是:考虑到第二个Web应用程序无法预先知道哪个用户正在访问该网站(除非主动重定向到keycloak),是否可以强制总是用户登录特定的keycloak客户端?我的意思是,即使keycloak已经从其他keycloak客户端已经知道了用户/密码,也实际上要向访问者询问用户/密码。
谢谢!
答案 0 :(得分:1)
在keycloak的邮件列表中,他们为我提供了一个很好的解决方案,但对于版本4:
答案 1 :(得分:0)
使用注销端点作为应用程序中的默认登录按钮操作,并重定向uri参数用于登录页面,在该页面中您使用特定的客户端(当然,您需要正确的URI编码):
https://auth-server/auth/realms/{realm-name}/protocol/openid-connect/logout?redirect_uri=https://auth-server/auth/realms/{realm-name}/protocol/openid-connect/auth?client_id=client_id&redirect_uri=.....&other_params....
=>用户将被注销,然后将其重定向到登录页面