私の Web サイトでは、GraphClient ライブラリ ( http://www.nuget.org/packages/Microsoft.Azure.ActiveDirectory.GraphClient ) を使用して Azure AD にクエリを実行しています。独自の資格情報と認証トークンを使用してgraph.windows.netにアクセスすると、これは正常に機能します。
ユーザーが自分の Web サイトにログインし、自分の Microsoft テナント アカウントを使用して認証するときに、Web サイトが (Web サーバーの) トークンではなく、そのユーザー トークンを使用して 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 ライブラリが「不十分な権限」を返すのはなぜですか?