我想知道将在我的 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 token ,无论是在 header 还是在正文部分。它可以很容易地被其他人通过客户端上的一些应用程序看到和复制。
您可以采取的保护数据的步骤是
- 首先,每次从客户端收到 JWT token 时,您需要检查 token 是否被客户端篡改
- 其次,您应该添加一个
created-at
字段,您可以在其中发送 token 创建时间的时间戳。这将防止有人在 token 被盗后永远冒充 token 的所有者,因为 token 在一段时间后将失效。
在采取这些安全措施后,您可以简单地在响应的正文部分发送您的 token 。当然,还有更多最佳实践可供遵循,但这些都是一个很好的起点。
关于spring-boot - 如何将 JWT 从 spring boot 发送到 Flutter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68848632/