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

Gui*_*ite 9 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);
Run Code Online (Sandbox Code Playgroud)

问题是我需要添加一个注销功能,我无法摆脱持久性令牌.

我尝试使用以下行注销:

(AuthenticationContext.TokenCache as DefaultTokenCache).Clear();
Run Code Online (Sandbox Code Playgroud)

但是当我再次调用AcquireTokenAsync方法而不是显示用于输入凭据的页面时,应用程序能够自己获得有效的令牌.

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

Dus*_*ill 18

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

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

希望有所帮助.可能重复此问题.

  • 您能否提供C#代码或提供有关如何“发出注销请求”的更多详细信息。谢谢。 (2认同)