【发布时间】:2018-05-09 18:12:59
【问题描述】:
在微服务架构中,API 网关位于 API 前面。这样做的目的是例如更改一些请求/响应参数,用于单个入口点或检查身份验证等。现在我想使用 OAuth2 流来保护我的 API 以获取访问令牌。问题是要决定谁是实际的 OAuth 客户端,我将通过一个 SPA 示例进行演示:
a) 是否是 SPA 使用隐式授权启动了 oauthorize 请求(到 api 网关)。然后,Api 网关将简单地将请求路由到 OAuth 授权服务器,充当单个入口点,使用来自隐式流的 /authorize 内容
b) 是不是 API 网关本身,意思是 SPA 将最终用户的用户名和密码发送到 api 网关(当然,这里 SPA 需要用最终用户的凭据来信任),然后作用于它的使用资源所有者密码授权作为 oauth 客户端拥有
c) 完全关闭 api 网关并创建与 api 网关“并行”的 oauth 授权服务器,这意味着您将失去单个入口点等。
下图展示了一个很抽象的架构,问题是关于“[2]”这个数字,这个请求是SPA发起并经过api网关,还是api网关在拦截请求并作为 oauth 客户端自行操作?
我的猜测是始终为特定客户端使用最合适的授权类型,无论 API 网关是否介于两者之间。这意味着,当涉及到 OAuth 时,API 网关将简单地通过客户端授权请求,无论它使用什么授权类型。因此,图中的 [2] 将来自客户端,而不是来自充当 OAuth 客户端的 API 网关。这个对吗?如前所述,当涉及到第一方应用程序时,这真的很棘手,因为您可能可以使用密码凭据授予,这有很大的缺点,例如SPA 无法令人耳目一新。
【问题讨论】:
标签: api security oauth-2.0 identity