我的网站使用 GraphClient 库 ( http://www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient ) 来查询 Azure AD。它使用自己的凭据和授权令牌来访问 graph.windows.net,这工作正常。
我正在尝试更改它,以便当用户登录我的网站并使用他们自己的 Microsoft 租户帐户进行身份验证时,我的网站然后使用该用户令牌而不是其(网络服务器)自己的令牌查询 graph.windows.net。
我使用 OWIN 中间件、针对 Microsoft 的 OpenID 进行身份验证,最后使用 GraphClient 来查询 AzureAD。
现在我的流程在 OWIN Notifications => AuthorizationCodeReceived 我执行 AcquireTokenByAuthorizationCode() 来检索用户 AccessToken,然后我尝试像这样连接到 GraphClient..
new ActiveDirectoryClient(
new Uri(graphResourceID + '/' + tenantID),
async () => userAccessToken
)
GraphClient 总是对我检查的所有调用返回一个“权限不足”的响应。但是,如果我向 graph.windows.net REST API 创建一个简单的 HTTPClient 请求,并从上面使用 userAccessToken 注入“Bearer”授权标头,那么 Graph API 会给我一个有效的响应。
当一个简单的 HTTPClient 请求正常工作时,为什么 GraphClient 库会返回“权限不足”?