小编sha*_*rsh的帖子

在多租户环境中,如何在运行时在不同的URL(子域)上为不同的服务提供商提供不同的元数据?

在SP上启动单点登录(SSO),SP和IdP都是自托管的,因此可以灵活地编辑这两者.我使用spring-security-saml2-core-1.0.1.RELEASE来托管spring应用程序(spring-security-3.2.8,spring-mvc-3.2.14.RELEASE),它在URL上为多个租户提供服务: sp1. example.org,
sp2.example.org
使用Shibboleth IdPv3.2.1托管IdP,它可以与托管在不同SP服务器上的多个应用程序一起使用.

我正在尝试从sp1和sp2的同一服务器发送不同的元数据.我通过覆盖SAMLContextProviderImpl 在这里阅读了一个关于多租户SP 和这里的自定义逻辑populatePeerEntityId,同样我试图覆盖populateLocalEntityId因为我无法使用alias.

有人可以为Overriding提供一个示例代码populateLocalEntityId来处理多租户元数据吗?

SP配置如下图所示:

<!-- Filters for processing of SAML messages -->
<beans:bean id="samlFilter" class="org.springframework.security.web.FilterChainProxy">
    <filter-chain-map request-matcher="ant">
        <filter-chain pattern="/saml/login/**" filters="samlEntryPoint" />
        <filter-chain pattern="/saml/logout/**" filters="samlLogoutFilter" />
        <filter-chain pattern="/saml/metadata/**" filters="metadataDisplayFilter" />
        <filter-chain pattern="/saml/SSO/**" filters="samlWebSSOProcessingFilter" />
        <filter-chain pattern="/saml/SSOHoK/**" filters="samlWebSSOHoKProcessingFilter" />
        <filter-chain pattern="/saml/SingleLogout/**" filters="samlLogoutProcessingFilter" />
        <filter-chain pattern="/saml/discovery/**" filters="samlIDPDiscovery" />
    </filter-chain-map>
</beans:bean>

<!-- Handler deciding where to redirect user after successful login -->
<beans:bean id="successRedirectHandler" class="com.example.web.sso.CustomAuthenticationSuccessHandler" …
Run Code Online (Sandbox Code Playgroud)

java shibboleth single-sign-on service-provider spring-saml

4
推荐指数
1
解决办法
2221
查看次数