【问题标题】:How could I read secure value from cookie in spring?我如何在春季从 cookie 中读取安全值?
【发布时间】:2019-04-26 22:13:28
【问题描述】:

如何在 spring 中从 cookie 中读取安全的 HttpOnly 值?

我将 JWT 令牌保存在 cookie 中的安全和 HttpOnly 值中,但我无法从 HttpServletRequest 获取它。

我用邮递员发送请求,如果我从 cookie 中删除安全,它工作正常,但是当我用 cookie 发送它时,我无法访问它!

这是 cookie 的值:

token=eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiIxIiwiaWF0IjoxNTQzMDgzMzc2LCJleHAiOjE1NDM2ODgxNzZ9.8IWh2HO7aVoxuVNUWCIhV1AeHvmTD5GyvopJGQFv9fgrYNBY8ZzbeapikTRpPNG3oDSWOvjbLU-lpWx7MWAYRw; path=/; domain=localhost; Secure; HttpOnly; Expires=Tue, 19 Jan 2038 03:14:07 GMT;

我用这段代码创建 cookie:

Cookie cookie = new Cookie(jwtTokenName, generateToken(authentication));
cookie.setPath("/");
cookie.setHttpOnly(true);
cookie.setSecure(true);
response.addCookie(cookie);

它的内容在applications.yml:

server:
  port: 8181
  servlet:
    session:
      cookie:
        secure: true
app:
  jwtSecret: JWTSuperSecretKey
  jwtExpirationInMs: 604800000
  jwtTokenName: token

【问题讨论】:

  • 你使用 https 吗?如果你不这样做,由于设置了安全标志,浏览器不会发送它:这就是安全标志的重点。
  • 不,它在 HTTP 上。我使用邮递员发送请求;它只在 HTTPS 上发送吗?
  • 试图做什么?为什么需要这两个标志?
  • 完成了。我尝试将 JWT 令牌保存在 cookie 中然后获取它,并在本地开发中启用了安全功能。

标签: spring spring-mvc spring-boot cookies


【解决方案1】:

当您在 HTTP 标头中添加“安全”时,表示 Cookie 应仅通过安全通道传输,使用 HTTPS。

这就是你面临问题的可能原因。

如果您有所需的证书或经过身份验证的令牌,则可以在 HTTP 标头中设置它们。

使用 Insomnia 或 Advanced REST Client 等为您提供这些选项的客户端。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-22
    • 2014-02-02
    • 2012-12-13
    • 2017-11-30
    • 2021-05-12
    • 2019-03-31
    相关资源
    最近更新 更多