SAML - поставщик услуг не может обработать запрос

Я самоучка SAML. Я учусь, используя быстрый запуск ссылки на пикет: https://github.com/jboss-developer/jboss-picketlink-quickstarts.

Я развернул picketlink-federation-saml-idp-basic-wildfly.war в wildfly 9.0.2, работающем в порту 9080, и picketlink-federation-saml-sp-post-basic-wildfly.war, развернутый в wildfly 9.0.2, запущенном в порту 8080 Я также обновил standalone.xml, чтобы обновить домен безопасности для IDP и SP.

Единственное изменение, которое я должен был сделать в образце, было обновить зависимость picketlink-jbas7, так как версия в образце 2.8.0.Beta1-SNAPSHOT не может быть разрешена. Зависимость maven, которую я использую в IDP:

<dependency>
        <groupId>org.picketlink.distribution</groupId>
        <artifactId>picketlink-jbas7</artifactId>
        <version>2.7.0.Final</version>
        <scope>provided</scope>
</dependency>

Проблема, с которой я сталкиваюсь, заключается в том, что когда я вхожу в IDP и нажимаю на ссылку SP, я получаю следующее исключение в журналах SP:

23:05:55,833 ERROR [org.picketlink.common] (default task-5) Service Provider could not handle the request.: java.lang.NullPointerException
at org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler$SPTrustHandler.handleStatusResponseType(SAML2IssuerTrustHandler.java:143)
at org.picketlink.identity.federation.web.handlers.saml2.SAML2IssuerTrustHandler.handleStatusResponseType(SAML2IssuerTrustHandler.java:70)
at org.picketlink.identity.federation.web.process.SAMLHandlerChainProcessor.callHandlerChain(SAMLHandlerChainProcessor.java:67)
at org.picketlink.identity.federation.web.process.ServiceProviderSAMLResponseProcessor.processHandlersChain(ServiceProviderSAMLResponseProcessor.java:106)
at org.picketlink.identity.federation.web.process.ServiceProviderSAMLResponseProcessor.process(ServiceProviderSAMLResponseProcessor.java:88)
at org.picketlink.identity.federation.bindings.wildfly.sp.SPFormAuthenticationMechanism.handleSAML2Response(SPFormAuthenticationMechanism.java:516)
at org.picketlink.identity.federation.bindings.wildfly.sp.SPFormAuthenticationMechanism.handleSAMLResponse(SPFormAuthenticationMechanism.java:306)
at org.picketlink.identity.federation.bindings.wildfly.sp.SPFormAuthenticationMechanism.authenticate(SPFormAuthenticationMechanism.java:268)
at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:339)
at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.transition(SecurityContextImpl.java:356)
at io.undertow.security.impl.SecurityContextImpl$AuthAttempter.access$100(SecurityContextImpl.java:325)
at io.undertow.security.impl.SecurityContextImpl.attemptAuthentication(SecurityContextImpl.java:138)
at io.undertow.security.impl.SecurityContextImpl.authTransition(SecurityContextImpl.java:113)
at io.undertow.security.impl.SecurityContextImpl.authenticate(SecurityContextImpl.java:106)
at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:55)
at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

Пожалуйста, дайте мне знать, что я делаю неправильно.

Спасибо

2 ответа

Я столкнулся с той же проблемой, изучая быстрые старты в picketbox. Я работаю с wildfly 10.1.0.Final.

Первое, что я заметил, было то, что для работы " Basic " необходимо ( https://github.com/jboss-developer/jboss-picketlink-quickstarts):

  • IDP: picketlink-federation-saml-idp-basic
  • SP (s): picketlink-federation-saml-sp-post-basic и picketlink-federation-saml-sp-redirect-basic

Для простоты я развернул все сгенерированные.war в одном контейнере.

Было две вещи, которые помогли мне найти то, что происходило:

  • включить отладку TRACE
  • версия picketlink 2.5.5.SP2 в Wildfly 10, и SAML2LoginModule не был найден в этом пакете в picketlink-wildfly8-2.5.5.SP2.jar.

В частности у меня была проблема с модулем входа в систему, получающим эту ошибку:

Class org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule not found from Module "deployment.picketlink-federation-saml-sp-post-basic-wildfly.war:main" from Service Module Loader

Login failure: javax.security.auth.login.LoginException: unable to find LoginModule class: org.picketlink.identity.federation.bindings.wildfly.SAML2LoginModule

Я изменил модуль входа на org.picketlink.identity.federation.bindings.jboss.auth.SAML2LoginModule, и быстрый запуск начал работать.

Я отказался от пикетлинка.

Я использовал openSAML и смог разработать потоки, инициированные IDP и SP, без проблем.

Рекомендации:
https://wiki.shibboleth.net/confluence/display/OpenSAML/OSTwoUserManual https://github.com/rasmusson/webprofile-ref-project

Другие вопросы по тегам