【问题标题】:Azure ACS not forcing to re-authenticate after signoutAzure ACS 不强制在注销后重新进行身份验证
【发布时间】:2014-06-20 15:48:23
【问题描述】:

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

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

我的退出码如下:

    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 中错误地配置了某些内容,或者我的代码是否缺少某些内容。我不知道如何阻止它自动重新验证旧用户

【问题讨论】:

    标签: wif acs azure-active-directory


    【解决方案1】:

    一般来说,adfs 登录应该要求用户重新认证。
    但是,如果用户登录到域内的计算机,她会自动登录(因为她登录到活动目录)。在域外的计算机上,用户需要提供密码,由浏览器请求 你想如何改变这种行为?

    【讨论】:

    • 等等,因为“计算机”何时将登录凭据传递给浏览器? IE 可能会这样做,但我希望 Firefox 和 Chrome 不会。
    • 它更像是在您的网络服务器上使用 Windows 身份验证。这也是自动发生的。我不知道每种情况下发生的确切流程。我只是确定(因为我们使用它)它以这种方式工作,而与浏览器无关。我假设某种身份验证协商发生在服务器和客户端之间。在域内这是一种方式,在域外,adfs 服务器切换到 http(s) 基本身份验证...
    • 我想你指的是当 Azure ADFS 与本地活动目录集成时。我们的系统并非如此。用户必须使用与 Windows 登录无关的用户名使用 ACS 登录。
    • 您好,抱歉,我想我走错了方向。有几件事可能是错误的。一件好事是安装一个像提琴手这样的工具来看看会发生什么。为响应您的注销请求,STS (ACS) 应向 ADFS 和您的应用程序发送一条 wsignoutcleanup1.0 消息。您还应该查看浏览器中的 cookie,以查看所有 cookie(在您的域中、acs 域中和 adfs 域中)在此调用后正确删除。然后,此信息应指导您找到解决方案。
    猜你喜欢
    • 2019-09-27
    • 2013-09-13
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 2020-05-14
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    相关资源
    最近更新 更多