0

我有 3 个应用程序:

  • IdentityServer4 API,它提供 Google 身份验证并提供访问令牌以授权资源 API。
  • 一个简单的资源 API,它提供来自 DB 的一些数据。
  • React 中的一个简单客户端,它有 4 个按钮:
    • 登录,用于 Google 身份验证
    • 登出
    • 获取数据 - 使用访问令牌对资源 API 的简单请求,并从 Db 获取数据
    • 获取用户数据 - 返回用户配置文件和令牌(用于调试目的)

我没有放任何示例代码,因为我的问题与代码无关,我知道我错过了,我寻求指导。

工作流程运行良好:用户按下登录按钮,它被重定向到 IdentityServer4 API for Google Auth。从那里它被重定向到客户端的回调页面,然后从那里重定向到索引页面。我收到用户数据和令牌,我可以从资源 API 请求数据并且它正在工作。

我的问题是:如何为 Google 用户赋予角色?我没有用户保存在数据库中。我想要三种类型的用户:超级管理员、管理员、查看者,并且这些角色中的每一个都有可以访问的有限端点。

为了限制他们的访问,我看到我可以使用基于声明的授权基于角色的授权

所以,我的问题是如何给想要登录我的应用程序的 Google 用户一个特定的声明/角色?工作流程是什么?我必须先将它保存在数据库中吗?或者有来自谷歌的服务,我可以添加一个电子邮件地址并为该地址选择一个角色?

非常感谢你 !

4

1 回答 1

1

在您的回调中收到 Google 的响应后,您可以处理用户并做任何您想做的事情。以下是我从 identityserver4链接的文档页面获取的回调中可以执行的一些典型任务:

处理回调并登录用户

在回调页面上,您的典型任务是:

  • 检查外部提供者返回的身份。
  • 决定如何与该用户打交道。这可能会有所不同,具体取决于这是新用户还是老用户。
  • 新用户在被允许进入之前可能需要额外的步骤和 UI。
  • 可能会创建一个链接到外部提供商的新内部用户帐户。
  • 存储您要保留的外部声明。
  • 删除临时cookie
  • 登录用户

我要做的是创建一个新的内部用户帐户,该帐户链接到外部提供商并向该用户添加角色。

如果您不想将用户保存在数据库中,您可以在回调方法中向用户添加额外的声明,并在令牌中使用该声明。我认为这个链接将对此有所帮助。

于 2021-12-21T10:39:11.647 回答