/** * Parse Attribute value * @param xmlEventReader * @return * @throws ParsingException */ public static Object parseAttributeValue(XMLEventReader xmlEventReader) throws ParsingException { StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, JBossSAMLConstants.ATTRIBUTE_VALUE.get()); Attribute type = startElement.getAttributeByName(new QName(JBossSAMLURIConstants.XSI_NSURI.get(), "type", "xsi")); if (type == null) { return StaxParserUtil.getElementText(xmlEventReader); } String typeValue = StaxParserUtil.getAttributeValue(type); if (typeValue.contains(":string")) { return StaxParserUtil.getElementText(xmlEventReader); } throw new RuntimeException(UNKNOWN_XSI + typeValue); }
private RequestedSecurityTokenType parseRequestedSecurityTokenType(XMLEventReader xmlEventReader) throws ParsingException { RequestedSecurityTokenType requestedSecurityTokenType = new RequestedSecurityTokenType(); StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, WSTrustConstants.REQUESTED_TOKEN); XMLEvent xmlEvent = null; while (xmlEventReader.hasNext()) { xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent instanceof EndElement) { String endElementTag = StaxParserUtil.getEndElementName((EndElement) xmlEvent); if (endElementTag.equals(WSTrustConstants.REQUESTED_TOKEN)) { xmlEvent = StaxParserUtil.getNextEndElement(xmlEventReader); break; } else throw logger.parserUnknownEndElement(endElementTag); } Element tokenElement = StaxParserUtil.getDOMElement(xmlEventReader); requestedSecurityTokenType.add(tokenElement); } return requestedSecurityTokenType; }
StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, HANDLERS); XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent == null) break; if (xmlEvent instanceof EndElement) EndElement endElement = (EndElement) StaxParserUtil.getNextEvent(xmlEventReader); String endElementName = StaxParserUtil.getEndElementName(endElement); if (endElementName.equals(HANDLERS)) break; startElement = StaxParserUtil.getNextStartElement(xmlEventReader); if (startElement == null) break; String elementName = StaxParserUtil.getStartElementName(startElement); if (elementName.equals(HANDLER))
private static DSAKeyValueType parseDSAKeyValue(XMLEventReader xmlEventReader) throws ParsingException { StartElement startElement = StaxParserUtil.peekNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, WSTrustConstants.XMLDSig.DSA_KEYVALUE); Element dsaElement = StaxParserUtil.getDOMElement(xmlEventReader); return XMLSignatureUtil.getDSAKeyValue(dsaElement); }
/** * Bypass an entire XML element block from startElement to endElement * * @param xmlEventReader * @param tag Tag of the XML element that we need to bypass * @throws ParsingException */ public static void bypassElementBlock(XMLEventReader xmlEventReader, String tag) throws ParsingException { while (xmlEventReader.hasNext()) { EndElement endElement = getNextEndElement(xmlEventReader); if (endElement == null) return; if (StaxParserUtil.matches(endElement, tag)) return; } }
private IndexedEndpointType parseAssertionConsumerService(XMLEventReader xmlEventReader, StartElement startElement) throws ParsingException { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); IndexedEndpointType endpoint = parseIndexedEndpoint(xmlEventReader, startElement); EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader); StaxParserUtil.validate(endElement, JBossSAMLConstants.ASSERTION_CONSUMER_SERVICE.get()); return endpoint; }
private RequestedAuthnContextType getRequestedAuthnContextType(XMLEventReader xmlEventReader) throws ParsingException { RequestedAuthnContextType ract = new RequestedAuthnContextType(); StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, JBossSAMLConstants.REQUESTED_AUTHN_CONTEXT.get()); startElement = StaxParserUtil.getNextStartElement(xmlEventReader); String elName = StaxParserUtil.getStartElementName(startElement); if (elName.equals(JBossSAMLConstants.AUTHN_CONTEXT_CLASS_REF.get())) { String value = StaxParserUtil.getElementText(xmlEventReader); ract.addAuthnContextClassRef(value); } else throw new RuntimeException(ErrorCodes.UNKNOWN_TAG + elName); return ract; } }
private static RSAKeyValueType parseRSAKeyValue(XMLEventReader xmlEventReader) throws ParsingException { StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, WSTrustConstants.XMLDSig.RSA_KEYVALUE); xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent instanceof EndElement) { tag = StaxParserUtil.getEndElementName((EndElement) xmlEvent); if (tag.equals(WSTrustConstants.XMLDSig.RSA_KEYVALUE)) { xmlEvent = StaxParserUtil.getNextEndElement(xmlEventReader); break; } else tag = StaxParserUtil.getStartElementName(startElement); if (tag.equals(WSTrustConstants.XMLDSig.MODULUS)) { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); String text = StaxParserUtil.getElementText(xmlEventReader); rsaKeyValue.setModulus(text.getBytes()); } else if (tag.equals(WSTrustConstants.XMLDSig.EXPONENT)) { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); String text = StaxParserUtil.getElementText(xmlEventReader); rsaKeyValue.setExponent(text.getBytes()); } else
StartElement audienceRestElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.matches(audienceRestElement, JBossSAMLConstants.AUDIENCE_RESTRICTION.get()); StartElement audienceElement = StaxParserUtil.getNextStartElement(xmlEventReader); if (!StaxParserUtil.matches(audienceElement, JBossSAMLConstants.AUDIENCE.get())) break; if (!StaxParserUtil.hasTextAhead(xmlEventReader)) throw new ParsingException(ErrorCodes.EXPECTED_TAG + "audienceValue"); String audienceValue = StaxParserUtil.getElementText(xmlEventReader); audience.addAudience(URI.create(audienceValue)); XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent instanceof EndElement) { EndElement endElement = (EndElement) xmlEvent; if (StaxParserUtil.matches(endElement, JBossSAMLConstants.AUDIENCE_RESTRICTION.get())) { StaxParserUtil.getNextEvent(xmlEventReader); // Just get the end element break; } else throw new RuntimeException(ErrorCodes.UNKNOWN_END_ELEMENT + StaxParserUtil.getEndElementName(endElement));
XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader); String elementName = StaxParserUtil.getStartElementName(startElement); if (elementName.equalsIgnoreCase(WSPolicyConstants.APPLIES_TO)) { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); startElement = StaxParserUtil.peekNextStartElement(xmlEventReader); appliesTo.addAny(parsedObject); EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader); StaxParserUtil.validate(endElement, WSPolicyConstants.APPLIES_TO); return appliesTo; StaxParserUtil.getNextEvent(xmlEventReader);
protected Handler parseHandler(XMLEventReader xmlEventReader, StartElement startElement) throws ParsingException { XMLEvent xmlEvent = null; Handler handlerType = new Handler(); // parse and set the ClassName element attributes. QName attributeQName = new QName("", CLASS); Attribute attribute = startElement.getAttributeByName(attributeQName); if (attribute != null) handlerType.setClazz(StaxParserUtil.getAttributeValue(attribute)); while (xmlEventReader.hasNext()) { xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent == null) break; if (xmlEvent instanceof EndElement) { EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader); String endElementName = StaxParserUtil.getEndElementName(endElement); if (endElementName.equals(HANDLER)) break; else continue; } startElement = StaxParserUtil.getNextStartElement(xmlEventReader); String startElementName = StaxParserUtil.getStartElementName(startElement); if (startElementName.equals(OPTION)) { KeyValueType auth = new KeyValueType(); populateKeyValueType(auth, startElement); handlerType.add(auth); } } return handlerType; }
/** * @see {@link ParserNamespaceSupport#parse(XMLEventReader)} */ public Object parse(XMLEventReader xmlEventReader) throws ParsingException { StaxParserUtil.getNextEvent(xmlEventReader); RequestSecurityTokenCollection requestCollection = new RequestSecurityTokenCollection(); // Peek at the next event while (xmlEventReader.hasNext()) { StartElement peekedElement = StaxParserUtil.peekNextStartElement(xmlEventReader); if (peekedElement == null) break; String tag = StaxParserUtil.getStartElementName(peekedElement); if (WSTrustConstants.RST.equalsIgnoreCase(tag)) { WSTRequestSecurityTokenParser rstParser = new WSTRequestSecurityTokenParser(); RequestSecurityToken rst = (RequestSecurityToken) rstParser.parse(xmlEventReader); requestCollection.addRequestSecurityToken(rst); } } return requestCollection; }
protected void parseCommonElements(StartElement startElement, XMLEventReader xmlEventReader, RequestAbstractType request) throws ParsingException { if (startElement == null) throw logger.parserNullStartElement(); String elementName = StaxParserUtil.getStartElementName(startElement); if (JBossSAMLConstants.ISSUER.get().equals(elementName)) { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); NameIDType issuer = new NameIDType(); issuer.setValue(StaxParserUtil.getElementText(xmlEventReader)); request.setIssuer(issuer); } else if (JBossSAMLConstants.SIGNATURE.get().equals(elementName)) { request.setSignature(StaxParserUtil.getDOMElement(xmlEventReader)); } }
public static RenewingType parseRenewingType(XMLEventReader xmlEventReader) throws ParsingException { RenewingType renewingType = new RenewingType(); StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, WSTrustConstants.RENEWING); Attribute allowAttribute = startElement.getAttributeByName(new QName(WSTrustConstants.ALLOW)); if (allowAttribute != null) { renewingType.setAllow(Boolean.parseBoolean(StaxParserUtil.getAttributeValue(allowAttribute))); } Attribute okAttribute = startElement.getAttributeByName(new QName(WSTrustConstants.OK)); if (allowAttribute != null) { renewingType.setOK(Boolean.parseBoolean(StaxParserUtil.getAttributeValue(okAttribute))); } EndElement endElement = StaxParserUtil.getNextEndElement(xmlEventReader); StaxParserUtil.validate(endElement, WSTrustConstants.RENEWING); return renewingType; }
/** * @see IMetadataProvider#getMetaData() */ public EntityDescriptorType getMetaData() { if (this.metadataFileStream == null) throw new RuntimeException(ErrorCodes.INJECTED_VALUE_MISSING + "Metadata file"); try { SAMLEntityDescriptorParser parser = new SAMLEntityDescriptorParser(); return (EntityDescriptorType) parser.parse(StaxParserUtil.getXMLEventReader(metadataFileStream)); } catch (Exception e) { throw new RuntimeException(e); } }
public Object parse(XMLEventReader xmlEventReader) throws ParsingException { StartElement startElement = StaxParserUtil.peekNextStartElement(xmlEventReader); if (StaxParserUtil.getStartElementName(startElement).equals(IDP)) return parseIDPConfiguration(xmlEventReader); if (StaxParserUtil.getStartElementName(startElement).equals(SP)) return parseSPConfiguration(xmlEventReader); return parseHandlers(xmlEventReader); }
private RequestedAttributeType parseRequestedAttributeType(XMLEventReader xmlEventReader, StartElement startElement) throws ParsingException { startElement = StaxParserUtil.getNextStartElement(xmlEventReader); StaxParserUtil.validate(startElement, JBossSAMLConstants.REQUESTED_ATTRIBUTE.get()); RequestedAttributeType attributeType = null; Attribute name = startElement.getAttributeByName(new QName(JBossSAMLConstants.NAME.get())); if (name == null) throw logger.parserRequiredAttribute("Name"); attributeType = new RequestedAttributeType(StaxParserUtil.getAttributeValue(name)); Attribute isRequired = startElement.getAttributeByName(new QName(JBossSAMLConstants.IS_REQUIRED.get())); if (isRequired != null) { attributeType.setIsRequired(Boolean.parseBoolean(StaxParserUtil.getAttributeValue(isRequired))); } SAMLParserUtil.parseAttributeType(xmlEventReader, startElement, JBossSAMLConstants.REQUESTED_ATTRIBUTE.get(), attributeType); return attributeType; }
/** * @see {@link ParserNamespaceSupport#parse(XMLEventReader)} */ public Object parse(XMLEventReader xmlEventReader) throws ParsingException { while (xmlEventReader.hasNext()) { XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader); if (xmlEvent instanceof StartElement) { StartElement startElement = (StartElement) xmlEvent; String elementName = StaxParserUtil.getStartElementName(startElement); if (elementName.equalsIgnoreCase(WSTrustConstants.RST_COLLECTION)) { WSTRequestSecurityTokenCollectionParser wstrcoll = new WSTRequestSecurityTokenCollectionParser(); return wstrcoll.parse(xmlEventReader); } else if (elementName.equalsIgnoreCase(WSTrustConstants.RST)) { WSTRequestSecurityTokenParser wst = new WSTRequestSecurityTokenParser(); return wst.parse(xmlEventReader); } else if (elementName.equalsIgnoreCase(WSTrustConstants.RSTR_COLLECTION)) { WSTRequestSecurityTokenResponseCollectionParser wstrcoll = new WSTRequestSecurityTokenResponseCollectionParser(); return wstrcoll.parse(xmlEventReader); } else if (elementName.equalsIgnoreCase(WSTrustConstants.RSTR)) { WSTRequestSecurityTokenResponseParser wst = new WSTRequestSecurityTokenResponseParser(); return wst.parse(xmlEventReader); } throw logger.parserFailed(elementName); } else { StaxParserUtil.getNextEvent(xmlEventReader); } } throw logger.parserFailed(WSTrustConstants.BASE_NAMESPACE); }
private LocalizedNameType getLocalizedName(XMLEventReader xmlEventReader, StartElement startElement) throws ParsingException { Attribute lang = startElement.getAttributeByName(new QName(JBossSAMLURIConstants.XML.get(), "lang")); String langVal = StaxParserUtil.getAttributeValue(lang); LocalizedNameType localName = new LocalizedNameType(langVal); localName.setValue(StaxParserUtil.getElementText(xmlEventReader)); return localName; }
/** * Get the Attribute value * * @param startElement * @param tag localpart of the qname of the attribute * @return */ public static String getAttributeValue(StartElement startElement, String tag) { String result = null; Attribute attr = startElement.getAttributeByName(new QName(tag)); if (attr != null) result = getAttributeValue(attr); return result; }