Java - Генерация xml из объекта класса AuthnRequest - PullRequest
0 голосов
/ 23 января 2020

У меня проблема со сборкой XML из объекта класса AuthnRequest. Я не понимаю, почему при загрузке компоновщика builderFactory.getBuilder я всегда получаю ноль. Я использую код пакета

        <dependency>
            <groupId>org.springframework.security.extensions</groupId>
            <artifactId>spring-security-saml2-core</artifactId>
            <version>2.0.0.M31</version>
        </dependency>

, который я пытаюсь сгенерировать xml. Во-первых, если я всегда получаю ноль, и я не знаю, где проблема может быть

        XMLObjectBuilderFactory builderFactory = Configuration.getBuilderFactory();

        if (builderFactory.getBuilder(AuthnRequest.DEFAULT_ELEMENT_NAME) == null) {
            System.out.println("NULL");
        } else {
            System.out.println("Not null");
        }

        AuthnRequest authnRequest = (AuthnRequest)builderFactory.getBuilder(AuthnRequest.DEFAULT_ELEMENT_NAME).buildObject(AuthnRequest.DEFAULT_ELEMENT_NAME);
        authnRequest.setDestination(SSO_SERVICE);
        authnRequest.setIssueInstant(new DateTime());
        authnRequest.setProtocolBinding(SAMLConstants.SAML2_ARTIFACT_BINDING_URI);
        authnRequest.setAssertionConsumerServiceURL(ASSERTION_CONSUMER_SERVICE);
        authnRequest.setID("random-string-ID_" + UUID.randomUUID().toString());
        authnRequest.setVersion(SAMLVersion.VERSION_20);

        Issuer issuer = new IssuerBuilder().buildObject();
        issuer.setValue(SP_ENTITY_ID);
        authnRequest.setIssuer(issuer);

        NameIDPolicy policy = new NameIDPolicyBuilder().buildObject();
        policy.setAllowCreate(true);
        policy.setFormat(NameIDType.UNSPECIFIED);

        authnRequest.setNameIDPolicy(policy);

        Signature signature = new SignatureBuilder().buildObject();
        //signature.setSigningCredential();
        signature.setSignatureAlgorithm(SignatureConstants.ALGO_ID_SIGNATURE_RSA_SHA256);
        signature.setCanonicalizationAlgorithm(SignatureConstants.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
        authnRequest.setSignature(signature);
        ((SAMLObjectContentReference)signature.getContentReferences().get(0)).setDigestAlgorithm(EncryptionConstants.ALGO_ID_DIGEST_SHA256);

        try {
            org.opensaml.xml.Configuration.getMarshallerFactory().getMarshaller(AuthnRequest.DEFAULT_ELEMENT_NAME).marshall(authnRequest);
        } catch (MarshallingException e) {
            throw new RuntimeException(e);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...