Azure Active Directory注销(清除持久性令牌)

时间:2014-05-19 08:17:03

标签: authentication azure dynamics-crm-online dynamics-crm-2013 azure-active-directory

我正在开发一个Windows应用商店应用程序,该应用程序使用Azure Active Directory进行身份验证,与Dynamics CRM Online进行通信。

该应用程序使用此CRM 2013 SDK示例: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方法而不是显示用于输入凭据的页面时,应用程序能够自己获取有效的令牌。

执行完全注销时我缺少什么?

1 个答案:

答案 0 :(得分:16)

如果您也希望将用户签出STS,请发出退出请求:https://login.windows.net/{tenantid or "common"}/oauth2/logout?post_logout_redirect_uri={URL}。 URL必须是在AAD中向您的应用注册的回复网址。

您正在清除本地凭据缓存。由于STS cookie,可能会发生静默身份验证(当您再次调用AcquireTokenAsync时,Fiddler会跟踪什么)?

希望有所帮助。 this question可能重复。