在 OAuth 2.0 中,身份验证服务器可以使用不同域上的 IdP 来验证资源所有者吗?

In OAuth 2.0 can Authentication server use IdP that is on different domain to authenticate Resource Owner?

这种情况下的流程是什么?假设我正在使用 OAuth 的授权代码流。 授权服务器如何知道资源所有者是否已通过身份验证?

流程是这样的:

客户端应用程序将浏览器重定向到 URL 处的授权服务器 (AS),例如 https://login.mycompanycloud.com - 使用标准 OpenID Connect - 这可以通过插入库轻松完成

AS一般支持多种认证方式:

  • 客户端应用配置为使用一个或多个
  • AS 可以呈现 select离子屏幕
  • 或者客户端应用程序可以在运行时发送一个 acr_values query parameter 到 select

然后 AS 将浏览器重定向到 'authenticator',它可以是不同域中的身份提供者 (IDP),例如 https://login.mycompanyintranet.com

所有使用的域都需要可以从用户的浏览器进行联系,并且 IDP 需要能够将令牌发送到 AS。由于信任配置,AS 可以对令牌进行数字验证,并在授予的时间段内将用户视为已通过身份验证。

有关示例,请参阅我的 Federated Logins 博客 post。