我正在开发一个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方法而不是显示用于输入凭据的页面时,应用程序能够自己获取有效的令牌。
执行完全注销时我缺少什么?
答案 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可能重复。