基于令牌的身份验证可能发生安全攻击?

时间:2017-08-18 11:50:50

标签: rest spring-security jwt client-side-attacks

我设计了一个Web应用程序,它使用非常简单的JWT令牌实现来提供身份验证/授权。

我的实施:

  1. 有两种类型的网址是公共的和安全的。
  2. 公共网址是使用用户名/密码生成令牌。
  3. 我在安全网址上添加了过滤器,以检查授权标头和JWT令牌。

    @Bean    
    public FilterRegistrationBean jwtFilter() 
    {
         final FilterRegistrationBean registrationBean = new 
         FilterRegistrationBean();
         registrationBean.setFilter(new JwtFilter());
         registrationBean.addUrlPatterns("/secure/*");
    
         return registrationBean;
    

    }

  4. 过滤器将验证令牌。我还没有添加到期日期。

    final HttpServletRequest request = (HttpServletRequest) req;
    final HttpServletResponse response = (HttpServletResponse) res;
    final String authHeader = request.getHeader("authorization");
    
    if ("OPTIONS".equals(request.getMethod())) {
        response.setStatus(HttpServletResponse.SC_OK);
    
        chain.doFilter(req, res);
    } else {
    
        if (authHeader == null || !authHeader.startsWith("Bearer ")) {
            throw new ServletException("Missing or invalid Authorization header");
        }
    
        final String token = authHeader.substring(7);
    
        try {
            final Claims claims = Jwts.parser().setSigningKey(secretKey.toString).parseClaimsJws(token).getBody();
            request.setAttribute("claims", claims);
        } catch (final SignatureException e) {
            throw new ServletException("Invalid token");
        }
    
        chain.doFilter(req, res);
    }
    
  5. 这提供了身份验证,并且它不受CSRF的影响。没有密钥可以创建有效的令牌。

    我遗漏的令牌基础身份验证服务是否还有其他攻击?

0 个答案:

没有答案