自定义注释以在Spring中验证请求标头

时间:2016-08-26 12:42:40

标签: spring-security spring-boot annotations

设置向上

我们有一套微服务,我们使用Spring-cloud进行服务注册(Eureka)和API网关(ZUUL)。我们在ZUUL本身进行身份验证,一旦经过身份验证,ZUUL会添加一个带有值的请求标头(比如说“Authenticated”)。所有对核心服务的请求都来自ZUUL,因此身份验证在ZUUL中完成。

问题

每个核心服务都在不同的端口运行,如果某些请求直接通过ZUUL来到核心服务,那么我们想检查请求头是否包含“Authenticated”。

  1. 如果它包含“已验证”,则请求应该通过。
  2. 如果没有,则响应应为403
  3. 我们的方法

    我们计划创建自定义注释 @validateAuthentication,并检查请求标头是否包含每个值的“已验证”。我们不希望向核心服务添加任何spring安全依赖项。

    问题

    1. 我们的方法/设计是否可行,请您建议如何做到这一点。
    2. 你能指点我做一些参考资料吗?
    3. 我已就此问题提出了一些问题[Custom Annotation in Spring with BeanPostProcessor,但无法继续进行。
    4. 如果您需要更多详细信息,请告诉我们。

      谢谢!

1 个答案:

答案 0 :(得分:0)

我们创建了一个处理自定义注释 @validateAuthentication 的库,我们创建了扩展 HandlerInterceptorAdapter 的Intercepter类。

我们在 preHandle(HttpServletRequest请求,HttpServletResponse响应,对象处理程序)方法中实现了对请求标头的验证。