【问题标题】:How to send JWT from spring boot to Flutter?如何将 JWT 从 Spring Boot 发送到 Flutter?
【发布时间】:2021-10-21 05:00:31
【问题描述】:

我想知道将我的 Spring Boot 应用程序中生成的 JWT 发送到我的 Flutter 移动应用程序的最佳且安全的方式是什么。我可以将它发送到响应正文中,我知道这在网络中不是一个好的做法,但在移动设备方面会出现问题吗?

这就是我返回 JWT 的方式:

public ResponseEntity<?> signin(String username, String password) {
    try {
      authenticationManager.authenticate(new UsernamePasswordAuthenticationToken(username, password));
      String token= jwtTokenProvider.createToken(username, userRepository.findByUsername(username).getRoles());
      //return new JwtResponse(token,username,userRepository.findByUsername(username).getRoles());
      return ResponseEntity.ok(new AuthToken(token));
    } catch (AuthenticationException e) {
      throw new CustomException("Invalid username/password supplied", HttpStatus.UNPROCESSABLE_ENTITY);
    }
  }

【问题讨论】:

  • 为什么在响应正文中发送 jwt 令牌不是一个好习惯?能详细点吗?
  • 我不知道这就是为什么我问如果我将 jwt 令牌发送到响应正文中的移动应用程序是否存在被盗的风险?我想知道将其发送到移动应用程序的最佳做法是什么
  • 在标题或正文中发送它应该不会有什么不同。重要的是您的连接是安全的 (SSL)。如果您从移动设备发出请求以获取令牌,请使用正文返回它。如果您从移动设备向受限资源发出请求,请将其发送到标头以进行身份​​验证。

标签: spring-boot flutter jwt


【解决方案1】:

无论您如何在标头或正文部分发送 JWT 令牌,IT 都无关紧要。其他人可以通过客户端的某个应用轻松查看和复制它。

您可以采取的保护数据的步骤是

  • 首先你需要检查Token是否被客户端篡改,每次收到客户端的JWT令牌
  • 其次,您应该添加一个created-at 字段,您可以在其中发送创建令牌时的时间戳。这将防止有人在此令牌被盗后永远冒充令牌的所有者,因为此令牌将在一段时间后失效。

在采取这些安全措施后,您可以简单地在响应的正文部分发送您的令牌。当然,还有更多的最佳实践可供遵循,但这些都是一个很好的起点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-07
    • 1970-01-01
    • 2018-07-17
    • 1970-01-01
    • 2019-01-06
    • 2021-11-03
    • 2021-11-19
    • 1970-01-01
    相关资源
    最近更新 更多