2014-09-26 31 views
2

我有一个使用spring安全基本身份验证的应用程序,该应用程序根据数据库验证用户详细信息。有一组特定用户针对SSO数据库进行了验证。使用SAML,我可以验证SSO数据库。如何在同一应用程序中使用spring-sample示例配置spring安全基本身份验证和SAML身份验证

但问题是如何将基本身份验证和SAML身份验证集成到单个应用程序中,并引导用户进行特定身份验证。另一个原因是,它们都使用不同的身份验证提供程序。

我已经使用spring-saml示例来配置SAML。

另一个问题是拦截url模式。在下面的配置中,两个安全配置都没有使用PATTERN属性进行映射,因为有两个映射到/ **(任何请求)的配置,服务器启动时会出现这种异常。如何解决这个异常?

对于如:

<security:http access-denied-page="/saml/web/metadata/login"> 
    <security:form-login login-processing-url="/saml/web/login" login-page="/saml/web/metadata/login" default-target-url="/saml/web/metadata"/> 
    <security:intercept-url pattern="/login" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <security:intercept-url pattern="/logout" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <security:intercept-url pattern="/home" access="IS_AUTHENTICATED_ANONYMOUSLY"/> 
    <security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/> 
</security:http> 

<security:http pattern="/saml/mysignin" entry-point-ref="samlEntryPoint"> 
    <security:intercept-url pattern="/saml/mysignin" access="IS_AUTHENTICATED_FULLY"/> 
    <security:custom-filter before="FIRST" ref="metadataGeneratorFilter"/> 
    <security:custom-filter after="BASIC_AUTH_FILTER" ref="samlFilter"/> 
</security:http> 

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

你能够配置它吗?我有同样的问题,我还没有理解如何设置HTTP模式 – Chris 2015-04-30 15:07:22

回答

2

春SAML 1.0.0样例应用程序包含用户名和密码,并基于SAML的身份验证基本身份验证。以此为例。

+0

您可以指出它在示例应用程序中的位置。在安全上下文中,它将所有(/ **)映射到samlEntryPoint。我没有看到两个例子。 – mmaceachran 2016-08-24 02:43:30

+0

@Vladimir Schafer我也想达到这个目标,并且无法找到解决方案。您可以分享如何映射春季安全基本身份验证和SAML身份验证的不同URL吗? – aProgrammer 2017-09-20 07:15:45

+0

https://github.com/spring-projects/spring-security-saml/blob/master/sample/src/main/webapp/WEB-INF/securityContext.xml#L22 - 它使用表单登录的子集应用。例如,您也可以编写自定义的EntryPoint,将用户发送到正确的位置进行身份验证,或者将SAMLEntryPoint设置为pattern/saml登录并在需要SAML认证时将用户重定向到那里。有很多可能性,你可能想在Spring Security文档中阅读更多关于EntryPoints的内容。 – 2017-09-20 08:16:39

相关问题