2014-07-15 6 views
2

SAML2 SP로 사용할 기존 JBoss 응용 프로그램이 있습니다. 쉬운 일이지만, 이것은 리다이렉트 할 IP가 "있다면"을 결정하기 위해 호스트 이름이 사용되는 멀티 테넌트 애플리케이션입니다. IP가 구성되어 있지 않으면 양식 로그인으로 넘어갑니다. 아래의 구성은 내가 원하는 것을 수행하지 않습니다 (두 번째 "PicketLinkSP"가 첫 번째 것을 숨김).다중 IP에 대한 다중 사용자 JBoss 응용 프로그램에서 SAML2 SSO 사용

수십 명의 세입자가있는 소량 응용 프로그램이므로 이 아닌을 사용하여 각 세입자에게 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> 

답변

1

나는 Red Hat으로부터 도움을 청하 며 샘플 코드를 제공해주었습니다. Here's the sample.

필자는 단지 AuthenticationHandler 이상을 확장해야했습니다. 커스텀 KeyManager와 ConfigurationProvider뿐만 아니라 모든 SP 핸들러를 같은 방식으로 확장해야했습니다. 핸들러에서 다음 유형의 SAML2Handler를 일반/위임을 사용하여 일반적으로 수행 할 수있었습니다.

public abstract class MyDelegatingSAML2Handler<DH extends SAML2Handler> implements SAML2Handler