我想要一个现有的JBoss应用程序作为SAML2 SP启用。很容易,但这是一个多租户应用程序,其中主机名用于确定哪个IP"如果有的话"重定向到。如果未配置IP,则应通过表单登录。下面的配置没有做我想要的(第二个" PicketLinkSP"隐藏第一个)。
这是一个包含数十个租户的小批量应用程序,因此我们希望不为每个租户部署war文件。目前,只有少数客户表示有兴趣托管SAML2 IP,所以如果我们不得不为这几个人部署专用实例,但如果有更好的解决方案,那就太好了。
<PicketLink xmlns="urn:picketlink:identity-federation:config:2.1">
<PicketLinkSP xmlns="urn:picketlink:identity-federation:config:2.1"
ServerEnvironment="tomcat" BindingType="REDIRECT" RelayState="someURL">
<IdentityURL>${idp.url::http://bip.archxm/idp/}</IdentityURL>
<ServiceURL>${sample.url::http://bip.archxm/sample}</ServiceURL>
<Trust>
<Domains>bip.archxm</Domains>
</Trust>
</PicketLinkSP>
<PicketLinkSP xmlns="urn:picketlink:identity-federation:config:2.1"
ServerEnvironment="tomcat" BindingType="REDIRECT" RelayState="someURL">
<IdentityURL>${idp.url::http://ccm.archxm/idp/}</IdentityURL>
<ServiceURL>${sample.url::http://ccm.archxm/sample/}</ServiceURL>
<Trust>
<Domains>ccm.archxm</Domains>
</Trust>
</PicketLinkSP>
<Handlers xmlns="urn:picketlink:identity-federation:handler:config:2.1">
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2LogOutHandler" />
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2AuthenticationHandler">
<Option Key="ASSERTION_SESSION_ATTRIBUTE_NAME" Value="org.picketlink.sp.assertion"/>
</Handler>
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.RolesGenerationHandler"/>
<Handler class="org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler"/>
</Handlers>
</PicketLink>
答案 0 :(得分:1)
我向Red Hat征求了一些帮助,他们为我提供了一些示例代码。 Here's the sample.
在我的情况下,我需要扩展的不仅仅是AuthenticationHandler;我需要以相同的方式扩展所有SP处理程序,以及自定义KeyManager和ConfigurationProvider。对于处理程序,我能够使用具有以下类型的通用/委派SAML2Handler来执行此操作。
public abstract class MyDelegatingSAML2Handler<DH extends SAML2Handler> implements SAML2Handler