我有Spring Boot 应用程序,我使用keycloak作为auth. provider。对于我的领域,我已经将FACEBOOK或GOOGLE设置为身份提供者。我想知道我如何才能找出用户使用的身份提供程序-不是通过keycloak管理控制台,而是在运行时。例如:用户A - FACEBOOK用户B - FACEBOOKUser C - Google
7jmck4yq1#
您可以将“User Session Note”Map器设置为客户端的Map器。将User Session Note字段设置为:identity_provider
的数据注意:您可以使用用户会话注解字段中的identity_provider_identity从身份提供商https://www.keycloak.org/docs/latest/server_admin/index.html#available-user-session-data获取其用户名
iyr7buue2#
Map访问令牌中给出的元数据,比如facebook/google用户id,并将其导入到keycloak用户。如果您随后将此元数据提供给客户端,他们就可以看到使用了哪个身份代理。https://keycloak.gitbooks.io/server-adminstration-guide/content/topics/identity-broker/mappers.html
zsohkypk3#
我知道这个问题很老了,但我找到了解决你问题的另一种方法(假设你试图通过Java / Spring获取信息)。假设你有UserModel,RealmModel和KeyCloakSession类型的具体变量user,realm和session,然后,您可以获得与您的用户关联的所有联合身份的集合:
UserModel
RealmModel
KeyCloakSession
user
realm
session
Set<FederatedIdentityModel> identitySet = session.users().getFederatedIdentities(user, realm);
字符串FederatedIdentityModel的每个示例都有一个#getIdentityProvider方法,允许您获取有问题的IdP的名称。
FederatedIdentityModel
#getIdentityProvider
3条答案
按热度按时间7jmck4yq1#
您可以将“User Session Note”Map器设置为客户端的Map器。将User Session Note字段设置为:identity_provider
的数据
注意:您可以使用用户会话注解字段中的identity_provider_identity从身份提供商https://www.keycloak.org/docs/latest/server_admin/index.html#available-user-session-data获取其用户名
iyr7buue2#
Map访问令牌中给出的元数据,比如facebook/google用户id,并将其导入到keycloak用户。如果您随后将此元数据提供给客户端,他们就可以看到使用了哪个身份代理。
https://keycloak.gitbooks.io/server-adminstration-guide/content/topics/identity-broker/mappers.html
zsohkypk3#
我知道这个问题很老了,但我找到了解决你问题的另一种方法(假设你试图通过Java / Spring获取信息)。假设你有
UserModel
,RealmModel
和KeyCloakSession
类型的具体变量user
,realm
和session
,然后,您可以获得与您的用户关联的所有联合身份的集合:字符串
FederatedIdentityModel
的每个示例都有一个#getIdentityProvider
方法,允许您获取有问题的IdP的名称。