認証に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メソッドを再度呼び出すと、アプリケーションはそれ自体で有効なトークンを取得できます。
完全なログアウトを実行するために何が欠けていますか?
ユーザーをSTSからもサインアウトする場合は、ログアウト要求を発行します。https://login.windows.net/{tenantid or "common"}/oauth2/logout?post_logout_redirect_uri={URL}
。 URLは、AADでアプリに登録されている返信URLである必要があります。
ローカルの資格情報キャッシュをクリアしています。 STS Cookieが原因でサイレント認証が発生している可能性があります(AcquireTokenAsyncを再度呼び出すとFiddlerは何をトレースしますか)?
お役に立てば幸いです。 この質問 の重複の可能性。