gpt4 book ai didi

asp.net-mvc-4 - MVC AZURE WA AD 不带 ACS 退出

转载 作者:行者123 更新时间:2023-12-03 03:17:06 25 4
gpt4 key购买 nike

在我的 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");
}

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

我的实际代码只是 -

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

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

如何注销/注销 azure 用户?我可以删除任何对我有帮助的 Cookie 吗?

当我单击“注销”时,它会返回同一页面,但实际上并未注销我。但是当我使用内部帐户时,该应用程序会让我注销并返回到登录页面。

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

谢谢!

最佳答案

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

FederatedAuthentication.SessionAuthenticationModule.SignOut();

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

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

HttpContext.GetOwinContext().Authentication.SignOut()

关于asp.net-mvc-4 - MVC AZURE WA AD 不带 ACS 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23096275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com