2

我们正在开发微服务体系结构中的应用程序,该应用程序使用Spring Cloud OAuth2在Google和Facebook等多个OAuth2提供程序上实现信号登录。我们还在开发我们自己的授权服务器,并将在下一个版本中集成。Spring Cloud OAuth2:具有多个授权服务器的资源服务器

现在,在我们的微服务,这是资源服务器,我想知道如何处理多个授权服务器(例如Facebook或谷歌)多个token-info-uriuser-info-uri

+1

就面临着一个相关问题的访问令牌。 security.oauth2.resource.jwt.keyValue仅允许来自一个授权服务器的密钥。 – sdoxsee

回答

3

这种情况通常是由一个中间人解决; 您的资源服务器信任的一个实体,可用于规范任何可能的差异,这些差异表明用户可能使用不同的提供商进行身份验证。这有时被称为联邦提供者。

Auth0就是这种实现的一个很好的例子。 披露:我是Auth0工程师。

Auth0位于您的应用程序和身份验证提供程序之间,用于验证您的用户。 通过这种抽象级别,Auth0可以让您的应用与每个提供商的实施的任何变化和特质隔离。

(重点是我的)

这并不是说你的资源服务器不能在技术上信任多个授权服务器,它只是移动该逻辑出了单个资源服务器到中央位置将使其更易于管理和解耦。

另外请记住,认证和授权是不同的东西,虽然我们习惯于把它们看在一起。 如果你要实现自己的授权服务器,你应该做的中心点,可以

  • 处理多种类型的认证供应商
  • 提供用户资料给下游资源归一化视图服务器
  • 提供可以由您的客户端应用程序可以用来做授权的请求到您的微服务