【问题标题】:How to get the access token sent in as header with Autentication Basic in Springboot如何在 Spring Boot 中使用 Authentication Basic 获取作为标头发送的访问令牌
【发布时间】:2019-11-04 15:21:50
【问题描述】:

我已经完成了大部分项目,但现在我遇到了一个新问题。我必须从请求中提取访问令牌,该请求将位于 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 教程,但由于我已经几乎完全完成了我的项目,因此我希望对其进行最少的更改,以免出现更多错误。

提前致谢

【问题讨论】:

  • 您为什么不使用单独的类来处理身份验证部分,该部分将服务于所有 http 请求,而不是访问控制器类中的令牌。尝试在您的项目中使用 Spring Security,这将有助于使用 jwt 身份验证。(不要因为您已完成大部分代码而犹豫更改代码。尝试使用最佳实践和可用的最佳方法)。
  • @m-2127 这是我的第一个 springboot 项目,我对 springboot 的功能一无所知。由于给了我最后期限,因此我无法学习其中的大部分内容,其中包括 Spring Security。感谢您的帮助。

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


【解决方案1】:

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

但是你的问题让我感到困惑的是你使用的是 Basic Authentication 还是 JWT ? Basic Authentication 仅与用户名和密码有关,与访问令牌无关。它需要一个格式如下的 HTTP 标头:

Authorization: Basic <credentials>

其中&lt;credentials&gt;Base64Encode(username:password)

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

Authorization: Bearer <JWT>

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

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

【讨论】:

  • 这可行,但我们不能为 JWT 使用 Authentication Basic 吗?就像我的教练说他们将使用 Basic 将 jwt 令牌作为标头发送。
  • @Chaos 通过this stackoverflow 问答来澄清这一点。
  • 您仍然可以使用Authorization: Basic &lt;JWT&gt; 发送JWT,它仍然可以工作,但这不是基本身份验证,因为基本身份验证对Authorization: Basic 之后的字符串有一定的要求。另外,请参阅this,了解 JWT 常用的最佳授权标头类型。
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 2019-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 2019-01-17
  • 1970-01-01
相关资源
最近更新 更多