如何使用存储在httponlycookie中的令牌注销(代码片段)

author author     2023-05-11     620

关键词:

我目前正在使用Microsoft的Identity在Asp .NET Web API项目中帮助我的Auth。我正在生成一个持票人令牌并将其存储在名为HttpOnlyAUTH cookie中

由于我没有在我的数据库中存储与令牌相关的任何内容,我该如何注销?在我将令牌存储在会话存储中之前,我只是将其移除到客户端,但现在因为我将令牌存储在HttpOnly cookie中,所以我无法做任何客户端操作。

我是否在服务器上调用使用新cookie AUTH进行响应并且值为空的路由?我试过了,但来自logout的响应cookie似乎没有取代HttpOnly cookie,它只是创建了一个会话cookie。

这就是我生成AUTH cookie的方法

context.Response.Cookies.Append("AUTH", accessToken,
                                new Microsoft.Owin.CookieOptions
                                
                                     HttpOnly = true,
                                     Expires = DateTime.UtcNow.AddMinutes(5)
                                );

这就是我从logout路线生成响应的方式。

var authCookie = new CookieHeaderValue("AUTH", "");
var xsrfCookie = new CookieHeaderValue("XSRF", "");

ActionContext.Response = new HttpResponseMessage();
ActionContext.Response.Headers.AddCookies(new CookieHeaderValue[]  authCookie, xsrfCookie );

return ActionContext.Response;

出于某种原因,此处返回的cookie不会覆盖使用auth令牌创建的cookie。

这是在HttpOnly cookie中存储身份验证令牌时注销用户的最佳策略吗?

答案

如果您没有存储身份验证令牌,那么您不能使其无效。因此,您可以强制浏览器从服务器中删除Cookie。尝试添加DomainPath。您还可以将Expires设置为昨天,以便浏览器在收到cookie后立即将其删除。

authCookie.HttpOnly = true;
authCookie.Expires = DateTime.UtcNow.AddDays(-1);
authCookie.Domain = "localhost";
authCookie.Path = "/";

xsrfCookie.Expires = DateTime.UtcNow.AddDays(-1);
xsrfCookie.Domain = "localhost";
xsrfCookie.Path = "/";

在 .net core api 中存储/验证存储在 HttpOnly cookie 中的 JWT 令牌

】在.netcoreapi中存储/验证存储在HttpOnlycookie中的JWT令牌【英文标题】:Store/validateJWTtokenstoredinHttpOnlycookiein.netcoreapi【发布时间】:2020-08-0904:11:20【问题描述】:我将基于jwt的身份验证添加到我的api,将令牌添加到标头(授权:Bear... 查看详情

如何使用 DRF djangorestframework-simplejwt 包将 JWT 令牌存储在 HttpOnly cookie 中?

】如何使用DRFdjangorestframework-simplejwt包将JWT令牌存储在HttpOnlycookie中?【英文标题】:HowtostoreJWTtokensinHttpOnlycookieswithDRFdjangorestframework-simplejwtpackage?【发布时间】:2021-05-2016:45:47【问题描述】:我已经使用djangorestframework-simplejwt有... 查看详情

如何在 react/next.js 应用程序中安全地存储 JWT 令牌?

...客户端站点中的这些方法:本地存储、会话存储、cookie、HttpOnlycookie、 查看详情

如何使用存储在会话存储中的访问令牌使用 HttpClient 进行 Web api 调用?

】如何使用存储在会话存储中的访问令牌使用HttpClient进行Webapi调用?【英文标题】:HowtouseaccesstokenstoredinsessionstoragefordoingwebapicallusingHttpClient?【发布时间】:2020-03-0214:44:41【问题描述】:我已使用ajax调用完成登录,并使用以下... 查看详情

ReactJS 和 DRF:如何将 JWT 令牌存储在 HTTPonly cookie 中?

】ReactJS和DRF:如何将JWT令牌存储在HTTPonlycookie中?【英文标题】:ReactJSandDRF:HowtostoreJWTtokeninsideHTTPonlycookies?【发布时间】:2021-02-1114:43:19【问题描述】:目前,我的Web应用程序具有登录功能,在我发出登录请求后,服务器会使用... 查看详情

如何使用 JWT + HttpOnly Cookie 正确刷新令牌?

】如何使用JWT+HttpOnlyCookie正确刷新令牌?【英文标题】:HowtoproperlyrefreshatokenusingJWT+HttpOnlyCookie?【发布时间】:2020-01-2521:01:22【问题描述】:受this文档和this主题的启发,我已经使用JWT+HttpOnlyCookies在我的AspNetCoreAPI应用程序中成功... 查看详情

带有存储在 cookie 中的刷新令牌的 SPA - 如何使用 IdentityServer4 进行配置?

】带有存储在cookie中的刷新令牌的SPA-如何使用IdentityServer4进行配置?【英文标题】:SPAwithrefreshtokensstoredincookie-howtoconfigurewithIdentityServer4?【发布时间】:2020-07-0221:31:32【问题描述】:我有一个SPA,它使用长寿命的自包含JWT与API... 查看详情

如何使用 Angular Http Interceptor 和 RxJS 刷新 JWT 令牌?

...n(7天后过期)和AccessToken(15分钟后过期)。它们存储在httpOnlycookies上,可以通过服务器访问 查看详情

如何在前端使用令牌进行身份验证

...作得很好,当用户登录时,服务器会使用包含access_token的HttpOnlycookie进行响应。我不明白的是,如果我无法从前端 查看详情

使用 Alamofire 时如何将令牌存储在 NSUserDefault 中?

】使用Alamofire时如何将令牌存储在NSUserDefault中?【英文标题】:HowcanIStoretheTokeninNSUserDefaultwhileusingAlamofire?【发布时间】:2016-07-1805:38:40【问题描述】:我正在使用OTP进行电子邮件验证。我使用了两个API,一个用于注册,另一个... 查看详情

如何存储 JWT refreshToken cookie 响应

...用户后,我会收到作为JSON响应的令牌和存储刷新令牌的httponlycookie。(服务端使用的是Saleor-core)根据Saleor的文档和其他一些博客文章 查看详情

如何在 MySQL 和 PHP 中存储和使用 OAuth 令牌?

】如何在MySQL和PHP中存储和使用OAuth令牌?【英文标题】:HowtostoreanduseOAuthtokensinMySQLandPHP?【发布时间】:2012-07-1705:31:48【问题描述】:我正在使用Abraham的twitteroauth库。我一直在尝试将注册我的Twitter应用程序的Twitter帐户中的oauth... 查看详情

用于 JWT 刷新令牌的 react-native 中的 httpOnly cookie

】用于JWT刷新令牌的react-native中的httpOnlycookie【英文标题】:httpOnlycookieinreact-nativeforJWTrefresh-token【发布时间】:2020-06-1913:42:06【问题描述】:我有一个快速节点服务器。我只通过httpOnlycookie发送JWT访问令牌作为响应,还发送一个... 查看详情

如何保护 JWT 令牌

】如何保护JWT令牌【英文标题】:HowtosecureJWTtokens【发布时间】:2018-09-1218:39:11【问题描述】:我正在使用JWT令牌来授权来自Angular网站对我的API的请求,并且我将令牌保存在本地存储中,但问题是它容易受到攻击,因为攻击者可... 查看详情

我啥时候需要使用存储在数据库中的访问令牌?

】我啥时候需要使用存储在数据库中的访问令牌?【英文标题】:WhendoIneedtousetheaccesstokenstoredinthedatabase?我什么时候需要使用存储在数据库中的访问令牌?【发布时间】:2012-07-1418:56:42【问题描述】:何时需要使用存储在数据库... 查看详情

在 React 中使用 Httponly Cookie 处理会话

】在React中使用HttponlyCookie处理会话【英文标题】:HandlingSessionswithHttponlyCookiesinReact【发布时间】:2021-02-2121:39:25【问题描述】:当您从React中的HttpOnlycookie获取令牌时,处理用户会话的最佳做法是什么?我的登录端点如下所示,... 查看详情

您究竟如何在 ASP.NET 中配置 httpOnlyCookies?

】您究竟如何在ASP.NET中配置httpOnlyCookies?【英文标题】:HowexactlydoyouconfigurehttpOnlyCookiesinASP.NET?【发布时间】:2010-09-0704:56:46【问题描述】:受这篇CodingHorror文章“ProtectingYourCookies:HttpOnly”的启发你如何设置这个属性?网络配置... 查看详情

如何将 JWT 存储在 HttpOnly Cookie 中?

】如何将JWT存储在HttpOnlyCookie中?【英文标题】:HowtostoreJWTsinHttpOnlyCookies?【发布时间】:2020-12-0903:09:04【问题描述】:我目前正在开发一个React-Django应用程序并使用JWT进行身份验证。经过一番研究,我发现将JWT存储在客户端是... 查看详情