web-services - 用于服务器到服务器通信的 Oauth2 授权

标签 web-services oauth oauth-2.0 microservices

我正在微服务架构中工作,该架构有自己的 oauth2 提供程序以允许服务交互。

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

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

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

最佳答案

正如您所说,这是一个内部用例,您可以控制受资源服务器、授权服务器和访问资源的客户端保护的资源,因此您可以选择使用 client_credentials 来访问用户数据.

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

关于web-services - 用于服务器到服务器通信的 Oauth2 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27838280/

相关文章:

java - 使用 axis wsdl2java 在 java 中使用 HTTPS soab 服务

android - 如何通过 JSON 获取实时更新到 ListView

OAuth:为什么隐式授权类型称为隐式?

apache-flex - 从 Flex 3 安全访问 .NET Web 服务

php - 按国家/地区获取 Twitter 主题标签

c# - Facebook OAuth 重定向问题

php - 动态 Laravel 社会名流配置

go - oauth token 请求错误 "missing required parameter ' client_id'",

oauth-2.0 - Google oauth2 不返回 id_token

jquery - 使用 Jquery ajax 填充 select 的最*有效*方法