我正在通过Azure AD与OAuth2开发通信流。因此,我正在测试两个流程:
- Credentials Flow
- Authorization Code Flow
一切都很好,除了一件事:访问令牌中的作用域/权限(scp(。
当我使用授权代码流请求访问令牌时,我有很多声明,其中一项对我的业务非常重要:scp。此声明已在Azure门户中配置了所有作用域。
但是,当我使用客户端凭据流时,此"scp"声明不会返回,并且我无法检查生成的此访问令牌是否可以访问我的资源服务器中的端点。
知道怎么解决这个问题吗?
由于没有重定向(不涉及用户(,因此不会返回scp声明。解决问题的方法是使用应用程序角色。
当您使用client_credentials流获取OAuth2令牌时,请确保您正在传递资源参数,并使用向清单中添加角色的应用程序的appId填充它。
看看这两个链接。看起来您在客户端凭据流中是正确的scp声明不可见
获取Microsoft Graph API 的访问令牌
https://joonasw.net/view/defining-permissions-and-roles-in-aad