Web services 服务器到服务器通信的Oauth2授权

Web services 服务器到服务器通信的Oauth2授权,web-services,oauth,oauth-2.0,microservices,Web Services,Oauth,Oauth 2.0,Microservices,我在一个微服务体系结构中工作,它有自己的oauth2提供者,以便允许服务交互 我需要开发一个允许访问用户资源的服务,以便在用户帐户上执行内部任务。由于需要访问用户资源的服务是内部服务,因此要求用户允许访问自己的资源不是可行的解决方案 我关心的是如何选择正确的授权来执行此任务,因为客户端\u凭据似乎是正确的,它似乎也只允许更新服务数据,而不允许访问用户资源。我认为另一个解决方案是在用户注册时自动提供授权代码,就像用户单击了“允许”按钮一样,然后使用该codegrant执行请求。这里的缺点是,每次创

我在一个微服务体系结构中工作,它有自己的oauth2提供者,以便允许服务交互

我需要开发一个允许访问用户资源的服务,以便在用户帐户上执行内部任务。由于需要访问用户资源的服务是内部服务,因此要求用户允许访问自己的资源不是可行的解决方案

我关心的是如何选择正确的授权来执行此任务,因为
客户端\u凭据似乎是正确的,它似乎也只允许更新服务数据,而不允许访问用户资源。我认为另一个解决方案是在用户注册时自动提供授权代码,就像用户单击了“允许”按钮一样,然后使用该
code
grant执行请求。这里的缺点是,每次创建具有该需求的服务时,我都必须创建新的授权代码,但这似乎是一个更清晰的解决方案(因为用户XXX的授权代码只允许访问用户XXX的资源)

我也知道实现是不同的,因为标准提供了很大的灵活性,但是
你认为哪一个是合适的解决方案?你会怎么处理?更清楚地说,“统计服务”允许访问所有用户的资源,还是“统计服务”被所有用户授予访问其资源的权限?

正如您所述,这是一个内部用例,您可以控制由资源服务器保护的资源,授权服务器和访问资源的客户端,因此您可以选择使用
client\u凭据
访问用户数据


它与(或实际上是)可用于操作用户数据的“服务帐户”相比。如果该服务在您的控制下,并且您信任它,即您相信它不会将其凭据泄露给其他方,也不会滥用其权限,那么就可以了。由于您还可以控制客户端,因此这不会是一个问题。

好的,因此我的理解是正确的。您知道一些常见的方法来识别内部的、受信任的客户吗?因为我们已经在为第三方使用客户端凭据。我知道这与OP没有严格的关系。当凭证被分发时,你(应该)知道你是将其交给内部客户还是外部客户;因此,您可以将它们放在后端存储的另一个存储桶中;您甚至可以使用
内部:
外部:
这样的客户端标识符将它们保存在同一个存储桶中,但仍然能够识别它们,谢谢您的回复!