web-dev-qa-db-ja.com

Azure Active Directoryのログアウト(永続トークンのクリア)

認証にAzureActiveDirectoryを使用してDynamicsCRMOnlineと通信するWindowsストアアプリケーションを開発しています。

アプリケーションは、このCRM 2013SDKの例を使用します。SampleCode\CS\ModernAndMobileApps\ModernSoapApp

認証のためにこのnugetパッケージを参照します。

Microsoft.Preview.WindowsAzure.ActiveDirectory.Authentication

私は正しく認証することができます、メインラインはこれです:

AuthenticationResult result = await _authenticationContext.AcquireTokenAsync("Microsoft.CRM", ClientID, redirectUrl, string.Empty, string.Empty);

問題は、ログアウト機能を追加する必要があり、永続トークンを削除できないことです。

次の行でログアウトしようとしました。

(AuthenticationContext.TokenCache as DefaultTokenCache).Clear();

しかし、資格情報を入力するためのページを表示する代わりに、AcquireTokenAsyncメソッドを再度呼び出すと、アプリケーションはそれ自体で有効なトークンを取得できます。

完全なログアウトを実行するために何が欠けていますか?

9
Guido Preite

ユーザーをSTSからもサインアウトする場合は、ログアウト要求を発行します。https://login.windows.net/{tenantid or "common"}/oauth2/logout?post_logout_redirect_uri={URL}。 URLは、AADでアプリに登録されている返信URLである必要があります。

ローカルの資格情報キャッシュをクリアしています。 STS Cookieが原因でサイレント認証が発生している可能性があります(AcquireTokenAsyncを再度呼び出すとFiddlerは何をトレースしますか)?

お役に立てば幸いです。 この質問 の重複の可能性。

18
Dushyant Gill