如何区分用户是从Provider登录还是从Keycloak中的用户登录

问题描述 投票:0回答:2

我正在将 Keycloak 集成到 React 应用程序中。 我已成功在 Keycloak 中添加 Google 提供商。 现在,用户可以使用 Keycloak 用户的凭据登录,也可以使用 Google 登录。 登录后如何区分用户是使用React还是使用Provider? 以及如何获取该用户的 ID,以便某些活动将该 ID 存储在数据库中?

authentication keycloak provider
2个回答
7
投票

GET 用户详细信息 REST API 检测哪个身份提供商的用户。

获取用户的代表

federatedIdentities
字段显示它

这里

演示此用户通过谷歌登录

您需要 Posman 中的主令牌。

#1 在 Posman 获取主令牌。

详细说明这里

#2 获取用户列表

GET http://localhost:8080/auth/admin/realms/my-realm/users

#3 获取谷歌用户

GET http://localhost:8080/auth/admin/realms/my-realm/users/{google-user-uuid}

#4 获得普通用户

GET http://localhost:8080/auth/admin/realms/my-realm/users/{user-uuid}

该用户通过常规 Keycloak 登录


0
投票

我认为更好的方法是在访问令牌、ID 令牌、用户信息或访问令牌响应中注入声明。

您可以通过创建自定义客户端范围并向其添加映射器来实现这一点。映射器类型必须是“用户会话注释”类型,并且您必须使用“identity_provider”作为“用户会话注释”字段的值,然后选择要添加的位置。

来源:https://www.keycloak.org/docs/latest/server_admin/#available-user-session-data

从前端/SPA 应用程序请求管理 api 时要小心,一旦请求应由客户端进行身份验证,并且不建议这些类型的客户端这样做。

© www.soinside.com 2019 - 2024. All rights reserved.