运行 合并 Azure AD 应用程序权限时永远 'serviceUnavailable' SharePoint 图形查询
Running into 'serviceUnavailable' SharePoint graph query forever when combining Azure AD App permissions
这种情况让我创造了一个真正可怕的变通办法,但有时,你别无选择,对吗?
问题基本上是遇到了 503: 'serviceUnavailable' 消息,当在您的 Azure AD 应用程序中设置了几个(特定的?)Azure AD 应用程序权限时,这不应该发生。
上下文和技术查询
上下文专门针对应用程序权限(仅限应用程序的身份验证)和 NOT 委派权限。令牌通过以下方式检索:
HTTP POST https://login.microsoftonline.com/e6fcb01a-f706-4b1b-872b-1e7645d78491/oauth2/v2.0/token
headers:
Content-Type=application/x-www-form-urlencoded
-------------
client_id=<App GUID>
client_secret=<App SECRET>
scope=https://graph.microsoft.com/.default
grant_type=client_credentials
/sites/root 检索到的查询:
HTTP GET https://graph.microsoft.com/v1.0/sites/root
headers: Authorization=Bearer <AccessToken>
-------------
重现此情况:
- 创建 Azure AD 应用程序
- 添加应用程序权限 > Sites.ReadWrite.All
- 授予管理员同意
- 创建秘密
- 生成访问令牌(使用)
- 运行 使用令牌查询(有效)
强制中断(一次全部添加或逐一添加)
- 添加应用程序权限 > Group.Create
- 授予管理员同意
- 生成访问令牌
- 运行 使用令牌查询(失败?)
有效吗?
- 添加应用程序权限 > Group.ReadWrite.All
- 授予管理员同意
- 生成访问令牌
- 运行 使用令牌查询(失败?)
- 重复另一个权限。直到它坏掉。
它坏了吗?
- 永远失败
解决方法:
跨多个 AD 应用程序拆分应用程序权限。
根据我的测试(没有测试所有权限),问题确实存在。
有两个主要权限会影响此 API 端点的调用。
它们是 Group.Create
和 Group.Selected
。
不知道为什么会导致/sites/root
的调用失败。但强烈建议从用于访问 /sites/root
.
的 Azure AD 应用程序中删除这两个权限(也许还有一些其他权限)
同时,在 Azure 门户上为您的 Graph 请求打开支持票证是一个不错的选择。
不幸的是,这是 SharePoint 中以前已知的问题。正在修复中,但我没有可分享的预计推出时间。
我测试了这个,问题就在那里但解决方法是如果你有Group.ReadWrite.All
.[=17,你不需要Group.Create
许可=]
所以总而言之,单个 AD 应用程序可以拥有 Group.ReadWrite.All
和 Sites.ReadWrite.All
权限并且它可以工作,但是如果单个 AD 应用程序具有 Group.Create
的所有三个权限,它将失败, Group.ReadWrite.All
和 Sites.ReadWrite.All
这种情况让我创造了一个真正可怕的变通办法,但有时,你别无选择,对吗?
问题基本上是遇到了 503: 'serviceUnavailable' 消息,当在您的 Azure AD 应用程序中设置了几个(特定的?)Azure AD 应用程序权限时,这不应该发生。
上下文和技术查询
上下文专门针对应用程序权限(仅限应用程序的身份验证)和 NOT 委派权限。令牌通过以下方式检索:
HTTP POST https://login.microsoftonline.com/e6fcb01a-f706-4b1b-872b-1e7645d78491/oauth2/v2.0/token
headers:
Content-Type=application/x-www-form-urlencoded
-------------
client_id=<App GUID>
client_secret=<App SECRET>
scope=https://graph.microsoft.com/.default
grant_type=client_credentials
/sites/root 检索到的查询:
HTTP GET https://graph.microsoft.com/v1.0/sites/root
headers: Authorization=Bearer <AccessToken>
-------------
重现此情况:
- 创建 Azure AD 应用程序
- 添加应用程序权限 > Sites.ReadWrite.All
- 授予管理员同意
- 创建秘密
- 生成访问令牌(使用)
- 运行 使用令牌查询(有效)
强制中断(一次全部添加或逐一添加)
- 添加应用程序权限 > Group.Create
- 授予管理员同意
- 生成访问令牌
- 运行 使用令牌查询(失败?)
有效吗?
- 添加应用程序权限 > Group.ReadWrite.All
- 授予管理员同意
- 生成访问令牌
- 运行 使用令牌查询(失败?)
- 重复另一个权限。直到它坏掉。
它坏了吗?
- 永远失败
解决方法:
跨多个 AD 应用程序拆分应用程序权限。
根据我的测试(没有测试所有权限),问题确实存在。
有两个主要权限会影响此 API 端点的调用。
它们是 Group.Create
和 Group.Selected
。
不知道为什么会导致/sites/root
的调用失败。但强烈建议从用于访问 /sites/root
.
同时,在 Azure 门户上为您的 Graph 请求打开支持票证是一个不错的选择。
不幸的是,这是 SharePoint 中以前已知的问题。正在修复中,但我没有可分享的预计推出时间。
我测试了这个,问题就在那里但解决方法是如果你有Group.ReadWrite.All
.[=17,你不需要Group.Create
许可=]
所以总而言之,单个 AD 应用程序可以拥有 Group.ReadWrite.All
和 Sites.ReadWrite.All
权限并且它可以工作,但是如果单个 AD 应用程序具有 Group.Create
的所有三个权限,它将失败, Group.ReadWrite.All
和 Sites.ReadWrite.All