Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure AD身份验证会记住所选帐户。如何阻止这一切_C#_Azure_Azure Active Directory - Fatal编程技术网

C# Azure AD身份验证会记住所选帐户。如何阻止这一切

C# Azure AD身份验证会记住所选帐户。如何阻止这一切,c#,azure,azure-active-directory,C#,Azure,Azure Active Directory,为了使用AzureAD进行身份验证,我将folling代码放在控制台应用程序中 private static async Task<string> GetAuthTokenAsync(string tendent,string AppIdUri , string ClientID) { /* <add key="ida:Audience" value="https://mehler.ws/ToDoWebApi" /> <ad

为了使用AzureAD进行身份验证,我将folling代码放在控制台应用程序中

private static async Task<string> GetAuthTokenAsync(string tendent,string AppIdUri , string ClientID)
    {
        /*
         <add key="ida:Audience" value="https://mehler.ws/ToDoWebApi" />
<add key="ida:ClientID" value="f0e91727-3edd-4b00-9630-591166a74e4b" />
        */
        var authContext = new AuthenticationContext(string.Format("https://login.windows.net/{0}", tendent));
        AuthenticationResult result = authContext.AcquireToken(AppIdUri, ClientID , new Uri(Settings.Default.WebApiReplyAdress));

        return result.CreateAuthorizationHeader();
    }
private静态异步任务GetAuthTokenAsync(string tendent、string AppIdUri、string ClientID)
{
/*
*/
var authContext=新的AuthenticationContext(string.Format(“https://login.windows.net/{0},倾向性);
AuthenticationResult=authContext.AcquireToken(AppIdUri、ClientID、新Uri(Settings.Default.webapireplyAddress));
返回结果。CreateAuthorizationHeader();
}
AcquireToken方法显示一个屏幕,要求我输入凭据


我无意中选择了在Windows 10中登录的帐户。现在屏幕不再显示,应用程序将自动使用我的Windows 10帐户。是否有人知道如何解决此问题,以便屏幕再次显示?

令牌被缓存以减轻应用程序的复杂性。如果希望用户重新登录,则需要清除令牌缓存。。。通常,您会设置注销功能

有关令牌缓存的详细信息:

如何注销:

authContext.TokenCache.Clear();
string requestUrl = "https://login.microsoftonline.com/{0}/oauth2/logout?post_logout_redirect_uri={1}";
Task.Run(async () =>
{
    var client = new HttpClient();
    var request = new HttpRequestMessage(HttpMethod.Get, requestUrl);
    var response = await client.SendAsync(request);
});
  • {0}-Azure Active Directory的完全限定名,例如。 yourad.onmicrosoft.com或租户id
  • {1} -必须重定向用户的应用程序的URL 注销完成后返回。这应该是正确的URL 编码的

一个简单的方法是传递到AcquireToken PromptBehavior。总是会有过载。这将导致ADAL忽略缓存,并要求服务提供一个干净的提示

我自己找到了一个非常简单的解决方案来清除缓存。 删除Internet Explorer/Edge中的Cookie;-)

无论如何,感谢您的解答,以实现正确的注销代码并强制提示登录