我有一个很奇怪的问题(我认为是这样)...我正在使用 Ionic Angular 构建一个 Web 应用程序,这个应用程序需要向我们公司内的一个 SharePoint 站点提交信息。应用程序的身份验证使用 Microsoft Authentication Library for Angular (v1) 处理,应用程序的用户可以是 AzureAD 来宾用户,也可以是实际的公司用户。该应用程序成功地对这两种类型的用户进行了身份验证,并向他们颁发了一个 IDtoken 以及一个 accessToken。然后使用访问令牌针对 SharePoint 网站内的特定列表执行 GET、PATCH 和 POST Graph API 请求。
如果我以完整用户身份登录...没有问题,应用程序可以针对列表成功执行所有三种请求类型。但是,如果我以访客用户身份登录应用程序,则只能成功执行 GET 和 PATCH 请求,而不能成功执行 POST:
A Postman POST request using the access token retrieved via MSAL authentication
我已使用 https://jwt.ms 检查令牌中的范围并确认存在以下范围:
列表的权限是通过 Azure AD 域/安全组的成员身份授予的;完整用户和来宾用户是成员。
为了进一步补充这一点,我已以访客用户身份在线登录 SharePoint 网站,我可以成功地查看、添加和编辑列表中的列表项,但我似乎无法通过 Graph API 执行此操作.
以前有没有人见过这种行为,或者有任何指示?
提前致谢。
这是我关于权限的应用注册设置: API Permissions
答案 0 :(得分:0)
请检查您在 Azure 门户中的权限。使用登录用户获取访问令牌时,您需要确保已设置委托权限 Sites.ReadWrite.All
,并为您的租户授予管理员同意 .
并且应该为范围添加此权限以请求访问令牌。
POST https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
client_id=<client_id>
&scope=https%3A%2F%2Fgraph.microsoft.com%2FSites.ReadWrite.All
&code=<authorization_code, see https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code>
&redirect_uri=<redirect_uri>
&grant_type=authorization_code
&code_verifier=ThisIsntRandomButItNeedsToBe43CharactersLong
&client_secret=<client_secret>
添加权限后可能会延迟5-10分钟左右。