Jboss Picketlink从中获取空文档

Jboss Picketlink从中获取空文档,jboss,picketlink,Jboss,Picketlink,以下是Jboss 6.4附带的Picketlink Federation 2.5.4 SP4类org.Picketlink.identity.Federation.web.handlers.saml2.SAML2AuthenticationHandler的摘录(2.5.4 SP4的Picketlink.org github上没有标记?)。我的问题是顶行request.getRequestDocument()返回null。对象本身请求(SAML2HandlerRequest)看起来很好(不是nul

以下是Jboss 6.4附带的Picketlink Federation 2.5.4 SP4类org.Picketlink.identity.Federation.web.handlers.saml2.SAML2AuthenticationHandler的摘录(2.5.4 SP4的Picketlink.org github上没有标记?)。我的问题是顶行request.getRequestDocument()返回null。对象本身请求(SAML2HandlerRequest)看起来很好(不是null):

仅供参考,我需要此文档的原因是,正如您在代码中看到的,如果responseDocument为null,则AsserOnElement为null。如果assertionElement为null,那么我的SAML令牌将不在给定密钥下的HTTPSession中,这就是我所需要的

标识提供程序是PingIdentity。在我学习整个PicketLink代码库之前,这里可能会发生什么的提示或技巧

谢谢

仅供参考,我的设置是jboss 6.4,附带picketlink(2.5.4 SP4),带有SAML令牌的PingIdentity(IdP)。仅供参考,从WebApp 1到WebApp 2,所有都在SSO场景中工作,唯一的事情是我需要从WebApp 2上的SSO会话获取SAML令牌…

Got it))),PingIdentity IdP SP连接、浏览器SSO、协议设置,我有“加密整个断言”。将其设置为“None”,修复了它,我在HTTP会话中获得了我的令牌。所以有了PKI,我们用公钥(cert)加密,用私钥(key)解密。因此,不是picketlink没有正确的私钥(但我认为它有),就是这两个系统不了解如何进行PKI加密/解密

 public void handleStatusResponseType(SAML2HandlerRequest request, SAML2HandlerResponse response)
            throws ProcessingException {
        HTTPContext httpContext = (HTTPContext) request.getContext();
        ResponseType responseType = (ResponseType) request.getSAML2Object();

    (...)

    Document responseDocument = request.getRequestDocument();
            Element assertionElement =
                    DocumentUtil.getChildElement(responseDocument.getDocumentElement(),
                            new QName(JBossSAMLConstants.ASSERTION.get()));

            if (assertionElement != null) {
                try {
                    Document assertionDocument = DocumentUtil.createDocument();
                    Node clonedAssertion = assertionElement.cloneNode(true);

                    assertionDocument.adoptNode(clonedAssertion);
                    assertionDocument.appendChild(clonedAssertion);

                    String assertionAttributeName = (String) handlerConfig
                            .getParameter(GeneralConstants.ASSERTION_SESSION_ATTRIBUTE_NAME);

                    if (assertionAttributeName != null) {
                        session.setAttribute(assertionAttributeName, assertionDocument);
                    }

                    session.setAttribute(GeneralConstants.ASSERTION_SESSION_ATTRIBUTE_NAME, assertionDocument);
                } catch (ConfigurationException e) {
                    throw new ProcessingException("Could not store assertion document into session.", e);
                }
            }