【问题标题】:OpenID, OAuth 2 flow for autorizating many APIs用于自动化许多 API 的 OpenID、OAuth 2 流程
【发布时间】:2022-01-18 14:03:01
【问题描述】:

我有两个由 Api Gateway 为 SPA 公开的应用程序/API。每个 API 都需要自己的身份验证令牌进行身份验证。为这两个 API 获取身份验证令牌的最佳方式是什么(AG 可能会公开更多需要单独身份验证的 API)?

身份验证和授权由 Azure AD 提供。 AG 是使用 Istio 入口控制器实现的。

【问题讨论】:

  • 您能具体说明为什么后端模块需要自己的令牌并且不能共享单个令牌吗?
  • 它们由不同的供应商提供,并且每个供应商都有自己的授权策略。很快,我们将集成另一个外部服务。

标签: authentication oauth-2.0 authorization openid api-gateway


【解决方案1】:

如果您的所有后端应用程序都使用相同的 OAuth2 (Azure AD) 系统,您可以使用单点登录 (SSO)。用户将只进行一次身份验证 - 对于第一个令牌,所有后续调用都将使用会话 cookie 进行身份验证。除了第一次身份验证,当用户需要同意 OAuth2 服务器时。

因此您的 SPA 会为每个后端保留一个令牌,并且该过程不会让用户感到烦恼。

但可能有一个问题 - 如果会话是为与请求不同的 OAuth2 范围创建的,OAuth2 服务器可能会发现会话不足以进行身份​​验证。不知道Azure AD有没有这样的政策。

但是,如果您的后端应用程序不需要任何特殊的令牌范围,只需要“配置文件”来获取用户信息,那么您可以只为所有这些应用程序使用一个令牌。但我不知道你说他们有自己的授权策略来阻止他们只使用一个令牌是什么意思。

也许有一些更复杂的解决方案,但我会尝试这个基本的解决方案,看看它是否需要改进。

【讨论】:

  • 每个 API(资源服务器)验证“aud”声明。每个 API 都需要一组专用的范围、角色……即使我可以使用一个令牌,我也不希望传递 API 调用/用例不需要的信息。据我了解,当您有单个应用程序/API 时,您提到的问题也是如此。您不应该要求所有可用范围,只要求与特定 API 调用相关的范围,因此即使对于“一个 API 场景”,一个令牌也无法满足每个 API 调用。
猜你喜欢
  • 2019-04-30
  • 2017-05-12
  • 1970-01-01
  • 2020-01-24
  • 2023-03-26
  • 2015-11-17
  • 1970-01-01
  • 2013-10-18
  • 2013-10-02
相关资源
最近更新 更多