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