private void writeFederationMetadata()

in plugins/core/src/main/java/org/apache/cxf/fediz/core/metadata/MetadataWriter.java [145:215]


    private void writeFederationMetadata(
        XMLStreamWriter writer,
        FedizContext config,
        String serviceURL
    ) throws XMLStreamException {

        writer.writeStartElement("md", "RoleDescriptor", WS_FEDERATION_NS);
        writer.writeAttribute(SCHEMA_INSTANCE_NS, "type", "fed:ApplicationServiceType");
        writer.writeAttribute("protocolSupportEnumeration", WS_FEDERATION_NS);

        writer.writeStartElement("fed", "ApplicationServiceEndpoint", WS_FEDERATION_NS);
        writer.writeStartElement("wsa", "EndpointReference", WS_ADDRESSING_NS);

        writer.writeStartElement("wsa", "Address", WS_ADDRESSING_NS);
        writer.writeCharacters(serviceURL);

        writer.writeEndElement(); // Address
        writer.writeEndElement(); // EndpointReference
        writer.writeEndElement(); // ApplicationServiceEndpoint

        // create target scope element
        writer.writeStartElement("fed", "TargetScope", WS_FEDERATION_NS);

        List<String> audienceUris = config.getAudienceUris();
        if (audienceUris != null) {
            for (String uri : audienceUris) {
                writer.writeStartElement("wsa", "EndpointReference", WS_ADDRESSING_NS);
                writer.writeStartElement("wsa", "Address", WS_ADDRESSING_NS);
                writer.writeCharacters(uri);
                writer.writeEndElement(); // Address
                writer.writeEndElement(); // EndpointReference
            }
        }
        writer.writeEndElement(); // TargetScope

        FederationProtocol protocol = (FederationProtocol)config.getProtocol();
        List<Claim> claims = protocol.getClaimTypesRequested();
        if (claims != null && !claims.isEmpty()) {

            // create ClaimsType section
            writer.writeStartElement("fed", "ClaimTypesRequested", WS_FEDERATION_NS);
            for (Claim claim : claims) {

                writer.writeStartElement("auth", "ClaimType", WS_FEDERATION_NS);
                writer.writeAttribute("Uri", claim.getType());
                if (claim.isOptional()) {
                    writer.writeAttribute("Optional", "true");
                } else {
                    writer.writeAttribute("Optional", "false");
                }

                writer.writeEndElement(); // ClaimType

            }
            writer.writeEndElement(); // ClaimsTypeRequested
        }
        // create sign in endpoint section

        writer.writeStartElement("fed", "PassiveRequestorEndpoint", WS_FEDERATION_NS);
        writer.writeStartElement("wsa", "EndpointReference", WS_ADDRESSING_NS);
        writer.writeStartElement("wsa", "Address", WS_ADDRESSING_NS);

        writer.writeCharacters(serviceURL);

        // writer.writeCharacters("http://host:port/url Issuer from config");
        writer.writeEndElement(); // Address
        writer.writeEndElement(); // EndpointReference

        writer.writeEndElement(); // PassiveRequestorEndpoint
        writer.writeEndElement(); // RoleDescriptor
    }