使用Spring Boot和Spring Security验证JWT

对于我当前的项目,我将使用Spring Boot设置REST API (最有可能使用BoxFuse运行)。 为了能够使用API​​端点,应用程序将检查传入的请求是否具有较早提供的有效JWT令牌 (由我信任的API服务提供)。
为了实现此功能,我想利用Spring Security,因为它与Spring Boot非常吻合。 在搜寻有关此组合的信息时,我遇到了一个很好地描述背景信息的网站 ,但没有提供使它运行所需的所有必要资源。 因此,经过更多调查和反复试验后,我终于找到了一个可行的解决方案。 请注意,在我的情况下,我仅需要验证传入的令牌,而无需创建或提供新的令牌。

示例的源代码可在此处在GitLab上找到。 该示例应用程序具有一个称为MainController的REST控制器。 启动应用程序后(通过运行Application .main方法),您可以使用以下地址访问REST端点: http:// localhost:8888 / hello?name = PalmApps 。 如您所见,如果在浏览器中尝试执行此操作,则会收到HTTP 401错误:

截图-May-27-16-16-34

要访问端点,您将需要提供JWT令牌,以便可以通过JwtAuthenticationFilter进行访问 。 要生成有效令牌,请打开类JwtTokenGenerator的源并运行'main'方法,该方法将在控制台中打印令牌:

screenshot-at-may-27-16-25-02

复制令牌并打开一个工具,您可以使用该工具发送HTTP请求,并将令牌添加到标头中,例如Postman

截图-May-27-16-28-09

有了令牌后,您将看到预期的输出:

{
  "id": 2,
  "content": "Hello, PalmApps!"
}

如果您通过POST请求访问端点http:// localhost:8888 / me (仍带有“ Authorization”标头),则将以JSON格式获取Principal对象的详细信息:

{
  "details": null,
  "authorities": [
    {
      "authority": "admin"
    }
  ],
  "authenticated": true,
  "principal": {
    "username": "Pascal",
    "token": "eyJhbGciOiJIUzUxMeJ9.eyJzdwIiOi....m72LpFADA",
    "authorities": [
      {
        "authority": "admin"
      }
    ],
    "password": null
  },
  "credentials": null,
  "name": "Pascal"
}

返回对象中的“主要”字段是我们的AuthenticatedUser 。 如果我们想从我们的JWT中获取更多信息,那么我们可以简单地将其添加到该对象中,并将其填充到JwtAuthenticationProvider中

翻译自: https://www.javacodegeeks.com/2016/05/validating-jwt-spring-boot-spring-security.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值