你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
自 2025 年 5 月 1 日起,Azure AD B2C 将不再可供新客户购买。 在我们的常见问题解答中了解详细信息。
在应用程序可与 Azure Active Directory B2C(Azure AD B2C)交互之前,必须在你管理的租户中注册它们。 本指南介绍如何使用 Azure 门户注册单页应用程序(“SPA”。
身份验证选项概述
许多新式 Web 应用程序都是作为客户端单页应用程序(“SPA”)构建的。 开发人员使用 JavaScript 或 SPA 框架(如 Angular、Vue 和 React)编写它们。 这些应用程序在 Web 浏览器上运行,与传统的服务器端 Web 应用程序相比,它们具有不同的身份验证特征。
Azure AD B2C 提供了 两 个选项,使单页应用程序能够登录用户并获取用于访问后端服务或 Web API 的令牌:
授权代码流(使用 PKCE)
OAuth 2.0 授权代码流(使用 PKCE) 允许应用程序交换 ID 令牌的授权代码,以表示调用受保护 API 所需的经过身份验证的用户和 访问 令牌。 此外,它还返回 刷新 令牌,这些令牌代表用户提供对资源的长期访问,而无需与这些用户交互。
这是 建议 的方法。 使用有限生命周期的刷新令牌帮助您的应用程序适应现代浏览器 Cookie 隐私限制,例如 Safari ITP。
若要利用此流,应用程序可以使用支持它的身份验证库,例如 MSAL.js。
隐式授予流
某些库(如 MSAL.js 1.x)仅支持隐式授予流或应用程序实现以使用隐式流。 在这些情况下,Azure AD B2C 支持 OAuth 2.0 隐式流。 隐式授权流允许应用程序从授权终结点获取 ID 和 访问 令牌。 与授权代码流不同,隐式授权流不会返回 刷新令牌。
此身份验证流不包括使用跨平台 JavaScript 框架的应用程序方案,例如 Electron 和 React-Native。 这些方案需要更多功能才能与本机平台进行交互。
先决条件
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
如果没有 Azure AD B2C 租户,请立即创建一个。 你可以使用现有的 Azure AD B2C 租户。
注册 SPA 应用程序
登录到 Azure 门户。
如果有权访问多个租户,请选择顶部菜单中的“设置”图标,从“目录 + 订阅”菜单切换到你的 Azure AD B2C 租户。
在 Azure 门户中,搜索并选择 Azure AD B2C。
选择“应用注册”,然后选择“新建注册”。
输入应用程序的“名称”。 例如, spaapp1。
在 “支持的帐户类型”下,选择 任何标识提供者或组织目录中的帐户(用于使用用户流对用户进行身份验证)
在 “重定向 URI”下,选择 “单页应用程序”(SPA),然后在 URL 文本框中输入
https://jwt.ms
。重定向 URI 是授权服务器(在本例中为 Azure AD B2C)完成与用户的交互后发送用户的终结点。 此外,重定向 URI 终结点在成功授权后接收访问令牌或授权代码。 在生产应用程序中,它通常是运行应用的公共可访问终结点,如
https://contoso.com/auth-response
。 对于本指南等测试目的,你可以将其设置为https://jwt.ms
一个Microsoft拥有的 Web 应用程序,它显示令牌的解码内容(令牌的内容永远不会离开浏览器)。 在应用开发过程中,可以添加应用程序在本地侦听的终结点,如http://localhost:5000
。 可以随时在注册的应用程序中添加和修改重定向 URI。重定向 URI 存在以下限制:
- 回复 URL 必须以方案
https
开头,除非使用localhost
。 - 回复 URL 区分大小写。 其大小写必须与正在运行的应用程序的 URL 路径的大小写匹配。 例如,如果应用程序包含在其路径
.../abc/response-oidc
中,请不要在回复 URL 中指定.../ABC/response-oidc
。 由于 Web 浏览器将路径视为区分大小写,因此在重定向到大小写不匹配的.../abc/response-oidc
URL 时,可能会排除与.../ABC/response-oidc
关联的 cookie。
- 回复 URL 必须以方案
在“权限”下,选择“向 OpenID 和 offline_access 权限授予管理员同意”复选框。
选择“注册”。
启用隐式授权流
可以启用隐式授权流有两个原因,当使用 MSAL.js 版本 1.3 或更早版本时,或者当使用应用注册来测试用户流以进行测试时。
使用以下步骤为应用启用隐式授权流:
选择创建的应用注册。
在“管理”下,选择“身份验证”。
在“隐式授权和混合流”下,同时选中“访问令牌(用于隐式流)”和“ID 令牌(用于隐式流和混合流)”复选框。
选择“保存”。
注释
如果你的应用使用 MSAL.js 2.0 或更高版本,请不要启用隐式授权流,因为 MSAL.js 2.0 + 支持 OAuth 2.0 授权代码流(使用 PKCE)。 如果启用隐式授权来测试用户流,请确保在将应用部署到生产环境之前禁用隐式授权流设置。
从隐式授权流迁移
如果你有使用隐式流的现有应用程序,建议使用支持它的框架(如 MSAL.js 2.0+)将授权代码流与 PKCE 配合使用。
当应用注册表示的所有生产 SPA 都开始使用授权代码流时,请按如下所示禁用隐式授权流设置:
- 在左侧菜单中的“管理”下,选择“身份验证” 。
- 在“隐式授权”下,取消选中“访问令牌”和“ID 令牌”复选框。
- 选择“保存”。
如果保留启用隐式流(已选中),则使用隐式流的应用程序可以继续正常运行。