我们正在微服务架构中开发一个应用程序,该架构使用Spring Cloud OAuth2在Google和Facebook等多个OAuth2提供商上实现signle登录。我们还在开发自己的授权服务器,并将在下一版本中集成。
现在,在我们的微服务(资源服务器)上,我想知道如何处理多个token-info-uri
或user-info-uri
到多个授权服务器(例如Facebook或Google)。
答案 0 :(得分:5)
这种情况通常由一个中间人解决; 您的资源服务器信任的单个实体,可用于规范化用户可能使用不同提供商进行身份验证的任何可能的差异。这有时被称为联合提供者。
Auth0就是这种实现的一个很好的例子。 披露:我是Auth0工程师。
Auth0位于您的应用和身份提供商之间,用于对用户进行身份验证。 通过这种抽象级别,Auth0可以使您的应用与每个提供商的实施的任何变更和特性保持隔离。
(重点是我的)
并不是说您的资源服务器在技术上不能信任多个授权服务器,只是将该逻辑从各个资源服务器移到一个中心位置会使其更多可管理和解耦。
另外请注意,虽然我们习惯于将身份验证和授权放在一起,但身份验证和授权是不同的。 如果您要实施自己的授权服务器,则应该将其作为的中心点: