IdentityServer4:如何为 Google 用户设置角色?
IdentityServer4: How to set a role for Google user?
我有 3 个应用程序:
- 一个 IdentityServer4 API,它提供 Google 身份验证,还提供访问令牌来授权资源 API。
- 一个简单的资源API,它提供了一些来自数据库的数据。
- React 中的一个简单客户端,它有 4 个按钮:
- 登录,用于Google授权
- 注销
- 获取数据 - 使用资源访问令牌的简单请求 API 并从 Db
获取数据
- 获取用户数据 - returns 用户配置文件和令牌(用于调试目的)
我没有放任何示例代码,因为我的问题与代码无关,这是我缺少的知识,我寻求指导。
工作流程运行良好:用户按下登录按钮,它被重定向到 IdentityServer4 API 以进行 Google 身份验证。从那里它被重定向到客户端的回调页面,并从那里重定向到索引页面。我收到用户数据和令牌,我可以从资源 API 请求数据并且它正在工作。
我的问题是:如何为 Google 用户赋予角色?
我没有将用户保存在数据库中。我想要三种类型的用户:SuperAdmin、Admin、Viewer,这些角色中的每一个都有有限的端点可以访问。
为了限制他们的访问,我看到我可以使用 Claims-based authorization or Role-based authorization。
所以,我的问题是如何为想要登录我的应用程序的 Google 用户提供特定的 Claim/Role?什么是工作流程?我必须先将它保存在数据库中吗?或者存在 Google 的服务,我可以在其中添加电子邮件地址和 select 该地址的角色?
非常感谢!
在您的回调中收到来自 Google 的响应后,您可以处理用户并用它做任何您想做的事。以下是我从 identityserver4 link:
的文档页面获取的回调中可以执行的一些典型任务
处理回调并登录用户
在回调页面上,您的典型任务是:
- 检查外部提供者返回的身份。
- 决定您希望如何与该用户打交道。这可能是
根据这是新用户还是回头客的事实而有所不同
用户。
- 新用户可能需要额外的步骤 UI 才能被允许
英寸
- 可能会创建一个链接到
外部供应商。
- 存储您要保留的外部声明。
- 删除临时 cookie
- 登录用户
我要做的是创建一个链接到外部提供商的新内部用户帐户,并为该用户添加一个角色。
如果您不想将用户保存在数据库中,您可以在回调方法中为用户添加一个额外的声明,并在令牌中使用该声明。我认为这个 会有所帮助。
我有 3 个应用程序:
- 一个 IdentityServer4 API,它提供 Google 身份验证,还提供访问令牌来授权资源 API。
- 一个简单的资源API,它提供了一些来自数据库的数据。
- React 中的一个简单客户端,它有 4 个按钮:
- 登录,用于Google授权
- 注销
- 获取数据 - 使用资源访问令牌的简单请求 API 并从 Db 获取数据
- 获取用户数据 - returns 用户配置文件和令牌(用于调试目的)
我没有放任何示例代码,因为我的问题与代码无关,这是我缺少的知识,我寻求指导。
工作流程运行良好:用户按下登录按钮,它被重定向到 IdentityServer4 API 以进行 Google 身份验证。从那里它被重定向到客户端的回调页面,并从那里重定向到索引页面。我收到用户数据和令牌,我可以从资源 API 请求数据并且它正在工作。
我的问题是:如何为 Google 用户赋予角色? 我没有将用户保存在数据库中。我想要三种类型的用户:SuperAdmin、Admin、Viewer,这些角色中的每一个都有有限的端点可以访问。
为了限制他们的访问,我看到我可以使用 Claims-based authorization or Role-based authorization。
所以,我的问题是如何为想要登录我的应用程序的 Google 用户提供特定的 Claim/Role?什么是工作流程?我必须先将它保存在数据库中吗?或者存在 Google 的服务,我可以在其中添加电子邮件地址和 select 该地址的角色?
非常感谢!
在您的回调中收到来自 Google 的响应后,您可以处理用户并用它做任何您想做的事。以下是我从 identityserver4 link:
的文档页面获取的回调中可以执行的一些典型任务处理回调并登录用户
在回调页面上,您的典型任务是:
- 检查外部提供者返回的身份。
- 决定您希望如何与该用户打交道。这可能是 根据这是新用户还是回头客的事实而有所不同 用户。
- 新用户可能需要额外的步骤 UI 才能被允许 英寸
- 可能会创建一个链接到 外部供应商。
- 存储您要保留的外部声明。
- 删除临时 cookie
- 登录用户
我要做的是创建一个链接到外部提供商的新内部用户帐户,并为该用户添加一个角色。
如果您不想将用户保存在数据库中,您可以在回调方法中为用户添加一个额外的声明,并在令牌中使用该声明。我认为这个