【发布时间】:2018-07-11 03:20:25
【问题描述】:
关于这个 SO 问题Add request parameter to SAML request using Spring Security SAML
我想用我自己的替换默认的 HTTPRedirectDeflateBinding bean,它有一个自定义 HTTPRedirectDeflateEncoder 来将查询参数添加到我的 SAML 请求中。
我正在尝试使用 Spring Boot @Bean 自动配置注释来实现这一点,并且对于 Java 环境来说是新手,我似乎无法让它正常工作。我可以看到我的 bean 在启动时正在注册,但出站 HTTP 请求没有被它拦截,看起来原来的 redirectBinding 仍然是。
这是我添加到配置类中的 bean:
@Bean(name="redirectBinding")
@Primary
public HTTPRedirectDeflateBinding HTTPRedirectDeflateBinding() {
return new HTTPRedirectDeflateBinding(null, new My_SAML_HttpRedirectDeflateEncoder());
}
这是我试图传递给重定向绑定的编码器
public class My_SAML_HttpRedirectDeflateEncoder extends HTTPRedirectDeflateEncoder {
@Override
protected String buildRedirectURL(SAMLMessageContext messagesContext, String endpointURL, String message)
throws MessageEncodingException {
URLBuilder urlBuilder = new URLBuilder(endpointURL);
List<Pair<String, String>> queryParams = urlBuilder.getQueryParams();
if (messagesContext.getOutboundSAMLMessage() instanceof RequestAbstractType) {
queryParams.add(new Pair<String, String>("service", "myService"));
queryParams.add(new Pair<String, String>("serviceType", "dev"));
}
return urlBuilder.buildURL();
}
}
我还尝试了此 SO 响应 Spring Boot Adding Http Request Interceptors 提出的解决方案 类似的结果,我的 HandlerInterceptor bean 已注册但没有被拦截。我觉得我错过了一个小细节。任何帮助将不胜感激。
【问题讨论】:
标签: java spring-mvc spring-boot spring-security saml-2.0