Fra*_*att 7 java spring-mvc spring-security saml-2.0 spring-boot
参考此SO问题使用Spring Security SAML向SAML请求添加请求参数
我想用我自己的默认HTTPRedirectDeflateBinding bean替换默认的HTTPRedirectDeflateBinding bean,它有一个自定义的HTTPRedirectDeflateEncoder来向我的SAML请求添加查询参数.
我正在尝试使用Spring Boot @Bean自动配置注释来实现这一点,并且是Java环境的新手,我似乎无法使其正常工作.我可以看到我的bean在启动时正在注册,但是出站的HTTP请求没有被它拦截,看起来原来的redirectBinding仍然是.
这是我添加到Configuration类中的bean:
@Bean(name="redirectBinding")
@Primary
public HTTPRedirectDeflateBinding HTTPRedirectDeflateBinding()
{
return new HTTPRedirectDeflateBinding(null, new My_SAML_HttpRedirectDeflateEncoder());
}
Run Code Online (Sandbox Code Playgroud)
这是我的编码器,我正试图传递给重定向绑定
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();
}
Run Code Online (Sandbox Code Playgroud)
}
我还试图从这个SO响应spring boot中提出的解决方案添加http请求拦截器 类似的结果,我的HandlerInterceptor bean被注册但没有被截获.我觉得我错过了一个小细节.任何帮助,将不胜感激.
您可以重新声明SAMLProcessorbean(由 所使用SAMLProcessingFilter)并在其绑定列表中添加您自己的绑定 bean。这是我在我的项目中使用的一个例子。
@Bean
public SAMLProcessorImpl processor() {
Collection<SAMLBinding> bindings = new ArrayList<>();
bindings.add(httpRedirectDeflateBinding());
bindings.add(httpPostBinding());
bindings.add(artifactBinding(parserPool(), velocityEngine()));
bindings.add(httpSOAP11Binding());
bindings.add(httpPAOS11Binding());
return new SAMLProcessorImpl(bindings);
}
Run Code Online (Sandbox Code Playgroud)
希望对你有帮助。
| 归档时间: |
|
| 查看次数: |
514 次 |
| 最近记录: |