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 获取信息)。假设您有具体变量 user
、realm
和 session
,类型分别为 UserModel
、RealmModel
和 KeyCloakSession
。然后您可以获得与您的用户关联的所有联合身份的集合:
Set<FederatedIdentityModel> identitySet = session.users().getFederatedIdentities(user, realm);
FederatedIdentityModel
的每个实例都有一个 #getIdentityProvider
方法,允许您获取相关 IdP 的名称。
我有 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 获取信息)。假设您有具体变量 user
、realm
和 session
,类型分别为 UserModel
、RealmModel
和 KeyCloakSession
。然后您可以获得与您的用户关联的所有联合身份的集合:
Set<FederatedIdentityModel> identitySet = session.users().getFederatedIdentities(user, realm);
FederatedIdentityModel
的每个实例都有一个 #getIdentityProvider
方法,允许您获取相关 IdP 的名称。