void readServiceProvider(XMLExtendedStreamReader reader, List<ModelNode> list, PathAddress parentAddr) throws XMLStreamException { String entityId = readRequiredAttribute(reader, Constants.XML.ENTITY_ID); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); readKeys(list, reader, addr); } else if (Constants.XML.PRINCIPAL_NAME_MAPPING.equals(tagName)) { readPrincipalNameMapping(addServiceProvider, reader); } else if (Constants.XML.ROLE_IDENTIFIERS.equals(tagName)) { readRoleIdentifiers(addServiceProvider, reader); } else if (Constants.XML.IDENTITY_PROVIDER.equals(tagName)) { readIdentityProvider(list, reader, addr); } else { throw ParseUtils.unexpectedElement(reader);
private String getXML(DeploymentUnit deploymentUnit) throws XMLStreamException { ModelNode node = Configuration.INSTANCE.getSecureDeployment(deploymentUnit); if (node != null) { KeycloakSubsystemParser writer = new KeycloakSubsystemParser(); ByteArrayOutputStream output = new ByteArrayOutputStream(); XMLExtendedStreamWriter streamWriter = new FormattingXMLStreamWriter(XMLOutputFactory.newInstance().createXMLStreamWriter(output)); try { streamWriter.writeStartElement("keycloak-saml-adapter"); writer.writeSps(streamWriter, node); streamWriter.writeEndElement(); } finally { streamWriter.close(); } return new String(output.toByteArray(), Charset.forName("utf-8")); } return null; }
void readKeys(List<ModelNode> list, XMLExtendedStreamReader reader, PathAddress parentAddr) throws XMLStreamException { ParseUtils.requireNoAttributes(reader); List<ModelNode> keyList = new LinkedList<>(); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (!Constants.XML.KEY.equals(tagName)) { throw ParseUtils.unexpectedElement(reader); } readKey(keyList, reader, parentAddr); } list.addAll(keyList); }
void readSecureDeployment(XMLExtendedStreamReader reader, List<ModelNode> list) throws XMLStreamException { String name = readRequiredAttribute(reader, Constants.XML.NAME); PathAddress addr = PathAddress.pathAddress( PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakSamlExtension.SUBSYSTEM_NAME), PathElement.pathElement(Constants.Model.SECURE_DEPLOYMENT, name)); ModelNode addSecureDeployment = Util.createAddOperation(addr); list.add(addSecureDeployment); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (tagName.equals(Constants.XML.SERVICE_PROVIDER)) { readServiceProvider(reader, list, addr); } else { throw ParseUtils.unexpectedElement(reader); } } }
void readIdentityProvider(List<ModelNode> list, XMLExtendedStreamReader reader, PathAddress parentAddr) throws XMLStreamException { String entityId = readRequiredAttribute(reader, Constants.XML.ENTITY_ID); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); readSingleSignOn(addIdentityProvider, reader); } else if (Constants.XML.SINGLE_LOGOUT.equals(tagName)) { readSingleLogout(addIdentityProvider, reader); } else if (Constants.XML.KEYS.equals(tagName)) { readKeys(list, reader, addr); } else { throw ParseUtils.unexpectedElement(reader);
void readKey(List<ModelNode> list, XMLExtendedStreamReader reader, PathAddress parentAddr) throws XMLStreamException { PathAddress addr = PathAddress.pathAddress(parentAddr, PathElement.pathElement(Constants.Model.KEY, "key-" + list.size())); ModelNode addKey = Util.createAddOperation(addr); list.add(addKey); for (int i = 0; i < reader.getAttributeCount(); i++) { String name = reader.getAttributeLocalName(i); String value = reader.getAttributeValue(i); SimpleAttributeDefinition attr = KeyDefinition.lookup(name); if (attr == null) { throw ParseUtils.unexpectedAttribute(reader, i); } attr.parseAndSetParameter(value, addKey, reader); } while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (Constants.XML.KEY_STORE.equals(tagName)) { readKeyStore(addKey, reader); } else if (Constants.XML.PRIVATE_KEY_PEM.equals(tagName) || Constants.XML.PUBLIC_KEY_PEM.equals(tagName) || Constants.XML.CERTIFICATE_PEM.equals(tagName)) { readNoAttrElementContent(KeyDefinition.lookupElement(tagName), addKey, reader); } else { throw ParseUtils.unexpectedElement(reader); } } }
void readKeyStore(ModelNode addKey, XMLExtendedStreamReader reader) throws XMLStreamException { ModelNode addKeyStore = addKey.get(Constants.Model.KEY_STORE); for (int i = 0; i < reader.getAttributeCount(); i++) { String name = reader.getAttributeLocalName(i); String value = reader.getAttributeValue(i); SimpleAttributeDefinition attr = KeyStoreDefinition.lookup(name); if (attr == null) { throw ParseUtils.unexpectedAttribute(reader, i); } attr.parseAndSetParameter(value, addKeyStore, reader); } if (!addKeyStore.hasDefined(Constants.Model.FILE) && !addKeyStore.hasDefined(Constants.Model.RESOURCE)) { throw new XMLStreamException("KeyStore element must have 'file' or 'resource' attribute set", reader.getLocation()); } if (!addKeyStore.hasDefined(Constants.Model.PASSWORD)) { throw ParseUtils.missingRequired(reader, Constants.XML.PASSWORD); } while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (Constants.XML.PRIVATE_KEY.equals(tagName)) { readPrivateKey(reader, addKeyStore); } else if (Constants.XML.CERTIFICATE.equals(tagName)) { readCertificate(reader, addKeyStore); } else { throw ParseUtils.unexpectedElement(reader); } } }
/** * {@inheritDoc} */ @Override public void readElement(final XMLExtendedStreamReader reader, final List<ModelNode> list) throws XMLStreamException { // Require no attributes ParseUtils.requireNoAttributes(reader); ModelNode addKeycloakSub = Util.createAddOperation(PathAddress.pathAddress(KeycloakSamlExtension.PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(Constants.XML.SECURE_DEPLOYMENT)) { readSecureDeployment(reader, list); } else { throw ParseUtils.unexpectedElement(reader); } } }
/** * {@inheritDoc} */ @Override public void readElement(final XMLExtendedStreamReader reader, final List<ModelNode> list) throws XMLStreamException { // Require no attributes ParseUtils.requireNoAttributes(reader); ModelNode addKeycloakSub = Util.createAddOperation(PathAddress.pathAddress(KeycloakSamlExtension.PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { } }
void readRoleIdentifiers(ModelNode addServiceProvider, XMLExtendedStreamReader reader) throws XMLStreamException { ParseUtils.requireNoAttributes(reader); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (!Constants.XML.ATTRIBUTE.equals(tagName)) { throw ParseUtils.unexpectedElement(reader); } ParseUtils.requireSingleAttribute(reader, Constants.XML.NAME); String name = ParseUtils.readStringAttributeElement(reader, Constants.XML.NAME); ServiceProviderDefinition.ROLE_ATTRIBUTES.parseAndAddParameterElement(name, addServiceProvider, reader); } }