如何使用v1 Azure AD应用程序和客户端凭据访问Sharepoint Online API [英] How to Access Sharepoint Online API with v1 Azure AD Application and Client Credentials

查看:15
本文介绍了如何使用v1 Azure AD应用程序和客户端凭据访问Sharepoint Online API的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我无法使用邮递员对Sharepoint Online进行API调用。我已经成功地对Graph API进行了API调用,因此我熟悉我认为这应该如何工作。

我已按照以下安装说明操作:

第一篇文章说它不会接受使用客户端机密生成的访问令牌,但我已经生成了带有机密和证书的令牌,并且没有发现任何差异。

当调用任何内容时,例如:

https://<tenant>.sharepoint.com/_api/web

我收到错误:

{"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}

以下是我使用v1/Token端点生成的访问令牌的示例:

{
  "aud": "https://microsoft.sharepoint-df.com/",
  "iss": "https://sts.windows.net/462c0b***********c3708/",
  "iat": 1569243291,
  "nbf": 1569243291,
  "exp": 1569247191,
  "aio": "42FgYDiXt***********==",
  "app_displayname": "T***********n",
  "appid": "00c***********2b",
  "appidacr": "2",
  "idp": "https://sts.windows.net/46***********708/",
  "oid": "2f8a5***********684",
  "roles": [
    "User.ReadWrite.All",
    "TermStore.Read.All",
    "Sites.FullControl.All"
  ],
  "sid": "5ab8d57***********0bc",
  "sub": "2f8a5***********684",
  "tid": "462c0***********708",
  "uti": "aHt8d***********9AA",
  "ver": "1.0"
}

推荐答案

错误消息似乎暗示/TOKEN终结点调用中的资源参数设置不正确。我相信这一点在微软的文档中被省略了,因为文档划分得太多了。V1应用程序调用SharePoint Online的正确令牌端点调用如下所示:

Web服务

POST https://login.microsoftonline.com/<TARGET-TENANT-ID OR NAME>/oauth2/token

参数

client_id= <Application ID from Azure Portal>
grant_type=client_credentials
resource= https://<TARGET-TENANT-NAME>.sharepoint.com
client_assertion_type= urn:ietf:params:oauth:client-assertion-type:jwt-bearer
client_assertion= <See Link Above to create assertion>
上面的链接省略了如何计算证书JWT的x5t值。您可以使用以下命令:

echo $(openssl x509 -in certificate.pem -fingerprint -noout) | sed 's/SHA1 Fingerprint=//g' | sed 's/://g' | xxd -r -ps | base64

我从这里得到的:How to obtain value of "x5t" using Certificate credentials for application authentication

如果您尝试使用客户端机密而不是客户端断言,您将得到一个令牌,但SharePoint Online REST API将返回:

Unsupported app only token.

这篇关于如何使用v1 Azure AD应用程序和客户端凭据访问Sharepoint Online API的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆