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