Oauth 如何将授权委托给外部Auth 2.0服务

Oauth 如何将授权委托给外部Auth 2.0服务,oauth,oauth-2.0,identityserver4,asana,asana-api,Oauth,Oauth 2.0,Identityserver4,Asana,Asana Api,我正在开发一项服务,该服务提供不同服务的智能(希望)集成,支持OAuth 2.0。我们工具的重点是团队工作流程的改进,因此我们结合了Slack、GitHub、Asana(问题跟踪工具)、Cezanne(人力资源工具)等 我们的ui和后端可以与所有这些工具一起工作(用户被授权使用所有这些工具,所以我需要访问和刷新令牌)。我们需要能够根据用户在特定工具中的角色隐藏ui的不同部分。让我们以GitHub为例。用户可以是存储库所有者、参与者、公司所有者(对于业务帐户),等等,因此这些用户可能需要基于其权限

我正在开发一项服务,该服务提供不同服务的智能(希望)集成,支持
OAuth 2.0
。我们工具的重点是团队工作流程的改进,因此我们结合了
Slack
GitHub
Asana
(问题跟踪工具)、
Cezanne
(人力资源工具)等

我们的ui和后端可以与所有这些工具一起工作(用户被授权使用所有这些工具,所以我需要访问和刷新令牌)。我们需要能够根据用户在特定工具中的角色隐藏ui的不同部分。让我们以
GitHub
为例。用户可以是存储库所有者、参与者、公司所有者(对于业务帐户),等等,因此这些用户可能需要基于其权限的不同ui

最初,我对自己实施授权犹豫不决(另一个自定义授权系统是这个世界最不需要的),我想利用其他服务的授权机制,并在其周围创建一个轻量级包装器。起初这似乎是一个合理的想法,但我不知道如何实施,谷歌也没有给出有价值的建议,这意味着:99.99%我在尝试做一些愚蠢的事情,00.01%我在尝试做一些罕见/创新的事情

我希望利用OAuth2.0,但它似乎不支持我们需要的东西。最接近的是范围,但它看起来与我们的场景不太相关

目前我唯一的想法是创建我们自己的授权系统,并使用逆向工程集成其他服务。因此,我将使用API请求用户的GitHub帐户详细信息,并在我们的系统中适当地应用他的角色:存储库A的所有者、存储库B的参与者、公司C的所有者等等。我将必须对每个角色的权限进行反向工程(即存储库所有者不能更改公司名称)。我们必须为每个服务保留用户角色:因此,我们将获得:OwnerOfGitHubRepository(用于repositoryA)、ManagerOfAsanaTeam(用于团队B)等,而不是典型的Admin/user/Manager/etc

如果
OAuth 2.0
服务有一个端点可以返回当前用户可用的权限,那就太棒了

我不是安全工程师,所以我可能遗漏了一些明显的东西。因此,在投资上述实现之前,我想征求大家的意见。

在两种不同的上下文中使用“授权”一词

在一个上下文中,授权意味着“谁拥有什么权限”。此授权的解决方案是“身份管理”

在另一个上下文中,授权意味着“谁向谁授予什么权限”。此授权的解决方案是“OAuth”


在某些情况下,您可能必须同时处理这两个授权。有关详细信息,请参阅和。

您已将问题标记为IdentityServer 4

对于去年的identityserver3,您可能会感兴趣。 但恐怕大多数提供商还不支持oauth2配置文件

似乎是oauth2启用细粒度授权的一种方法,但可能不是最佳解决方案。

感谢您证明oauth2.0不是解决上述问题的解决方案。我很想听听您对问题中概述的解决方案的想法(为了更清楚,我对它做了一点修改)。