如何在Springboot中使用Autentication Basic以标头形式发送访问令牌

时间:2019-06-21 19:04:18

标签: spring-boot http-headers jwt access-token

我已经完成了大部分项目,但是现在我遇到了一个新问题。我必须从请求中提取访问令牌,该请求将位于Authentication Basic的标头中。这很令人困惑,因为首先我使用一个简单的GET方法,并在请求本身中发送访问令牌,然后使用@RequestParam将其提取出来。我之前曾问过类似的问题,但这是针对请求本身的简单请求,现在我必须从标题开始。

 @GetMapping("/persons")
     public String loadPersons(@RequestParam("access_token") String access_token) throws  ParseException{
        String decode_token = pd.testDecodeJWT(access_token);
        String token = pd.jsondata(decode_token);
........................ More Code........................

我想以Authentication Basic格式从请求中获取该令牌。

我已经尝试了一些YouTube教程,但是由于我已经几乎完全完成了我的项目,因此我想对其进行最小的更改,以免出现其他错误。

预先感谢

1 个答案:

答案 0 :(得分:0)

要从HTTP标头获取值,可以使用@RequestHeader("headerValue")

但是您的问题让我感到困惑的是,您正在使用基本身份验证还是JWT? Basic Authentication仅与用户名和密码有关,与访问令牌无关。它需要一个HTTP头,其格式为:

Authorization: Basic <credentials>

其中<credentials>Base64Encode(username:password)

另一方面,如果您使用JWT格式的访问令牌,则通常的做法是在“授权”标头中使用Bearer

Authorization: Bearer <JWT>

所以无论您使用什么,我的建议是先使用@RequestHeader("Authorization")获取Authorization标头的值,然后根据您的实际身份验证机制对值进行解码:

 @GetMapping("/persons")
 public String loadPersons(@RequestHeader("Authorization") String authHeader) throws  ParseException{
      //decode authHeader
}
相关问题