/** * {@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(KeycloakExtension.PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(RealmDefinition.TAG_NAME)) { readRealm(reader, list); } else if (reader.getLocalName().equals(SecureDeploymentDefinition.TAG_NAME)) { readDeployment(reader, list); } else if (reader.getLocalName().equals(SecureServerDefinition.TAG_NAME)) { readSecureServer(reader, list); } } }
private void readSecureResource(String tagName, AbstractAdapterConfigurationDefinition resource, XMLExtendedStreamReader reader, List<ModelNode> resourcesToAdd) throws XMLStreamException { String name = readNameAttribute(reader); ModelNode addSecureDeployment = new ModelNode(); addSecureDeployment.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(tagName, name)); addSecureDeployment.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); List<ModelNode> credentialsToAdd = new ArrayList<ModelNode>(); List<ModelNode> redirectRulesToAdd = new ArrayList<ModelNode>(); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String localName = reader.getLocalName(); if (localName.equals(CredentialDefinition.TAG_NAME)) { readCredential(reader, addr, credentialsToAdd); continue; } if (localName.equals(RedirecRewritetRuleDefinition.TAG_NAME)) { readRewriteRule(reader, addr, redirectRulesToAdd); continue; } SimpleAttributeDefinition def = resource.lookup(localName); if (def == null) throw new XMLStreamException("Unknown secure-deployment tag " + localName); def.parseAndSetParameter(reader.getElementText(), addSecureDeployment, reader); } // Must add credentials after the deployment is added. resourcesToAdd.add(addSecureDeployment); resourcesToAdd.addAll(credentialsToAdd); resourcesToAdd.addAll(redirectRulesToAdd); }
/** * {@inheritDoc} */ @Override public void writeContent(final XMLExtendedStreamWriter writer, final SubsystemMarshallingContext context) throws XMLStreamException { context.startSubsystemElement(KeycloakExtension.NAMESPACE, false); writeRealms(writer, context); writeSecureDeployments(writer, context); writeSecureServers(writer, context); writer.writeEndElement(); }
/** * {@inheritDoc} */ @Override public void writeContent(final XMLExtendedStreamWriter writer, final SubsystemMarshallingContext context) throws XMLStreamException { context.startSubsystemElement(KeycloakExtension.NAMESPACE, false); writeRealms(writer, context); writeSecureDeployments(writer, context); writer.writeEndElement(); }
/** * {@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(KeycloakExtension.PATH_SUBSYSTEM)); list.add(addKeycloakSub); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { if (reader.getLocalName().equals(RealmDefinition.TAG_NAME)) { readRealm(reader, list); } else if (reader.getLocalName().equals(SecureDeploymentDefinition.TAG_NAME)) { readDeployment(reader, list); } } }
private void readDeployment(XMLExtendedStreamReader reader, List<ModelNode> resourcesToAdd) throws XMLStreamException { String name = readNameAttribute(reader); ModelNode addSecureDeployment = new ModelNode(); addSecureDeployment.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(SecureDeploymentDefinition.TAG_NAME, name)); addSecureDeployment.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); List<ModelNode> credentialsToAdd = new ArrayList<ModelNode>(); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); if (tagName.equals(CredentialDefinition.TAG_NAME)) { readCredential(reader, addr, credentialsToAdd); continue; } SimpleAttributeDefinition def = SecureDeploymentDefinition.lookup(tagName); if (def == null) throw new XMLStreamException("Unknown secure-deployment tag " + tagName); def.parseAndSetParameter(reader.getElementText(), addSecureDeployment, reader); } /** * TODO need to check realm-ref first. if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addSecureDeployment)) { //TODO: externalize the message throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); } */ // Must add credentials after the deployment is added. resourcesToAdd.add(addSecureDeployment); resourcesToAdd.addAll(credentialsToAdd); }
private void readRealm(XMLExtendedStreamReader reader, List<ModelNode> list) throws XMLStreamException { String realmName = readNameAttribute(reader); ModelNode addRealm = new ModelNode(); addRealm.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(RealmDefinition.TAG_NAME, realmName)); addRealm.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); SimpleAttributeDefinition def = RealmDefinition.lookup(tagName); if (def == null) throw new XMLStreamException("Unknown realm tag " + tagName); def.parseAndSetParameter(reader.getElementText(), addRealm, reader); } list.add(addRealm); }
public void readCredential(XMLExtendedStreamReader reader, PathAddress parent, List<ModelNode> credentialsToAdd) throws XMLStreamException { String name = readNameAttribute(reader); ModelNode addCredential = getCredentialToAdd(parent, name, textValue); credentialsToAdd.add(addCredential); } else { for (Map.Entry<String, String> entry : values.entrySet()) { ModelNode addCredential = getCredentialToAdd(parent, name + "." + entry.getKey(), entry.getValue()); credentialsToAdd.add(addCredential);
public void readRewriteRule(XMLExtendedStreamReader reader, PathAddress parent, List<ModelNode> rewriteRuleToToAdd) throws XMLStreamException { String name = readNameAttribute(reader); ModelNode addRedirectRule = getRedirectRuleToAdd(parent, name, textValue); rewriteRuleToToAdd.add(addRedirectRule); } else { for (Map.Entry<String, String> entry : values.entrySet()) { ModelNode addRedirectRule = getRedirectRuleToAdd(parent, name + "." + entry.getKey(), entry.getValue()); rewriteRuleToToAdd.add(addRedirectRule);
writeCharacters(writer, (String) value); } else { Map<String, String> credentialProps = (Map<String, String>) value; for (Map.Entry<String, String> prop : credentialProps.entrySet()) { writer.writeStartElement(prop.getKey()); writeCharacters(writer, prop.getValue()); writer.writeEndElement();
private void writeSecureResource(String tagName, List<SimpleAttributeDefinition> attributes, XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { if (!context.getModelNode().get(tagName).isDefined()) { return; } for (Property deployment : context.getModelNode().get(tagName).asPropertyList()) { writer.writeStartElement(tagName); writer.writeAttribute("name", deployment.getName()); ModelNode deploymentElements = deployment.getValue(); for (AttributeDefinition element : attributes) { element.marshallAsElement(deploymentElements, writer); } ModelNode credentials = deploymentElements.get(CredentialDefinition.TAG_NAME); if (credentials.isDefined()) { writeCredentials(writer, credentials); } ModelNode redirectRewriteRule = deploymentElements.get(RedirecRewritetRuleDefinition.TAG_NAME); if (redirectRewriteRule.isDefined()) { writeRedirectRules(writer, redirectRewriteRule); } writer.writeEndElement(); } }
private void writeSecureDeployments(XMLExtendedStreamWriter writer, SubsystemMarshallingContext context) throws XMLStreamException { if (!context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).isDefined()) { return; } for (Property deployment : context.getModelNode().get(SecureDeploymentDefinition.TAG_NAME).asPropertyList()) { writer.writeStartElement(SecureDeploymentDefinition.TAG_NAME); writer.writeAttribute("name", deployment.getName()); ModelNode deploymentElements = deployment.getValue(); for (AttributeDefinition element : SecureDeploymentDefinition.ALL_ATTRIBUTES) { element.marshallAsElement(deploymentElements, writer); } ModelNode credentials = deploymentElements.get(CredentialDefinition.TAG_NAME); if (credentials.isDefined()) { writeCredentials(writer, credentials); } writer.writeEndElement(); } }
private void readRealm(XMLExtendedStreamReader reader, List<ModelNode> list) throws XMLStreamException { String realmName = readNameAttribute(reader); ModelNode addRealm = new ModelNode(); addRealm.get(ModelDescriptionConstants.OP).set(ModelDescriptionConstants.ADD); PathAddress addr = PathAddress.pathAddress(PathElement.pathElement(ModelDescriptionConstants.SUBSYSTEM, KeycloakExtension.SUBSYSTEM_NAME), PathElement.pathElement(RealmDefinition.TAG_NAME, realmName)); addRealm.get(ModelDescriptionConstants.OP_ADDR).set(addr.toModelNode()); while (reader.hasNext() && nextTag(reader) != END_ELEMENT) { String tagName = reader.getLocalName(); SimpleAttributeDefinition def = RealmDefinition.lookup(tagName); if (def == null) throw new XMLStreamException("Unknown realm tag " + tagName); def.parseAndSetParameter(reader.getElementText(), addRealm, reader); } if (!SharedAttributeDefinitons.validateTruststoreSetIfRequired(addRealm)) { //TODO: externalize the message throw new XMLStreamException("truststore and truststore-password must be set if ssl-required is not none and disable-trust-maanger is false."); } list.add(addRealm); }
public void readCredential(XMLExtendedStreamReader reader, PathAddress parent, List<ModelNode> credentialsToAdd) throws XMLStreamException { String name = readNameAttribute(reader); ModelNode addCredential = getCredentialToAdd(parent, name, textValue); credentialsToAdd.add(addCredential); } else { for (Map.Entry<String, String> entry : values.entrySet()) { ModelNode addCredential = getCredentialToAdd(parent, name + "." + entry.getKey(), entry.getValue()); credentialsToAdd.add(addCredential);
private void writeRedirectRules(XMLExtendedStreamWriter writer, ModelNode redirectRules) throws XMLStreamException { Map<String, Object> parsed = new LinkedHashMap<>(); for (Property redirectRule : redirectRules.asPropertyList()) { String ruleName = redirectRule.getName(); String ruleValue = redirectRule.getValue().get(RedirecRewritetRuleDefinition.VALUE.getName()).asString(); parsed.put(ruleName, ruleValue); } for (Map.Entry<String, Object> entry : parsed.entrySet()) { writer.writeStartElement(RedirecRewritetRuleDefinition.TAG_NAME); writer.writeAttribute("name", entry.getKey()); Object value = entry.getValue(); if (value instanceof String) { writeCharacters(writer, (String) value); } else { Map<String, String> redirectRulesProps = (Map<String, String>) value; for (Map.Entry<String, String> prop : redirectRulesProps.entrySet()) { writer.writeStartElement(prop.getKey()); writeCharacters(writer, prop.getValue()); writer.writeEndElement(); } } writer.writeEndElement(); } }
writeCharacters(writer, (String) value); } else { Map<String, String> credentialProps = (Map<String, String>) value; for (Map.Entry<String, String> prop : credentialProps.entrySet()) { writer.writeStartElement(prop.getKey()); writeCharacters(writer, prop.getValue()); writer.writeEndElement();