2017-09-15 25 views
0

私はAzure Active Directoryを使用しました。私はADALライブラリを使用してトークンを取得し、そのトークンでAPIを呼び出します。トークンを取得するために使用したコードは次のとおりです。Azureアクティブディレクトリ認証ライブラリ(ADAL)ログアウトが機能しない

var url = "https://login.microsoftonline.com/something.onmicrosoft.com/oauth2/logout?post_logout_redirect_uri=www.google.com"; 

AuthenticationContext ac = new AuthenticationContext(APIsConstant.authorityForDomain2); 
AuthenticationResult ar = await ac.AcquireTokenAsync(APIsConstant.graphResourceUriForDomain2, APIsConstant.clientIdForDomain2, new Uri("www.google.com"),string.Empty,string.Empty); 
string accessToken = ar.AccessToken; 

ac.TokenCache.Clear(); 

var client = new HttpClient(); 
var request = new HttpRequestMessage(HttpMethod.Get, url); 
var response = await client.SendAsync(request); 
+0

私は同じ問題を抱えています。 something.onmicrosoft.comとは何ですか? – Kunal

答えて

1

リクエストにアクセストークンは含まれていません。要求を送信する前にAuthorizationヘッダーを追加することで、これを行うことができます。

// ... code to get authentication result ... 

var client = new HttpClient(); 
var request = new HttpRequestMessage(HttpMethod.Get, url); 
// Add an Authorization header using your authentication result (ar) 
request.Headers.TryAddWithoutValidation("Authorization", ar.CreateAuthorizationHeader()); 
var response = await client.SendAsync(request); 

認証結果のアクセストークンを変数に格納する必要はありません。トークンを含むCreateAuthorizationHeaderメソッドを直接使用することができます。

ac.TokenCache.Clear();に電話をする場所を変更する必要がある場合もあります。今のように、今作成したばかりのトークンは削除される可能性が高く、依頼は依然として承認ヘッダーでも失敗します。呼び出しを認証結果を取得する前に移動するか、API要求を行った後に移動することができます。または、通話を完全に削除することを検討してください。

関連する問題