如何通过Spring Security保护使用自定义JWT令牌的Spring Boot API的安全?

时间:2019-05-30 02:47:03

标签: spring-security

我们的基础设施如下:

Diagram

它是这样的:

  1. 最终用户访问我们的网站site.example.com并输入他的用户名/密码。
  2. 将AJAX请求与用户的凭据一起发送到身份验证服务器auth.example.com
  3. 如果成功,响应将包含一个标识当前用户的UUID(someUUID)。
  4. 浏览器将someUUID保存在其本地存储中。
  5. 然后用户向gw.example.com/some/path发出请求。
  6. API网关检查请求的Authorization标头,并加载与给定UUID(someUUID)相匹配的用户详细信息。
  7. 然后,API网关将用户详细信息转换为JWT令牌,并将其添加到名为X-Auth的自定义标头中。 JWT令牌如下所示:

    Header:
    {
      "typ": "SomeSpecificType",
      "alg": "...",
      "x5t": "...",
      "x5u": "https://x501.example.com/path/to/public-key"
    }
    
    Body:
    {
      "jti": "some jti",
      "iss": "some iss",
      "ver": "2.0",
      "sub": "some sub",
      "exp": 1559999999,
      "nbf": 1559000000,
      "iat": 1559999999,
      "usr": "Some.User@gmail.com"
    }
    
  8. 然后API网关从请求中删除Authorization标头。
  9. 最后,API网关将请求转发到API。

现在,在第十步中,我想检查在X-Auth标头中传递给API的JWT令牌,并加载用户主体并将其提供给我的控制器等。

没有Spring Security,实现此目的的一种方法是编写自定义过滤器,手动检查X-Auth标头,并准备可在控制器中使用的用户主体对象,等等。

但是如果我想使用Spring Security,我该如何处理这种情况?我应该使用Spring Security的Pre-Auth功能吗?

0 个答案:

没有答案