微服务 OAuth 2.0 范围实现

Posted

技术标签:

【中文标题】微服务 OAuth 2.0 范围实现【英文标题】:Micro Services OAuth2.0 Scope implementation 【发布时间】:2020-12-30 16:52:19 【问题描述】:

对于 OAuth 2.0 实施,实施此类方案的最佳方式是什么。

我的后端是在微服务架构中设计的。

我有客户端“Mobile”,它将调用 ServiceA。

我可以将“ScopeA”范围添加到“Mobile”客户端,这很好。

那么我们假设明天ServiceA将调用ServiceB的授权端点来完成请求。

我的问题是

哪个选项是对的

    当 ServiceA 开始调用 ServiceB 时,我应该将 ServiceB 范围添加到移动客户端 我的意思是将“移动”客户端访问令牌传播到令牌中具有所有必需范围的所有微服务。 ServiceA 应该获取自己的访问令牌来调用 ServiceB,而不是使用移动客户端访问令牌来调用 ServiceB。

对于第二个选项,我们将丢失主题信息等信息。

【问题讨论】:

【参考方案1】:

这里有几个选项。一种选择是在 ServiceA 和 ServiceB 之间使用client credientials flow。在请求中,您可以将用户详细信息作为普通请求参数传递。

这种方法的优点是,即使用户没有登录,ServiceA 也可以独立地联系 ServiceB,而不管用户是否登录。例如,ServiceA 可能需要对 ServiceB 做一些后台请求。

另一个更高级的选项是委派身份验证,您可以在 this 文章中了解它

【讨论】:

委托身份验证是我正在寻找的。谢谢

以上是关于微服务 OAuth 2.0 范围实现的主要内容,如果未能解决你的问题,请参考以下文章

OAuth 2.0实现分布式认证授权-注册中心Eureaka搭建

构建微服务-使用OAuth 2.0保护API接口

oauth 2.0、JWT、Spring 安全、微服务

用于微服务架构的OAuth 2.0流程

OAuth 2.0 身份验证显示 500 Internal Server Error, Spring Boot 微服务

OAuth 2.0实现分布式认证授权-资源微服务实现用户鉴权拦截