2014-06-20 51 views
0

我有一个使用Azure ADFS和Azure ACS进行身份验证的MVC应用程序。当用户首次登录时,他们将被重定向到Azure ASC进行身份验证。成功完成后,用户将通过令牌重新回到站点,并且可以正常使用系统。Azure ACS在登出后不强制重新进行身份验证

当用户注销时,他们被重定向到注销页面,然后返回到原始登录屏幕。问题是,当他们再次点击登录链接时,它会自动再次登录用户,而不需要他们重新进行身份验证。这意味着,这是不可能改变用户在不关闭浏览器,如果用户离开浏览器窗口打开的任何人都可以单击登录链接并登录为用户

我的注销代码如下:

public void Logout() 
    { 
     var fc = FederatedAuthentication.FederationConfiguration.WsFederationConfiguration; 
     var signOutMessage = new SignOutRequestMessage(new Uri(fc.Issuer), fc.Realm); 
     FederatedAuthentication.WSFederationAuthenticationModule.SignOut(signOutMessage.WriteQueryString()); 
    } 

signOutMessage.WriteQueryString()生成以下内容:

https://myacsnamespace.accesscontrol.windows.net/v2/wsfederation?wa=wsignout1.0&wreply=http%3a%2f%2flocalhost%3a44301%2f 

有我在ACS配置不正确的东西,或者是我的代码缺少的东西。我无法弄清楚如何自动停止重新认证旧用户

回答

0

通常,adfs登录应该要求用户重新进行认证。
但是,如果用户登录到域内的计算器,她将自动登录(因为她已登录到活动目录)。在域外的计算机上,用户需要提供密码,请求浏览器 您想如何改变这种行为? example of browser requesting credentials (in dutch)

+0

等待,因为“计算机”何时将登录凭据传递给浏览器? IE也许这样做,但是我希望Firefox和Chrome不会。 – mxmissile

+0

它更像是在您的网络服务器上使用Windows身份验证。这也是自动发生的。我不知道每种情况下发生的事情的确切流程。我只能确定(因为我们使用它),无论浏览器如何,它都以这种方式工作。我*假设*在服务器和客户端之间进行某种身份验证协商。在域内,这是通过单向和域外adfs服务器切换到http基本身份验证的方式完成的... –

+0

我认为您指的是Azure ADFS何时与本地活动目录集成。我们的系统并非如此。用户必须使用ACS以与其Windows登录无关的用户名登录。 – Neil

相关问题