Проблемы при интеграции ADFS с расширением Spring SAML

Я работаю над интеграцией Spring SAML Extension в наше приложение и для SSO с одним из ADFS2.0 нашего клиента в качестве IDP. Мы сгенерировали метаданные поставщика услуг из нашего приложения и импортировали метаданные ADFS в наше appliaction. Когда я выбираю idp клиентов и нажмите на начало единого знака и укажите правильные учетные данные клиентов, которые мы видим в ответе SAML, следующим образом:

Самл Ответ.

<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol"  Consent="urn:oasis:names:tc:SAML:2.0:consent:unspecified"  
Destination="https://sso.spire2grow.com:8443/<our application>/saml/SSO" ID="_d7fa7cb7-a858-4d4e-aa4c-bf7a5d11e485" 
InResponseTo="a2icei36d347di68gi33534cc13fd1" IssueInstant="2014-09-30T14:17:21.819Z" Version="2.0"><Issuer 
xmlns="urn:oasis:names:tc:SAML:2.0:assertion"><Clients ADFS trust services URL></Issuer><samlp:Status><samlp:StatusCode 
Value="urn:oasis:names:tc:SAML:2.0:status:Responder"></samlp:StatusCode></samlp:Status></samlp:Response>

но я также вижу следующее исключение, поскольку поставщик услуг не может проверить сообщение.

Сообщение об исключении:

[351545]2014-09-30 19:47:21,714 DEBUG - SAML message intended destination endpoint matched recipient endpoint
[351545]2014-09-30 19:47:21,714 DEBUG - Authentication attempt using org.springframework.security.saml.SAMLAuthenticationProvider
[351545]2014-09-30 19:47:21,715 DEBUG - Error validating SAML message
org.opensaml.common.SAMLException: Response has invalid status code urn:oasis:names:tc:SAML:2.0:status:Responder, status message is null
    at org.springframework.security.saml.websso.WebSSOProfileConsumerImpl.processAuthenticationResponse(WebSSOProfileConsumerImpl.java:113)
    at org.springframework.security.saml.SAMLAuthenticationProvider.authenticate(SAMLAuthenticationProvider.java:82)
    at org.springframework.security.authentication.ProviderManager.authenticate(ProviderManager.java:156)
    at org.springframework.security.saml.SAMLProcessingFilter.attemptAuthentication(SAMLProcessingFilter.java:84)
    at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:195)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:342)

Может ли кто-нибудь, пожалуйста, указать, если я что-то не так здесь.

ОБНОВИТЬ:

После просмотра ответа на этот вопрос я обнаружил следующую ошибку в ADFS.

Microsoft.IdentityServer.Protocols.Saml.SamlProtocolSignatureAlgorithmMismatchException: MSIS7093: The message is not signed with expected signature algorithm. Message is signed with signature algorithm http://www.w3.org/2000/09/xmldsig#rsa-sha1. Expected signature algorithm http://www.w3.org/2001/04/xmldsig-more#rsa-sha256. at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.ValidateSignatureRequirements(SamlMessage samlMessage) at Microsoft.IdentityServer.Web.Protocols.Saml.SamlProtocolManager.Issue(HttpSamlRequestMessage httpSamlRequestMessage, SecurityTokenElement onBehalfOf, String sessionState, String relayState, String& newSamlSession, String& samlpAuthenticationProvider, Boolean isUrlTranslationNeeded, WrappedHttpListenerContext context, Boolean isKmsiRequested)

Но, увидев это, мы изменили алгоритм подписи на доверяющей стороне на rsa-sha256, но он по-прежнему отображает то же сообщение.

Нужен ли нам подлинный сертификат для rsa-sha256? Будет ли работать самоподписанный сертификат?

3 ответа

Решение

Исключение из ADFS жалуется на то, что сообщение SAML было подписано не с ожидаемым RSA-SHA256, а с RSA-SHA1.

Убедитесь, что для алгоритма подписи эстафетной партии Spring SAML в ADFS установлено значение SHA-1. Вы можете найти подробности в последнем пункте http://docs.spring.io/autorepo/docs/spring-security-saml/1.0.x-SNAPSHOT/reference/htmlsingle/

Значение ="урна: оазис: имена: дц:SAML:2,0: Статус: Ответчик"

Смотрите спецификацию ядра SAML. Это говорит:

urn: oasis: names: tc:SAML:2.0: status: Responder Не удалось выполнить запрос из-за ошибки со стороны ответчика SAML или органа SAML.

т. е. на сервере ADFS возникли проблемы с интерпретацией или ответом на запрос. IdP должен сказать вам, в чем проблема.

Расширение SAML Spring Security не поддерживает SHA-256 по умолчанию. Вы можете продлить org.springframework.security.saml.SAMLBootstrap класс для предоставления SHA-256.

Переопределить postProcessBeanFactory метод

public class Bootstrap extends SAMLBootstrap {

    @Override
    public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
        super.postProcessBeanFactory(beanFactory);
        BasicSecurityConfiguration config = (BasicSecurityConfiguration) Configuration
                .getGlobalSecurityConfiguration();
        config.registerSignatureAlgorithmURI("RSA", SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
        config.setSignatureReferenceDigestMethod(SignatureConstants.ALGO_ID_DIGEST_SHA256);
    }
Другие вопросы по тегам