我正在开发一个Windows Store应用程序,该应用程序使用Azure Active Directory进行身份验证,与Dynamics CRM Online通信。
应用程序使用以下CRM 2013 SDK示例:SampleCodeCSModernAndMobileAppsModernSoapApp
并引用这个用于身份验证的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会跟踪什么)?
希望有帮助。可能重复这个问题