[jboss-cvs] JBossAS SVN: r71681 - in projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml: servlets and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Apr 3 03:13:36 EDT 2008
Author: anil.saldhana at jboss.com
Date: 2008-04-03 03:13:36 -0400 (Thu, 03 Apr 2008)
New Revision: 71681
Modified:
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImpl.java
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImplBuilder.java
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeMarshaller.java
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeUnMarshaller.java
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/servlets/SAMLXACMLServlet.java
projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/types/XACMLAuthzDecisionStatementType.java
Log:
changes to the servlet and marshallers
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImpl.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImpl.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImpl.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -23,11 +23,18 @@
import java.util.List;
+import org.jboss.security.xacml.interfaces.ElementMappingType;
import org.jboss.security.xacml.interfaces.RequestContext;
import org.jboss.security.xacml.interfaces.ResponseContext;
import org.jboss.security.xacml.saml.integration.opensaml.types.XACMLAuthzDecisionStatementType;
import org.opensaml.common.impl.AbstractSAMLObject;
+import org.opensaml.saml2.core.Statement;
import org.opensaml.xml.XMLObject;
+import org.opensaml.xml.util.XMLConstants;
+import org.opensaml.xml.util.XMLHelper;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
/**
@@ -40,7 +47,8 @@
implements XACMLAuthzDecisionStatementType
{
private RequestContext requestContext;
- private ResponseContext responseContext;
+ private ResponseContext responseContext;
+ private Document rootDocument;
/*
* Constructor.
@@ -73,11 +81,47 @@
public void setRequest(RequestContext request)
{
this.requestContext = request;
- }
-
- /** {@inheritDoc} */
- public List<XMLObject> getOrderedChildren()
+ }
+
+ public Document getOwnerDocument()
{
- throw new RuntimeException("Not implemented:getOrderedChildren()");
+ return this.rootDocument;
}
-}
+
+ public void setOwnerDocument(Document doc)
+ {
+ this.rootDocument = doc;
+ }
+
+ public List<XMLObject> getOrderedChildren()
+ {
+ return null;
+ }
+
+ /**
+ * @see ElementMappingType#asElement(root)
+ */
+ public Element asElement(Document root)
+ {
+ if(root == null)
+ throw new IllegalArgumentException("root is null");
+
+ /**
+ <saml:Statement xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
+ xsi:type="xacml-samlp:XACMLAuthzDecisionStatement"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xacml-samlp="urn:oasis:xacml:2.0:saml:protocol:schema:os"
+ xmlns:xacml-saml="urn:oasis:names:tc:xacml:2.0:saml:assertion:schema:os" >
+ */
+ Element element = XMLHelper.constructElement(root,
+ Statement.DEFAULT_ELEMENT_NAME);
+
+ //Set the xsi:type
+ Attr xsiAttr = XMLHelper.constructAttribute(root,
+ XMLConstants.XSI_NS, "type", XMLConstants.XSI_PREFIX);
+ xsiAttr.setTextContent("xacml-samlp:XACMLAuthzDecisionStatement");
+ element.setAttributeNodeNS(xsiAttr);
+
+ return element;
+ }
+}
\ No newline at end of file
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImplBuilder.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImplBuilder.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeImplBuilder.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -49,7 +49,7 @@
@Override
public XACMLAuthzDecisionStatementType buildObject()
- {
+ {
return null;
}
}
\ No newline at end of file
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeMarshaller.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeMarshaller.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeMarshaller.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -21,13 +21,18 @@
*/
package org.jboss.security.xacml.saml.integration.opensaml.impl;
+import org.jboss.security.xacml.interfaces.RequestContext;
+import org.jboss.security.xacml.interfaces.ResponseContext;
+import org.jboss.security.xacml.saml.integration.opensaml.types.XACMLAuthzDecisionStatementType;
import org.opensaml.common.impl.AbstractSAMLObjectMarshaller;
import org.opensaml.xml.XMLObject;
import org.opensaml.xml.io.MarshallingException;
+import org.opensaml.xml.util.XMLHelper;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
/**
- *
+ * Marshaller for XACMLzDecisionStatementType
* @author Anil.Saldhana at redhat.com
* @since Apr 2, 2008
* @version $Revision$
@@ -38,7 +43,32 @@
public Element marshall(XMLObject xmlObject, Element parentElement)
throws MarshallingException
{
- return super.marshall(xmlObject, parentElement);
- }
-
+ XACMLAuthzDecisionStatementType xacmlType = (XACMLAuthzDecisionStatementType) xmlObject;
+
+ Element xacmlDecisionElement = xacmlType.asElement(parentElement.getOwnerDocument());
+
+ parentElement.appendChild(xacmlDecisionElement);
+
+ RequestContext requestContext = xacmlType.getRequest();
+ if(requestContext != null)
+ {
+ Node requestRoot = requestContext.getDocumentElement();
+ if(requestRoot != null)
+ {
+ XMLHelper.adoptElement((Element) requestRoot, parentElement.getOwnerDocument());
+ xacmlDecisionElement.appendChild(requestRoot);
+ }
+ }
+ ResponseContext responseContext = xacmlType.getResponse();
+ if(responseContext != null)
+ {
+ Node responseRoot = responseContext.getDocumentElement();
+ if(responseRoot != null)
+ {
+ XMLHelper.adoptElement((Element) responseRoot, parentElement.getOwnerDocument());
+ xacmlDecisionElement.appendChild(responseRoot);
+ }
+ }
+ return parentElement;
+ }
}
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeUnMarshaller.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeUnMarshaller.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/impl/XACMLAuthzDecisionStatementTypeUnMarshaller.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -34,7 +34,7 @@
import org.w3c.dom.Element;
/**
- *
+ * Unmarshaller for XACMLAuthzDecisionStatementType
* @author Anil.Saldhana at redhat.com
* @since Apr 2, 2008
* @version $Revision$
@@ -88,7 +88,8 @@
{
throw new RuntimeException(e);
}
- xacmlAuthzDecisionStatementType.setRequest(requestContext);
+ xacmlAuthzDecisionStatementType.setRequest(requestContext);
+ xacmlAuthzDecisionStatementType.setOwnerDocument(childElement.getOwnerDocument());
}
else
if(childElement.getLocalName().equals("Response")
@@ -105,6 +106,7 @@
throw new RuntimeException(e);
}
xacmlAuthzDecisionStatementType.setResponse(responseContext);
+ xacmlAuthzDecisionStatementType.setOwnerDocument(childElement.getOwnerDocument());
}
else
super.unmarshallChildElement(xmlObject, childElement);
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/servlets/SAMLXACMLServlet.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/servlets/SAMLXACMLServlet.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/servlets/SAMLXACMLServlet.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -23,6 +23,12 @@
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
@@ -123,9 +129,6 @@
logXMLObject(samlObject);
XACMLAuthzDecisionQueryType xacmlRequest = (XACMLAuthzDecisionQueryType)samlObject;
- RequestContext requestType = xacmlRequest.getRequest();
- if(requestType == null)
- throw new RuntimeException("xacml request is null");
RequestContext requestContext = xacmlRequest.getRequest();
if(requestContext == null)
@@ -156,7 +159,21 @@
assertionImpl.getStatements().add(decision);
samlResponse.getAssertions().add(assertionImpl);
- logXMLObject(samlResponse);
+ //logXMLObject(samlResponse);
+
+ MarshallerFactory marshallerFactory = Configuration.getMarshallerFactory();
+ Marshaller samlResponseMarshaller = marshallerFactory.getMarshaller(samlResponse);
+
+
+ response.setContentType("text/xml;charset=utf-8");;
+ OutputStream os = response.getOutputStream();
+ OutputStreamWriter osw = new OutputStreamWriter(os , "UTF-8");
+ PrintWriter pw = new PrintWriter(osw);
+
+ String resp = XMLHelper.nodeToString(samlResponseMarshaller.marshall(samlResponse));
+ log(resp);
+ pw.print(resp);
+ pw.flush();
}
catch (Exception e)
{
@@ -200,9 +217,18 @@
}
}
- private PolicyDecisionPoint getPDP()
+ private PolicyDecisionPoint getPDP() throws PrivilegedActionException
{
- InputStream is = getServletContext().getResourceAsStream("policyConfig.xml");
+ ClassLoader tcl = AccessController.doPrivileged(new PrivilegedExceptionAction<ClassLoader>()
+ {
+ public ClassLoader run() throws Exception
+ {
+ return Thread.currentThread().getContextClassLoader();
+ }
+ });
+ InputStream is = tcl.getResourceAsStream("policyConfig.xml");
+ if(is == null)
+ throw new IllegalStateException("policyConfig.xml could not be located");
return new JBossPDP(is);
}
}
\ No newline at end of file
Modified: projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/types/XACMLAuthzDecisionStatementType.java
===================================================================
--- projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/types/XACMLAuthzDecisionStatementType.java 2008-04-03 07:12:35 UTC (rev 71680)
+++ projects/security/security-xacml/trunk/jboss-xacml-saml/src/main/java/org/jboss/security/xacml/saml/integration/opensaml/types/XACMLAuthzDecisionStatementType.java 2008-04-03 07:13:36 UTC (rev 71681)
@@ -23,10 +23,12 @@
import javax.xml.namespace.QName;
+import org.jboss.security.xacml.interfaces.ElementMappingType;
import org.jboss.security.xacml.interfaces.RequestContext;
import org.jboss.security.xacml.interfaces.ResponseContext;
import org.jboss.security.xacml.saml.integration.opensaml.constants.SAMLXACMLConstants;
import org.opensaml.saml2.core.Statement;
+import org.w3c.dom.Document;
/**
@@ -35,7 +37,7 @@
* @since Mar 27, 2008
* @version $Revision$
*/
-public interface XACMLAuthzDecisionStatementType extends Statement
+public interface XACMLAuthzDecisionStatementType extends Statement, ElementMappingType
{
/** Element local name. */
String DEFAULT_ELEMENT_LOCAL_NAME = "XACMLAuthzDecisionStatement";
@@ -67,11 +69,14 @@
QName TYPE_NAME_XACML20 = new QName(SAMLXACMLConstants.SAML2_XACML20P_NS, TYPE_LOCAL_NAME,
SAMLXACMLConstants.SAML2_XACMLPROTOCOL_PREFIX);
- public RequestContext getRequest();
+ RequestContext getRequest();
- public ResponseContext getResponse();
+ ResponseContext getResponse();
- public void setRequest(RequestContext request);
+ void setRequest(RequestContext request);
- public void setResponse(ResponseContext response);
-}
+ void setResponse(ResponseContext response);
+
+ void setOwnerDocument(Document doc);
+ Document getOwnerDocument();
+}
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list