我正在尝试使用 AAD 进行单点登录,我已解码登录后获得的 JWT 令牌。但是,该令牌缺少我认为后端身份验证所需的角色。
以下是我尝试过的参考。
https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-apps
此外,如果您可以向我发送一份使用 Node JS 和 Angular 登录来保护 API 的参考资料,那将是一个巨大的帮助。
注意:当您创建应用程序角色时,它会创建应用程序类型角色,并且要在访问令牌中显示这些角色,您必须使用服务器到服务器授权(客户端凭据流)流程。
当您使用涉及用户交互的 SPA 身份验证时,请检查以下内容:
我创建了一个 Azure AD SPA 应用程序并公开了一个 API:
授予管理员对 API 权限刀片中的范围的同意:
我使用以下端点来授权用户:
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
使用以下参数通过 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
解码令牌后,会显示范围:
要了解如何在 Angular 和 Node.js 中执行相同操作,请参阅此 使用 Azure AD 进行身份验证 (SSO) 的 Angular SPA 和 Node.js API |通过 FluentJS
参考: