gpt4 book ai didi

c# - 在 OWIN/Katana 身份验证管理器中使用 HttpPost 进行注销

转载 作者:太空狗 更新时间:2023-10-30 01:33:17 24 4
gpt4 key购买 nike

有没有办法强制 Katana 身份验证管理器从 IdentityServer3 调用注销端点?使用 HttpPost 而不是 HttpGet 方法?

我目前使用此方法从 IdentityServer3 调用结束 session 端点(根据 this 教程):

public ActionResult Logout()
{
// standard way with HTTP GET
Request.GetOwinContext().Authentication.SignOut();

return Redirect("/");
}

我需要这个,因为 URL 将有超过 2000 个字符,这会导致一些错误。

谢谢帮助

最佳答案

遗憾的是,OWIN 中间件不支持 HttpPost 注销操作。作为解决方法,您可以手动将必要的参数发布到结束 session 端点

我在我的 MVC5 应用程序中提供了一个链接,以便用户能够注销:

@{
Claim idTokenHintClaim = Request.GetOwinContext().Authentication.User.FindFirst("id_token");
string idTokenHint = idTokenHintClaim != null
? idTokenHintClaim.Value
: null;
}
<form action="https://.../core/endsession" method="POST" id="logoutForm">
<input type="hidden" name="id_token_hint" value="@idTokenHint"/>
<input type="hidden" name="post_logout_redirect_uri" value="@PostLogoutRedirectUrl"/>
</form>
<a href="javascript:document.getElementById('logoutForm').submit()">
Logout
</a>

IdentityServer3 正在执行其工作并销毁当前用户 session 。之后 IdentityServer3 调用我们的 @PostLogoutRedirectUrl@PostLogoutRedirectUrl 指向 MVC 应用程序的 Controller 方法:

public ActionResult LogoutCallback()
{
HttpCookie cookie = new HttpCookie("SecureCookieName");
cookie.HttpOnly = true;
cookie.Expires = new DateTime(1999, 10, 12);
Response.Cookies.Remove("SecureCookieName");
Response.Cookies.Add(cookie);

SetPasswordResetHint();

return RedirectToAction("Index");
}

我希望尽快在 OWIN 中间件中添加对 HttpPost 方法的支持。

关于c# - 在 OWIN/Katana 身份验证管理器中使用 HttpPost 进行注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34349774/

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