Keycloak:获取身份提供者信息

Keycloak: get identity provider info

我有 spring 引导应用程序,我使用 keycloak 作为身份验证。提供商。

对于我的领域,我已将 FACEBOOK 或 GOOGLE 设置为身份提供者

我想知道如何找出用户使用的身份提供者 - 不是通过 keycloak 管理控制台,而是在运行时。


例如:

用户 A - FACEBOOK

用户 B - FACEBOOK

用户 C - GOOGLE

映射访问令牌中给出的元数据,例如 facebook/google 用户 ID,并将这些导入到 keycloak 用户。如果您随后将此元数据提供给客户端,他们可以看到使用了哪个身份代理。

https://keycloak.gitbooks.io/server-adminstration-guide/content/topics/identity-broker/mappers.html

您可以将“用户会话注释”映射器设置为您客户的映射器。 将用户会话注释字段设置为:identity_provider

注意:您可以在用户会话注释字段中使用 identity_provider_identity 以从身份提供者获取其用户名 https://www.keycloak.org/docs/latest/server_admin/index.html#available-user-session-data

我知道这个问题很老,但我找到了解决您问题的替代方法(假设您试图通过 Java / Spring 获取信息)。假设您有具体变量 userrealmsession,类型分别为 UserModelRealmModelKeyCloakSession。然后您可以获得与您的用户关联的所有联合身份的集合:

Set<FederatedIdentityModel> identitySet = session.users().getFederatedIdentities(user, realm);

FederatedIdentityModel 的每个实例都有一个 #getIdentityProvider 方法,允许您获取相关 IdP 的名称。