【问题标题】:MVC AZURE WA AD Singout without ACS没有 ACS 的 MVC AZURE WA AD Singout
【发布时间】:2014-04-15 23:22:39
【问题描述】:

在我的 MVC Web 应用程序中,我尝试使用内部身份验证和 Windows Azure Active Directory(无 ACS)作为身份提供程序。我可以将此应用程序添加到 Azure 应用程序,以便可以从 Azure 对用户进行身份验证。

我能够在没有 ACS 的情况下使用 Azure 和本地用户登录。

我的问题是我无法从我的 Web 应用程序中注销 Azure 用户。本地用户通过单击注销退出,但问题出在 azure 帐户上。我刚刚使用默认的简单 MVC 示例应用程序来测试这些,并在这里和那里做了一些修改,但没有什么大不了的。

        [HttpPost]
   // [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        Session.Clear();
        Session.Abandon(); 
        WebSecurity.Logout();
        FormsAuthentication.SignOut();
        return RedirectToAction("Login", "Account");
    }

这是我用来注销的代码。在我看来,我还面临着伪造令牌的问题。添加 @Html.AntiForgeryToken() 对我没有帮助。

我的实际代码只是 -

      [HttpPost]
   // [ValidateAntiForgeryToken]
    public ActionResult LogOff()
    {
        WebSecurity.Logout();
        return RedirectToAction("Login", "Account");
    }

但根据我在一些博客中找到的一些建议,我将其更改为前者。

如何注销/注销 azure 用户?我能否删除任何对我有帮助的 cookie?

当我单击注销时,它会返回相同的页面,而不会真正将我注销。但是当我使用内部帐户时,该应用程序让我注销并返回登录页面。

我使用 VS2012 并使用 Identity and Access 工具将其连接到 Azure AD,使用 WS-Federation(协议)和 Windows Identity Foundation (WIF) 4.5(框架)。

谢谢!

【问题讨论】:

    标签: asp.net-mvc-4 azure azure-active-directory logoff


    【解决方案1】:

    答案取决于您用于登录 Azure AD 的协议和身份中间件/框架。如果您在 VS2012 中构建您的应用程序并使用 Identity and Access 工具将其连接到 Azure AD,您可能正在使用 WS-Federation(协议)和 Windows Identity Foundation (WIF) 4.5(框架)。如果您使用 VS2013 并在创建新的 Web 应用程序时单击“更改身份验证”按钮,然后登录到您的 Azure AD 目录,则同样适用。对于这些场景,您应该知道 WIF 使用 HTTP 模块来处理 WS-Fed 和会话管理,并且您需要与会话模块交互以结束用户的会话并将其注销。要将用户从应用程序中注销(这会清除他们的联合身份验证 cookie),您需要在会话模块上调用 SignOut() 方法,如下所示:

    FederatedAuthentication.SessionAuthenticationModule.SignOut();

    如果您想要单点注销(将用户从他们当前使用 Azure AD 登录的所有应用程序中注销),WS-Federation 有自己的注销流程,该流程涉及将特定的注销消息发回给Azure AD 让它知道用户已注销。 See this topic 了解更多信息并向下滚动到关于退出的部分。

    如果你使用 VS2013 和 OWIN 认证中间件,你只需要获取当前 OWIN 上下文的认证“管理器”并调用其SignOut() 方法,如下所示:

    HttpContext.GetOwinContext().Authentication.SignOut()

    【讨论】:

    • 非常感谢肖恩。链接帮助了我。它非常具有描述性,帮助我实现了我想要的!再次感谢:)
    猜你喜欢
    • 2016-04-08
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多