[jboss-cvs] Picketlink SVN: r1038 - in federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers: util and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jun 27 13:30:41 EDT 2011


Author: anil.saldhana at jboss.com
Date: 2011-06-27 13:30:40 -0400 (Mon, 27 Jun 2011)
New Revision: 1038

Modified:
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAML11AssertionParser.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAML11ParserUtil.java
   federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAMLParserUtil.java
Log:
PLFED-191: saml11 parsing

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAML11AssertionParser.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAML11AssertionParser.java	2011-06-27 17:29:49 UTC (rev 1037)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/saml/SAML11AssertionParser.java	2011-06-27 17:30:40 UTC (rev 1038)
@@ -34,7 +34,6 @@
 import org.picketlink.identity.federation.core.exceptions.ProcessingException;
 import org.picketlink.identity.federation.core.parsers.ParserNamespaceSupport;
 import org.picketlink.identity.federation.core.parsers.util.SAML11ParserUtil;
-import org.picketlink.identity.federation.core.parsers.util.SAMLParserUtil;
 import org.picketlink.identity.federation.core.parsers.util.StaxParserUtil;
 import org.picketlink.identity.federation.core.saml.v1.SAML11Constants;
 import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLConstants;
@@ -145,7 +144,7 @@
          else if (SAML11Constants.AUTHENTICATION_STATEMENT.equals(tag))
          {
             startElement = (StartElement) xmlEvent;
-            SAML11AuthenticationStatementType authStat = SAMLParserUtil.parseAuthenticationStatement(xmlEventReader);
+            SAML11AuthenticationStatementType authStat = SAML11ParserUtil.parseAuthenticationStatement(xmlEventReader);
             assertion.add(authStat);
          }
          else if (SAML11Constants.ATTRIBUTE_STATEMENT.equalsIgnoreCase(tag))

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAML11ParserUtil.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAML11ParserUtil.java	2011-06-27 17:29:49 UTC (rev 1037)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAML11ParserUtil.java	2011-06-27 17:30:40 UTC (rev 1038)
@@ -41,10 +41,14 @@
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11AttributeStatementType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11AttributeType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11AudienceRestrictionCondition;
+import org.picketlink.identity.federation.saml.v1.assertion.SAML11AuthenticationStatementType;
+import org.picketlink.identity.federation.saml.v1.assertion.SAML11AuthorityBindingType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11AuthorizationDecisionStatementType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11ConditionsType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11DecisionType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectConfirmationType;
+import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectLocalityType;
+import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectStatementType;
 import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectType;
 import org.picketlink.identity.federation.saml.v1.protocol.SAML11AttributeQueryType;
 import org.picketlink.identity.federation.saml.v1.protocol.SAML11AuthenticationQueryType;
@@ -64,7 +68,120 @@
  */
 public class SAML11ParserUtil
 {
+
    /**
+    * Parse the AuthnStatement inside the assertion
+    * @param xmlEventReader
+    * @return
+    * @throws ParsingException
+    */
+   public static SAML11AuthenticationStatementType parseAuthenticationStatement(XMLEventReader xmlEventReader)
+         throws ParsingException
+   {
+      StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader);
+
+      StaxParserUtil.validate(startElement, SAML11Constants.AUTHENTICATION_STATEMENT);
+
+      Attribute authMethod = startElement.getAttributeByName(new QName(SAML11Constants.AUTHENTICATION_METHOD));
+      if (authMethod == null)
+         throw new ParsingException(SAML11Constants.AUTHENTICATION_METHOD + " attribute needed");
+
+      Attribute authInstant = startElement.getAttributeByName(new QName(SAML11Constants.AUTHENTICATION_INSTANT));
+      if (authInstant == null)
+         throw new ParsingException(SAML11Constants.AUTHENTICATION_INSTANT + " attribute needed");
+
+      SAML11AuthenticationStatementType authStat = new SAML11AuthenticationStatementType(URI.create(StaxParserUtil
+            .getAttributeValue(authMethod)), XMLTimeUtil.parse(StaxParserUtil.getAttributeValue(authInstant)));
+
+      while (xmlEventReader.hasNext())
+      {
+         XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader);
+         if (xmlEvent == null)
+            break;
+
+         if (xmlEvent instanceof EndElement)
+         {
+            xmlEvent = StaxParserUtil.getNextEvent(xmlEventReader);
+            EndElement endElement = (EndElement) xmlEvent;
+            String endElementTag = StaxParserUtil.getEndElementName(endElement);
+            if (endElementTag.equals(SAML11Constants.AUTHENTICATION_STATEMENT))
+               break;
+            else
+               throw new RuntimeException("Unknown End Element:" + endElementTag);
+         }
+         startElement = null;
+
+         if (xmlEvent instanceof StartElement)
+         {
+            startElement = (StartElement) xmlEvent;
+         }
+         else
+         {
+            startElement = StaxParserUtil.peekNextStartElement(xmlEventReader);
+         }
+         if (startElement == null)
+            break;
+
+         String tag = StaxParserUtil.getStartElementName(startElement);
+
+         if (JBossSAMLConstants.SUBJECT.get().equalsIgnoreCase(tag))
+         {
+            SAML11SubjectParser subjectParser = new SAML11SubjectParser();
+            SAML11SubjectType subject = (SAML11SubjectType) subjectParser.parse(xmlEventReader);
+            SAML11SubjectStatementType subStat = new SAML11SubjectStatementType();
+            subStat.setSubject(subject);
+
+            authStat.setSubject(subject);
+         }
+         else if (JBossSAMLConstants.SUBJECT_LOCALITY.get().equals(tag))
+         {
+            startElement = StaxParserUtil.getNextStartElement(xmlEventReader);
+            SAML11SubjectLocalityType subjectLocalityType = new SAML11SubjectLocalityType();
+            Attribute address = startElement.getAttributeByName(new QName(SAML11Constants.IP_ADDRESS));
+            if (address != null)
+            {
+               subjectLocalityType.setIpAddress(StaxParserUtil.getAttributeValue(address));
+            }
+            Attribute dns = startElement.getAttributeByName(new QName(SAML11Constants.DNS_ADDRESS));
+            if (dns != null)
+            {
+               subjectLocalityType.setDnsAddress(StaxParserUtil.getAttributeValue(dns));
+            }
+            authStat.setSubjectLocality(subjectLocalityType);
+            StaxParserUtil.validate(StaxParserUtil.getNextEndElement(xmlEventReader),
+                  JBossSAMLConstants.SUBJECT_LOCALITY.get());
+         }
+         else if (SAML11Constants.AUTHORITY_BINDING.equals(tag))
+         {
+            Attribute authorityKindAttr = startElement.getAttributeByName(new QName(SAML11Constants.AUTHORITY_KIND));
+            if (authorityKindAttr == null)
+               throw new ParsingException("Required attribute AuthorityKind");
+
+            Attribute locationAttr = startElement.getAttributeByName(new QName(SAML11Constants.LOCATION));
+            if (locationAttr == null)
+               throw new ParsingException("Required attribute Location");
+            URI location = URI.create(StaxParserUtil.getAttributeValue(locationAttr));
+
+            Attribute bindingAttr = startElement.getAttributeByName(new QName(SAML11Constants.BINDING));
+            if (bindingAttr == null)
+               throw new ParsingException("Required attribute Binding");
+            URI binding = URI.create(StaxParserUtil.getAttributeValue(bindingAttr));
+
+            QName authorityKind = QName.valueOf(StaxParserUtil.getAttributeValue(authorityKindAttr));
+
+            SAML11AuthorityBindingType authorityBinding = new SAML11AuthorityBindingType(authorityKind, location,
+                  binding);
+            authStat.add(authorityBinding);
+         }
+         else
+            throw new RuntimeException("Unknown tag:" + tag + "::Location=" + startElement.getLocation());
+
+      }
+
+      return authStat;
+   }
+
+   /**
     * Parse the {@link SAML11SubjectConfirmationType}
     * @param xmlEventReader
     * @return

Modified: federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAMLParserUtil.java
===================================================================
--- federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAMLParserUtil.java	2011-06-27 17:29:49 UTC (rev 1037)
+++ federation/trunk/picketlink-fed-core/src/main/java/org/picketlink/identity/federation/core/parsers/util/SAMLParserUtil.java	2011-06-27 17:30:40 UTC (rev 1038)
@@ -35,15 +35,10 @@
 import javax.xml.stream.events.XMLEvent;
 
 import org.picketlink.identity.federation.core.exceptions.ParsingException;
-import org.picketlink.identity.federation.core.parsers.saml.SAML11SubjectParser;
-import org.picketlink.identity.federation.core.saml.v1.SAML11Constants;
 import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLConstants;
 import org.picketlink.identity.federation.core.saml.v2.constants.JBossSAMLURIConstants;
 import org.picketlink.identity.federation.core.saml.v2.util.XMLTimeUtil;
 import org.picketlink.identity.federation.core.util.StringUtil;
-import org.picketlink.identity.federation.saml.v1.assertion.SAML11AuthenticationStatementType;
-import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectStatementType;
-import org.picketlink.identity.federation.saml.v1.assertion.SAML11SubjectType;
 import org.picketlink.identity.federation.saml.v2.assertion.AttributeStatementType;
 import org.picketlink.identity.federation.saml.v2.assertion.AttributeStatementType.ASTChoiceType;
 import org.picketlink.identity.federation.saml.v2.assertion.AttributeType;
@@ -326,101 +321,6 @@
    }
 
    /**
-    * Parse the AuthnStatement inside the assertion
-    * @param xmlEventReader
-    * @return
-    * @throws ParsingException
-    */
-   public static SAML11AuthenticationStatementType parseAuthenticationStatement(XMLEventReader xmlEventReader)
-         throws ParsingException
-   {
-      StartElement startElement = StaxParserUtil.getNextStartElement(xmlEventReader);
-
-      StaxParserUtil.validate(startElement, SAML11Constants.AUTHENTICATION_STATEMENT);
-
-      Attribute authMethod = startElement.getAttributeByName(new QName(SAML11Constants.AUTHENTICATION_METHOD));
-      if (authMethod == null)
-         throw new ParsingException(SAML11Constants.AUTHENTICATION_METHOD + " attribute needed");
-
-      Attribute authInstant = startElement.getAttributeByName(new QName(SAML11Constants.AUTHENTICATION_INSTANT));
-      if (authInstant == null)
-         throw new ParsingException(SAML11Constants.AUTHENTICATION_INSTANT + " attribute needed");
-
-      SAML11AuthenticationStatementType authStat = new SAML11AuthenticationStatementType(URI.create(StaxParserUtil
-            .getAttributeValue(authMethod)), XMLTimeUtil.parse(StaxParserUtil.getAttributeValue(authInstant)));
-
-      while (xmlEventReader.hasNext())
-      {
-         XMLEvent xmlEvent = StaxParserUtil.peek(xmlEventReader);
-         if (xmlEvent == null)
-            break;
-
-         if (xmlEvent instanceof EndElement)
-         {
-            xmlEvent = StaxParserUtil.getNextEvent(xmlEventReader);
-            EndElement endElement = (EndElement) xmlEvent;
-            String endElementTag = StaxParserUtil.getEndElementName(endElement);
-            if (endElementTag.equals(SAML11Constants.AUTHENTICATION_STATEMENT))
-               break;
-            else
-               throw new RuntimeException("Unknown End Element:" + endElementTag);
-         }
-         startElement = null;
-
-         if (xmlEvent instanceof StartElement)
-         {
-            startElement = (StartElement) xmlEvent;
-         }
-         else
-         {
-            startElement = StaxParserUtil.peekNextStartElement(xmlEventReader);
-         }
-         if (startElement == null)
-            break;
-
-         String tag = StaxParserUtil.getStartElementName(startElement);
-
-         if (JBossSAMLConstants.SUBJECT.get().equalsIgnoreCase(tag))
-         {
-            SAML11SubjectParser subjectParser = new SAML11SubjectParser();
-            SAML11SubjectType subject = (SAML11SubjectType) subjectParser.parse(xmlEventReader);
-            SAML11SubjectStatementType subStat = new SAML11SubjectStatementType();
-            subStat.setSubject(subject);
-
-            authStat.setSubject(subject);
-         }
-
-         /*if (JBossSAMLConstants.SUBJECT_LOCALITY.get().equals(tag))
-         {
-            startElement = StaxParserUtil.getNextStartElement(xmlEventReader);
-            SubjectLocalityType subjectLocalityType = new SubjectLocalityType();
-            Attribute address = startElement.getAttributeByName(new QName(JBossSAMLConstants.ADDRESS.get()));
-            if (address != null)
-            {
-               subjectLocalityType.setAddress(StaxParserUtil.getAttributeValue(address));
-            }
-            Attribute dns = startElement.getAttributeByName(new QName(JBossSAMLConstants.DNS_NAME.get()));
-            if (dns != null)
-            {
-               subjectLocalityType.setDNSName(StaxParserUtil.getAttributeValue(dns));
-            }
-            authnStatementType.setSubjectLocality(subjectLocalityType);
-            StaxParserUtil.validate(StaxParserUtil.getNextEndElement(xmlEventReader),
-                  JBossSAMLConstants.SUBJECT_LOCALITY.get());
-         }
-         else if (JBossSAMLConstants.AUTHN_CONTEXT.get().equals(tag))
-         {
-            authnStatementType.setAuthnContext(parseAuthnContextType(xmlEventReader));
-         }*/
-         else
-            throw new RuntimeException("Unknown tag:" + tag + "::Location=" + startElement.getLocation());
-
-      }
-
-      return authStat;
-   }
-
-   /**
     * Parse a {@code NameIDType}
     * @param xmlEventReader
     * @return



More information about the jboss-cvs-commits mailing list