Azure Active Directory SSO 未在 authtoken 中生成角色

问题描述 投票:0回答:1

我正在尝试使用 AAD 进行单点登录,我已解码登录后获得的 JWT 令牌。但是,该令牌缺少我认为后端身份验证所需的角色。

以下是我尝试过的参考。

https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-apps

https://github.com/Azure-Samples/ms-identity-javascript-tutorial/tree/main/3-Authorization-II/1-call-api

此外,如果您可以向我发送一份使用 Node JS 和 Angular 登录来保护 API 的参考资料,那将是一个巨大的帮助。

azure azure-active-directory azure-web-app-service single-sign-on express-jwt
1个回答
0
投票

注意:当您创建应用程序角色时,它会创建应用程序类型角色,并且要在访问令牌中显示这些角色,您必须使用服务器到服务器授权(客户端凭据流)流程。

当您使用涉及用户交互的 SPA 身份验证时,请检查以下内容:

我创建了一个 Azure AD SPA 应用程序并公开了一个 API:

enter image description here

授予管理员对 API 权限刀片中的范围的同意:

enter image description here

我使用以下端点来授权用户

https://login.microsoftonline.com/TenantID/oauth2/v2.0/authorize?
client_id=ClientID
&response_type=code
&redirect_uri=https://jwt.ms
&response_mode=query
&scope=api://ClientID/.default
&state=12345
&code_challenge=CodeChallenge
&code_challenge_method=S256

enter image description here

enter image description here

使用以下参数通过 Postman 生成访问令牌

https://login.microsoftonline.com/TenanTID/oauth2/v2.0/token

client_id:ClientID
scope:api://ClientID/.default
grant_type:authorization_code
code:code
code_verifier:S256
redirect_uri:https://jwt.ms

enter image description here

解码令牌后,会显示范围:

enter image description here

要了解如何在 Angular 和 Node.js 中执行相同操作,请参阅此 使用 Azure AD 进行身份验证 (SSO) 的 Angular SPA 和 Node.js API |通过 FluentJS

参考:

Microsoft 身份平台身份验证和授权的代码示例 - Microsoft Entra

© www.soinside.com 2019 - 2024. All rights reserved.