如果您在负载平衡器处终止SSL,则您的负载平衡器应发送一个标头,指示最初请求的协议。例如,F5添加了X-Forwarded-Proto。
在这里,您可以创建
ChannelProcessor用于查看此标头而不是的custom
request.isSecure()。然后,您可以继续使用
<intercept-url requires-channel="https">和相对
<c:url>。
步骤:
- 子类SecureChannelProcessor和InsecureChannelProcessor重写
decide()
。在decide()
检查您的负载平衡器发送的标头。
@Override public void decide(FilterInvocation invocation, Collection<ConfigAttribute> config) throws IOException, ServletException { for (ConfigAttribute attribute : config) { if (supports(attribute)) { if (invocation.getHttpRequest().getHeader("X-Forwarded-Proto").equals("http")) { entryPoint.commence(invocation.getRequest(),invocation.getResponse()); } } } }
- 然后使用来在ChannelDecisionManagerImpl bean 上设置这些ChannelProcessor
BeanPostProcessor
。请参阅此Spring Security常见问题解答,以了解为什么/如何使用BeanPostProcessor
。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)