Keycloak:获取身份提供商信息

时间:2016-11-04 12:28:39

标签: spring-boot keycloak

我有春季启动应用程序,我使用 keycloak 作为身份验证。供应商。

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

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

例如:

用户A - FACEBOOK

用户B - FACEBOOK

用户C - GOOGLE

3 个答案:

答案 0 :(得分:1)

映射访问令牌中提供的元数据,例如facebook / google用户ID,并将这些元素导入keycloak用户。然后,如果您将此元数据提供给客户端,则可以查看所使用的身份代理。

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

答案 1 :(得分:1)

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

Session Note Mapper

注意:您可以在“用户会话注释”字段中使用identity_provider_identity来将其用户名从身份提供者https://www.keycloak.org/docs/3.0/server_admin/topics/identity-broker/session-data.html

中获取。

答案 2 :(得分:0)

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

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

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