【问题标题】:OAuth 2.0 {"error_description":"Invalid issuer or signature."} in Postman邮递员中的 OAuth 2.0 {"error_description":"Invalid issuer or signature."}
【发布时间】:2019-12-01 13:40:52
【问题描述】:

我正在尝试在 SharePoint Online 中执行 REST API 调用。为此,我想看看是否可以在 Azure AD 中注册应用程序。我相信我能够这样做并且我能够取回令牌。但是,在执行 GET 请求时,Postman 总是在响应正文中抛出 {"error_description":"Invalid issuer or signature."}

这是详细说明所有内容的屏幕截图:

不要介意 Postman 变量 {{TenantID}}。这不是问题,我也尝试使用写出的租户 ID - 没有任何区别。

所以一开始我不确定的是 Postman 中“获取新访问令牌”中的“范围”参数。我尝试了各种范围,例如 “Sites.FullControl.All”或“https://microsoft.sharepoint-df.com/.default”。但这并没有改变结果。不过,我为 SharePoint REST API 设置的范围是否正确?我知道对于 Microsoft Graph 'https://graph.microsoft.com/.default' 有效。

我还尝试了不同的应用权限,而不仅仅是 'Sites.FullControl.All'

您知道错误的原因可能是什么吗?

谢谢。

【问题讨论】:

    标签: azure rest oauth-2.0 postman sharepoint-online


    【解决方案1】:

    共享点权限Sites.FullControl.All 的类型是Application
    对于这种类型的权限,您必须使用 client_credential 流。

    客户端凭据授权用于应用程序请求 访问令牌访问自己的资源,不代表用户。

    尝试使用以下命令调用 auth url:

    grant_type=client_credentials
    &client_id=xxxxxxxxxx
    &client_secret=xxxxxxxxxx
    

    否则,如果您想代表用户访问 Sharepoint,请将权限类型更改为 委派

    【讨论】:

    • 谢谢。在 Postman 的 GET NEW ACCESS TOKEN 窗口中,我将授权类型更改为 client credentials。现在我收到错误消息{"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."} 我不知道出了什么问题。我什至在 Azure 中重新创建了应用注册。 https://{{TenantID}}.sharepoint.com/.default 的范围是否正确?它不会让我不指定范围。还有其他想法吗?谢谢。
    • 无法编辑最后一条评论。想补充一点,我将 API 权限类型从应用程序切换到委托,并将授权类型设置回 授权代码,但我仍然遇到同样的错误。
    • 根据这个stackexchange post 似乎该网址不正确。试试https://graph.microsoft.com/beta/sites/tenantname.sharepoint.com/lists
    猜你喜欢
    • 1970-01-01
    • 2022-01-10
    • 2019-04-21
    • 2021-01-29
    • 1970-01-01
    • 2020-12-11
    • 1970-01-01
    • 2020-06-30
    • 1970-01-01
    相关资源
    最近更新 更多