我已使用Azure AD将keycloak配置为OIDC身份提供者。当我从Web应用程序登录时,我将重定向到Microsoft登录页面。登录后,我看到我被自动添加为keycloak中的用户。我看到keycloak使用特定身份提供者ID和身份提供者用户名进行匹配,我看到电子邮件填充为身份提供商用户名,但我看到随机UUID填充为身份提供商ID,我无法弄清楚这些值是如何填充的,并且在Azure AD中找不到此身份提供程序ID。
如果我已经有一个用户与相同的电子邮件ID在keycloak当我登录我不能创建这个用户,它不会自动同步这个用户。
我找不到任何方法,我可以看到从Azure AD发送的响应。让我知道一种方法,我们可以检查此响应从Azure AD。
任何帮助都将是非常值得感谢的。
2条答案
按热度按时间ibps3vxo1#
这不是一个随机的UUID,它是从IDP返回的ID令牌中的子值。要了解这里到底发生了什么,我们需要深入了解一下。
默认情况下,如果您没有为用户信息URL提供值,或者您已选中禁用用户信息,则它将查看收到的ID令牌,并将该令牌的子值作为本地keycloak用户的用户名。如果您已提供有效的用户信息端点,则它将首先检查用户信息端点中是否存在电子邮件值,如果存在,则它将检查“我将采用该值,如果它不存在,它将在用户信息端点中使用默认back sub值。
如果您希望将电子邮件以外的内容作为用户名,例如:- UPN,则必须在您的IDP中创建声明(在本例中为Azure),并将该声明添加到ID令牌。
现在,您需要在keycloak端创建一个声明Map器,以将声明中的值与keycloak中的属性/UserEntityModel匹配。
完成所有这些步骤后,您应该可以开始了,您可以参考以下链接来了解有关KeycloakMap器和Azure声明Map的更多信息。
https://www.keycloak.org/docs/latest/server_admin/#_mappers
https://learn.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims
gfttwv5a2#
除了@桐人回答;请确保在Keycloak IDPoidc配置中包含“openid配置文件”作用域。