我有一个关于Keycloak和获取访问令牌的问题。
我在keycloak中设置了两个不同的应用程序作为2个不同的客户端。 两者都使用相同的LDAP(Active Directory)服务器进行身份验证,这在keycloak中设置为用户联合。
用户使用keycloak登录页面登录applicationA。 现在,用户想要点击其网页上的按钮打开applicationB。
单击按钮,应用程序A应该可以检索 来自keycloak的访问令牌并使用它来启动applicationB。
但不应该要求它再次登录keycloak。
收到令牌后,它应该能够使用令牌启动applicationB。 ApplicationB应检查传递的令牌的有效性 并从keycloak服务器检索用户详细信息。
实现此目的的方法是什么
答案 0 :(得分:0)
在这种情况下,为什么两个应用程序需要2个客户端?您可以传递登录应用程序A时生成的相同令牌并对其进行验证。
答案 1 :(得分:0)
我没有您的精确设置,所以如果没有进一步的信息我就无法清除它,但您是否尝试过Authentication -> Flows -> Browser and disable cookies
。
答案 2 :(得分:0)
您必须确定哪种类型的应用程序是ApplicationA(AA)和ApplicationB(AB)。在OIDC中,所有应用程序可以分为两种类型:
Authorization: Bearer {jwt_access_token}
因此,在您的情况下,我想AA应该是类型1的应用程序,而AB应该是仅承载(类型2)的应用程序,因此密钥斗篷中应该有2个客户端设置。典型流程为:
code=..
之类的查询参数集)code
值,并通过对Keycloak的 backchannel 请求将其交换为令牌对还要签出管理控制台应用程序(通过浏览器开发者控制台进行跟踪请求)。那实际上是两个OIDC客户端:管理UI是第一种类型的应用程序,后端是第二种类型的应用程序(仅承载者)