从成功的身份验证返回JWT令牌

时间:2020-06-30 15:53:13

标签: java spring-security jwt bearer-token jwt-auth

我创建了此端点来验证用户身份

@PostMapping("/authorize")
public String login(@Valid @RequestBody AuthenticationDTO resetDTO) {
    return userRestService.authorize(resetDTO.getName(), resetDTO.getPassword());
}

成功认证后返回令牌。例如:

eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOlt7ImF1dGhvcml0eSI6IlJPTEVfQURNSU4ifV0sImlhdCI6MTU5MzUzMjE4NiwiZXhwIjoxNTkzNTMyNDg2fQ.gevNLXsfe8F4MnfDZJK5GhhFn0MskoQejfUUqQjh0d_sa-wyloRf2zOQIhBkn1OEDR4ZyRvIhhEtWPrH33cLPg 

在身份验证后返回与JWT令牌相关的DTO格式的最佳实践是什么?例如,将令牌返回为类似

的格式是一个好主意吗
{
   Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOlt7ImF1dGhvcml0eSI6IlJPTEVfQURNSU4ifV0sImlhdCI6MTU5MzUzMjE4NiwiZXhwIjoxNTkzNTMyNDg2fQ.gevNLXsfe8F4MnfDZJK5GhhFn0MskoQejfUUqQjh0d_sa-wyloRf2zOQIhBkn1OEDR4ZyRvIhhEtWPrH33cLPg
}

在那种情况下有哪些好的做法?

1 个答案:

答案 0 :(得分:1)

除了返回JSON总是返回对象(总是将数组,数字,字符串包装在顶级对象中)外,没有什么好习惯。 对于您的特定用例,您可以在oauth2 authorization framework上举例,并返回类似以下内容的内容:

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store
Pragma: no-cache

{
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"Bearer",
   "expires_in":3600,
}