跳转至主内容 此浏览器不再受支持。 Show 请升级到 Microsoft Edge 以使用最新的功能、安全更新和技术支持。 你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。 在 Azure Active Directory B2C 中使用 OpenID Connect 进行 Web 登录
本文内容OpenID Connect 是构建在 OAuth 2.0 基础之上的身份验证协议,可用于将用户安全登录到 Web 应用程序。 通过使用 OpenID Connect 的 Azure Active Directory B2C (Azure AD B2C) 实现,可以将 Web 应用程序中的注册、登录和其他标识管理体验转移到 Azure Active Directory (Azure AD) 中。 本指南演示如何使用与语言无关的方式执行此操作。 介绍在不使用我们的任何开放源代码库的情况下,如何发送和接收 HTTP 消息。 OpenID Connect 扩展了 OAuth 2.0 授权协议,将其用作身份验证协议。 使用此身份验证协议可以执行单一登录。 它引入了 ID 令牌的概念,可让客户端验证用户的标识,并获取有关用户的基本配置文件信息。 因为 OpenID Connect 扩展了 OAuth 2.0,因此,它还能使应用程序安全地获取访问令牌。 可以使用 access_token 访问由授权服务器保护的资源。 如果要生成的 Web 应用程序托管在服务器中并通过浏览器访问,我们建议使用 OpenID Connect。 有关令牌的详细信息,请参阅 Azure Active Directory B2C 中的令牌概述 Azure AD B2C 扩展了标准 OpenID Connect 协议,使其功能远远超出了简单的身份验证和授权。 它引入了用户流参数,可让你使用 OpenID Connect 向应用程序添加注册、登录和配置文件管理等用户体验。 发送身份验证请求当 Web
应用程序需要对用户进行身份验证并运行用户流时,它可以将用户定向到 在此请求中,客户端指示需要在
此时,要求用户完成工作流。 用户可能需要输入其用户名和密码、用社交标识登录,或注册目录。 可能还可任何其他若干步骤,具体取决于如何定义用户流。 用户完成用户流后,会使用 使用
错误响应也可能会被发送到
验证 ID 令牌仅收到一个 ID 令牌并不表示可以对用户进行身份验证。 根据应用程序的要求验证 ID 令牌的签名和令牌中的声明。 Azure AD B2C 使用 JSON Web 令牌 (JWT) 和公钥加密对令牌进行签名并验证其是否有效。 Azure AD B2C 具有 OpenID Connect 元数据终结点,允许应用程序在运行时获取有关 Azure AD B2C 的信息。 此信息包括终结点、令牌内容和令牌签名密钥。 B2C 租户中的每个用户流都有一个 JSON 元数据文档。 例如,
此配置文档的一个属性为
若要确定对 ID 令牌进行签名所使用的用户流(以及从何处获取元数据),可以使用两种方法。 首先,用户流名称包含在 ID 令牌的 从 OpenID Connect 元数据终结点获取元数据文档后,可以使用 RSA-256 公钥来验证 ID 令牌的签名。 此终结点上可能列出多个密钥,每个密钥使用 若要从 Azure AD B2C 验证令牌,需要使用指数 (e) 和模数 (n) 生成公钥。 需要确定如何在相应的编程语言中执行此操作。 可在以下网页中找到有关使用 RSA 协议生成公钥的官方文档: https://tools.ietf.org/html/rfc3447#section-3.1 验证 ID 令牌的签名后,还有几项声明需要验证。 例如:
此外,还需要执行更多的一些验证。 OpenID Connect 核心规范中详细介绍了验证。根据情况,可能还希望验证其他声明。 一些常见的验证包括:
验证 ID 令牌后,便可以开始与用户的会话。 在应用程序中,可以使用 ID 令牌中的声明来获取用户的相关信息。 此信息的用途包括显示、记录和授权。 获取令牌如果仅需要 Web 应用程序运行用户流,则可以跳过下面几个部分。 这些部分只适用于需要对某个 Web API(它受 Azure AD B2C 本身的保护)发出经过身份验证的调用的 Web 应用程序。 通过将 还可以按照将应用的客户端 ID 用作所请求范围(这将导致具有该客户端 ID 的访问令牌作为“受众”)的约定,为应用自己的后端 Web API 请求访问令牌:
成功的令牌响应如下所示:
错误响应如下所示:
使用令牌现在你已成功获取访问令牌,可通过在
刷新令牌访问令牌和 ID 令牌的生存期较短。 过期后,必须将其刷新才能继续访问资源。 刷新访问令牌时,Azure AD B2C 将返回一个新令牌。 刷新后的访问令牌将具有更新的 可以通过向
成功的令牌响应如下所示:
错误响应如下所示:
发送注销请求如果想要从应用程序中注销用户,只是清除应用程序的 Cookie 或者结束与用户的会话是不够的。 需将用户重定向到 Azure AD B2C 进行注销。如果没有这么做,那么用户可能可以在应用程序中重新进行身份验证,且无需再次输入其凭据。 有关详细信息,请参阅 Azure AD B2C 会话行为。 若要将用户注销,请将用户重定向到前面所述的 OpenID Connect 元数据文档中列出的
收到注销请求后,Azure AD B2C 会使 Azure AD B2C 基于 Cookie 的会话失效,并尝试从联合标识提供者处注销。 有关详细信息,请参阅单一注销。 保护注销重定向注销后,用户将重定向到 若要在注销请求中设置所需的 ID 令牌,请参阅在 Azure Active Directory B2C 中配置会话行为。 后续步骤
|