对于用户通过浏览器访问的 Web 应用(.NET、PHP、Java、Ruby、Python、Node 等),可以使用 OpenID Connect 来执行用户登录。 在 OpenID Connect 中,Web 应用接收 ID 令牌。 ID 令牌是一个安全令牌,用于验证用户的标识并以声明形式提供有关用户的信息:
// Partial raw ID token
abC1dEf2Ghi3jkL4mNo5Pqr6stU7vWx8Yza9...
// Partial content of a decoded ID token
{
"name": "Casey Jensen",
"email": "casey.jensen@onmicrosoft.com",
"oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb"
...
}
要更详细地了解 Microsoft 标识平台中使用的不同类型的令牌,请查看访问令牌参考和 id_token 参考。
在 Web 服务器应用中,登录身份验证流采用以下高级步骤:
使用从 Microsoft 标识平台接收的公共签名密钥验证 ID 令牌便可确保用户的标识正确。 设置会话 Cookie,在后续页面请求中将其用于识别用户。
可使用 Microsoft 标识平台来保护 Web 服务,例如应用的 RESTful Web API。 Web API 可以在多种平台和语言中实现。 它们还可以使用 Azure Functions 中的 HTTP 触发器来实现。 Web API 使用 OAuth 2.0 访问令牌(而不是 ID 令牌和会话 Cookie)来保护数据并对传入的请求进行身份验证。
Web API 使用此访问令牌来验证 API 调用方的标识,并从访问令牌中编码的声明里提取调用方的相关信息。 有关 Microsoft 标识平台中使用的不同类型令牌的进一步详细信息,请参阅访问令牌参考和 ID 令牌参考。
Web API 可让用户通过公开权限(也称为范围)选择加入或退出特定的功能或数据。 为了使调用应用能够获取某个范围的权限,用户必须在执行流的过程中同意该范围。 Microsoft 标识平台向用户请求权限,然后将这些权限记录到 Web API 收到的所有访问令牌中。 Web API 验证每次调用时接收的访问令牌,并执行授权检查。
Web API 可以从所有类型的应用接收访问令牌,其中包括 Web 服务器应用、桌面和移动应用、单页应用、服务器端守护程序,甚至其他 Web API。 Web API 的高级流如下所示:
要了解如何使用 OAuth2 访问令牌来保护 Web API,请查看受保护的 Web API 教程中的 Web API 代码示例。
在许多情况下,Web API 还需要对受 Microsoft 标识平台保护的其他下游 Web API 发出出站请求。 为执行此操作,Web API 可以利用“代理 (OBO)”流,其允许 Web API 将传入的访问令牌交换为要在出站请求中使用的另一个访问令牌。 有关更多信息,请参阅 Microsoft 标识平台和 OAuth 2.0 代理流。
移动和本机应用
安装在设备中的应用(如移动和桌面应用)通常需要访问用于存储数据和代表用户执行各种功能的后端服务或 Web API。 这些应用可以使用 OAuth 2.0 授权代码流将登录和授权添加到后端服务。
在此流中,应用在用户登录时从 Microsoft 标识平台接收授权代码。 授权代码表示应用有权代表登录的用户调用后端服务。 应用可以通过在后台交换授权代码获得 OAuth 2.0 访问令牌和刷新令牌。 应用可以使用访问令牌在 HTTP 请求中向 Web API 进行身份验证,并可以在旧的访问令牌过期时,用刷新令牌获取新的访问令牌。
Explore how applications can and should be added to your identity and access solution with application registration in Microsoft Entra ID. Aligned to SC-300 Exam.