访问 SharePoint _api/Web/SiteUsers 时出现 403 Forbidden 错误

时间:2021-04-12 05:50:59

标签: azure sharepoint-online

我正在开发一个于 2021 年 1 月 20 日在 Azure AD 中注册的应用程序(通过“应用程序注册”页面),该应用程序使用 SharePoint REST API(_api/Web/SiteUsers 等)来检索用户信息(来自 SharePoint Online)。该应用程序曾经并且现在仍然可以使用我当时获得的租户 ID、应用程序 ID 和客户端机密正常工作。几天前(2021 年 4 月 9 日),我在 Azure 中注册了第二个应用程序,向同事展示如何设置。使用该新应用程序的应用程序 ID 和客户端密码(相同的租户 ID),当我提交对 _api/Web/SiteUsers 的调用时,应用程序失败并显示错误 403(使用两个应用程序 ID 调用 MS Graph API 都可以正常工作 - 这只是 SharePoint api失败的调用)。两个注册的应用程序都设置了相同的权限 - 当我并排比较它们时,我看不出任何区别。他们都拥有 MS Graph API 的应用程序权限:(Directory.Read.All, Files.Read.All, Sites.Read.All, Group.Read.All) 和 SharePoint:(Sites.Read.All, User.Read.All ),以及 MS GraphAPI:User.Read 的委派权限。所有应用程序权限均已获得管理员同意。两者都使用密钥。我已经直观地比较了 Azure 中的两个注册应用程序,但看不到任何其他属性(应用程序 ID、客户端 ID、品牌名称、密钥除外)的任何差异。有谁知道最近是否有什么变化会导致较早的应用程序 ID 起作用,而不是最近的应用 ID? Azure 和 SharePoint 之间是否存在某种同步延迟(3 天后问题仍然存在)?任何帮助/提示将不胜感激。提前致谢。

有效应用 ID 的解码令牌:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "nOo3ZDrODXEK1jKWhXslHR_KXEg",
  "kid": "nOo3ZDrODXEK1jKWhXslHR_KXEg"
}.{
  "aud": "00000003-0000-0ff1ce00-000000000000/iplatinum1.sharepoint.com@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "iss": "00000001-0000-0000-c000-000000000000@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "iat": 1618276524,
  "nbf": 1618276524,
  "exp": 1618363224,
  "identityprovider": "00000001-0000-0000-c000-000000000000@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "nameid": "7c331853-01ae-422b-bfe4-7df2d3fdbacf@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "oid": "fa4507cb-dfb1-4ed4-9d06-5fa9ffcb814e",
  "sub": "fa4507cb-dfb1-4ed4-9d06-5fa9ffcb814e",
  "trustedfordelegation": "false"
}.[Signature]

对于没有的:

{
  "typ": "JWT",
  "alg": "RS256",
  "x5t": "nOo3ZDrODXEK1jKWhXslHR_KXEg",
  "kid": "nOo3ZDrODXEK1jKWhXslHR_KXEg"
}.{
  "aud": "00000003-0000-0ff1-ce00-000000000000/iplatinum1.sharepoint.com@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "iss": "00000001-0000-0000-c000-000000000000@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "iat": 1618276454,
  "nbf": 1618276454,
  "exp": 1618363154,
  "identityprovider": "00000001-0000-0000-c000-000000000000@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "nameid": "7307b725-738e-4b8c-b898-89486cff95de@55379f90-a2a4-4f64-b18d-f3453e934a85",
  "oid": "08650d87-1a47-436f-a8e1-ee44caa361ee",
  "sub": "08650d87-1a47-436f-a8e1-ee44caa361ee",
  "trustedfordelegation": "false"
}.[Signature]

2 个答案:

答案 0 :(得分:1)

正如 Michael Han 所指出的,我必须在 SharePoint 中注册应用 ID。一旦完成,就授予了访问权限。

答案 1 :(得分:0)

据我所知,Azure AD App Client Secret 被 sharepoint online 屏蔽了。您需要选择证书进行身份验证:https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azuread

另一种解决方法是在 SharePoint 网站“https://yoursite/_layouts/15/appregnew.aspx”中注册应用程序。通过这种方式,您可以起诉客户机密。 https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs

相关问题