2014-09-26 4 views
2

У меня есть приложение, использующее базовую аутентификацию весной безопасности, которая проверяет данные пользователя относительно базы данных. Существует определенный набор пользователей, которые проверяются с использованием базы данных единого входа. Используя SAML, я смог проверить наличие базы данных SSO.как настроить как базовую аутентификацию пружинной безопасности, так и проверку подлинности SAML с использованием примера Spring-sample в одном приложении

Но проблема заключается в том, как интегрировать как базовую аутентификацию, так и аутентификацию 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

ответ

2

Пример приложения в Spring SAML 1.0.0 содержит как базовую аутентификацию с именем и паролем и аутентификации SAML основе. Используйте его в качестве примера.

+0

Не могли бы вы указать, где именно в этом примере это приложение. В контексте безопасности он отображает все (/ **) в samlEntryPoint. Я не вижу примера, где он работает. – mmaceachran

+0

@ Vladimir Schafer Я также хочу достичь этого и не в состоянии найти решение для него. Можете ли вы рассказать, как сопоставлять разные URL-адреса для базовой проверки подлинности с использованием безопасности и проверки подлинности SAML? – aProgrammer

+0

https://github.com/spring-projects/spring-security-saml/blob/master/sample/src/main/webapp/WEB-INF/securityContext.xml#L22 - который использует форму-логин для подмножества заявление. Например, вы можете написать свой собственный EntryPoint, который отправит пользователя в правильное место для аутентификации или поместит SAMLEntryPoint, например. pattern/samlLogin и перенаправлять пользователя там, где требуется авторизация SAML. Есть много возможностей, вы можете прочитать больше о документах EntryPoints в Spring Security. –