我正在将 Keycloak 集成到 React 应用程序中。 我已成功在 Keycloak 中添加 Google 提供商。 现在,用户可以使用 Keycloak 用户的凭据登录,也可以使用 Google 登录。 登录后如何区分用户是使用React还是使用Provider? 以及如何获取该用户的 ID,以便某些活动将该 ID 存储在数据库中?
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}
我认为更好的方法是在访问令牌、ID 令牌、用户信息或访问令牌响应中注入声明。
您可以通过创建自定义客户端范围并向其添加映射器来实现这一点。映射器类型必须是“用户会话注释”类型,并且您必须使用“identity_provider”作为“用户会话注释”字段的值,然后选择要添加的位置。
来源:https://www.keycloak.org/docs/latest/server_admin/#available-user-session-data
从前端/SPA 应用程序请求管理 api 时要小心,一旦请求应由客户端进行身份验证,并且不建议这些类型的客户端这样做。