隐式授权流程中的 ID 令牌与访问令牌

osk*_*arm 5 azure-active-directory msal.js

我想澄清一下如何在隐式授权流程中使用 ID 令牌和访问令牌。我有一个 Angular SPA,使用 MSAL.js 作为 Angular 包和一个 Web API。该 API 不会调用任何外部服务,例如 MSFT Graph。后端使用 JWT 的角色声明仅对我们的 API 功能建立 RBAC 授权。

该文档说: https ://learn.microsoft.com/en-us/azure/active-directory/develop/id-tokens

id_tokens 作为 OpenID Connect 流程的一部分发送到客户端应用程序。它们可以一起发送或代替访问令牌发送,并由客户端用来对用户进行身份验证。

ID 令牌应该用于验证用户是否是他们所声称的人,并获取有关他们的其他有用信息 - 它不应该用于代替访问令牌进行授权。

本文档显示了一个身份验证流程,其中使用 ID 令牌而不是访问令牌调用 Web API: https: //learn.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-implicit-拨款流

此示例代码也发送 ID 令牌(调用自己的 Web API 示例): https: //github.com/Azure-Samples/active-directory-javascript-singlepageapp-dotnet-webapi-v2

示例后端根据颁发 ID 令牌的应用程序的客户端 ID 来验证 ID 令牌受众。

鉴于我们的 API 是令牌的唯一使用者,我们应该使用 ID 令牌还是访问令牌?

Phi*_*ret 0

一般来说,当使用 Microsoft 身份平台保护 API 时,客户端在发出 API 请求时应使用访问令牌,而不是 ID 令牌。