【问题标题】:OAuth2 authorization for project and custom project-specific user role项目和自定义项目特定用户角色的 OAuth2 授权
【发布时间】:2021-03-29 14:41:49
【问题描述】:
我是 OAuth2 的新手,并试图找出以下场景的最佳做法:
- 我正在实施“ToDo”网络服务(用于“任务”的 CRUD)
- 我使用 OAuth2 和 Google 作为身份验证提供程序来获取用户详细信息(电子邮件、姓名)
- 现在我需要为用户('admin'、'user')实现项目特定的角色
就 OAuth2 而言 - Google 不“拥有”我的服务,因此它无法帮助我存储/提供特定于“ToDo”的角色,对吗?
实现它的常用/最佳方法是什么,我是否需要创建自己的授权服务,我需要在其中存储诸如 userinfo -> 项目特定角色之类的关系?
【问题讨论】:
标签:
oauth-2.0
google-oauth
【解决方案1】:
嗯,这取决于你想要做什么。
如果您有用户,并且这些用户具有您已经分配给他们的特定角色,那么您只是将 Google 的 OAuth 服务用作身份服务。您需要实现自己的授权服务,但您需要跟踪(通常在您自己的数据库中)用户 ID 和该用户的角色之间的关系。
如果目标是创建一个服务,用户可以将他们拥有的特定权限委托给第三方服务,那么您肯定需要实现自己的 OAuth 服务器。这将允许用户限制第三方服务完成其工作所需的范围。
【解决方案2】:
您可以轻松设置自己的授权和资源服务器,而不是依赖谷歌服务。在您自己的身份验证服务器中,您可以更好地控制您指定的角色和用户。
您可以使用 Spring Boot 应用程序并使用 Spring-starter-security、spring-security-oauth2 等依赖项来设置和验证服务器。
【解决方案3】:
是的,您必须使用自己的授权服务器,然后该服务器可以颁发具有与其关联的领域特定角色的令牌。