【发布时间】:2018-11-14 21:25:56
【问题描述】:
我在 Azure 广告中注册了一个应用程序。
当我使用以下详细信息执行 ADAL 时,我会获得一个授权令牌以与 microsoft graph api 一起使用。
`username = 'admin@domain.com'
password = 'password123'
client_id = application id from azure ad
client_secret = keys from application on azure ad
tenant = directory id from azure ad`
使用此令牌,我可以获取我的 sharepoint 帐户中所有站点的列表。
下面是我调用的端点来获取带有不记名令牌的站点:
https://graph.microsoft.com/v1.0/sites?search=*
但是当我只是使用使用以下端点生成的令牌进行客户端身份验证时,我无法访问站点列表。
login.microsoftonline.com/tenant_id/oauth2/v2.0/token
`grant_type : client_credentials
clientid : client_id
clientsecrte : client_secret
scope : https://graph.microsoft.com`
它不会返回所有网站。
有没有一种方法可以通过客户端身份验证获取所有站点列表。
或者我可以在没有用户密码的情况下获得一个用于用户身份验证的令牌。
这是我正在使用的解码令牌:
{
"aud": "https://graph.microsoft.com",
"iss": "https://sts.windows.net/586145ec-0428-4da6-8061-fb114257ab70/",
"iat": 1528949458,
"nbf": 1528949458,
"exp": 1528953358,
"aio": "Y2dgYLh*************xAAA=",
"app_displayname": "App Name",
"appid": "504ddb16-2899-48be-be57-**********",
"appidacr": "1",
"idp": "https://sts.windows.net/586145ec-0428-4da6-8061-fb114257ab70/",
"oid": "afcf166f-24c2-49f1-b285-b672d0413c50",
"roles": [
"Sites.Read.All",
"Sites.ReadWrite.All",
"Sites.Manage.All",
"Sites.FullControl.All",
],
"sub": "afcf166f-24c2-49f1-b285-b672d0413c50",
"tid": "586145ec-0428-4da6-8061-fb114257ab70",
"uti": "hwYd8FZCH0KruWGRFiIHAA",
"ver": "1.0"
}
我还获得了其他权限,但这些权限与 Microsoft Graph api 中的网站相关
【问题讨论】:
-
你能发布你得到的错误消息吗?成功的一个是使用
ROPC流,它可以获得用户的onbehlaf委托权限。但是失败的是使用client_credentials流,它获得了应用程序权限并且不能独立于用户。
标签: sharepoint azure-active-directory microsoft-graph-api