Oauth2授予​​服务器到服务器通信

时间:2015-01-08 10:48:57

标签: web-services oauth oauth-2.0 microservices

我正在使用微服务架构,它有自己的oauth2提供程序,以便进行服务交互。

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

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

我也理解实现是不同的,因为标准提供了很大的灵活性,但是 在您看来,哪一个是合适的解决方案?你会怎么处理?是否更清楚地说,“统计服务”被允许访问所有用户资源,或者所有用户都授予“统计服务”来访问他们的资源?

1 个答案:

答案 0 :(得分:1)

正如您所述,这是一个内部用例,您可以在其中控制受资源服务器,授权服务器和访问资源的客户端保护的资源,以便您可以选择使用client_credentials来访问用户数据。

它与(或实际上)可用于操纵用户数据的“服务帐户”进行比较。如果该服务在您的控制之下且您信任它,即您相信它不会将其凭据泄露给其他方并且不滥用其权力则可以。由于您也控制客户端,因此不会有问题。