You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by we...@apache.org on 2006/01/08 20:01:14 UTC
svn commit: r367071 - in /webservices/commons/trunk/policy/src/examples:
WSSPolicyProcessorFull.java secParser/ secParser/SecurityPolicy.java
secParser/SecurityPolicyToken.java secParser/SecurityProcessorContext.java
secParser/WSSPolicyProcessorFull.java
Author: werner
Date: Sun Jan 8 11:01:06 2006
New Revision: 367071
URL: http://svn.apache.org/viewcvs?rev=367071&view=rev
Log:
Check-in a first, incomplete version of a security parser example.
Added:
webservices/commons/trunk/policy/src/examples/secParser/
webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java
webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java
webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java
webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java
- copied, changed from r359534, webservices/commons/trunk/policy/src/examples/WSSPolicyProcessorFull.java
Removed:
webservices/commons/trunk/policy/src/examples/WSSPolicyProcessorFull.java
Added: webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java?rev=367071&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java Sun Jan 8 11:01:06 2006
@@ -0,0 +1,451 @@
+/*
+ * Created on 28.12.2005
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package examples.secParser;
+
+import java.util.ArrayList;
+
+public class SecurityPolicy {
+
+ SecurityPolicyToken signedParts = new SecurityPolicyToken("SignedParts",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken header = new SecurityPolicyToken("Header",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, new String[] { "Name",
+ "NameSpace" });
+
+ SecurityPolicyToken body = new SecurityPolicyToken("Body",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken signedElements = new SecurityPolicyToken(
+ "SignedElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "XPathVersion" });
+
+ SecurityPolicyToken xPath = new SecurityPolicyToken(
+ "Body",
+ SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
+ true, null);
+
+ SecurityPolicyToken encryptedParts = new SecurityPolicyToken(
+ "EncryptedParts", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken encryptedElements = new SecurityPolicyToken(
+ "EncryptedElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "XPathVersion" });
+
+ SecurityPolicyToken requiredElements = new SecurityPolicyToken(
+ "RequiredElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "XPathVersion" });
+
+ SecurityPolicyToken usernameToken = new SecurityPolicyToken(
+ "UsernameToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ SecurityPolicyToken wssUsernameToken10 = new SecurityPolicyToken(
+ "WssUsernameToken10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssUsernameToken11 = new SecurityPolicyToken(
+ "WssUsernameToken11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken issuedToken = new SecurityPolicyToken("IssuedToken",
+ SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ SecurityPolicyToken issuer = new SecurityPolicyToken(
+ "Issuer",
+ SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
+ true, null);
+
+ SecurityPolicyToken requestSecurityTokenTemplate = new SecurityPolicyToken(
+ "RequestSecurityTokenTemplate", SecurityPolicyToken.COMPLEX_TOKEN
+ | SecurityPolicyToken.WITH_CONTENT, true,
+ new String[] { "TrustVersion" });
+
+ SecurityPolicyToken requireDerivedKeys = new SecurityPolicyToken(
+ "RequireDerivedKeys", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken requireExternalReference = new SecurityPolicyToken(
+ "RequireExternalReference", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken requireInternalReference = new SecurityPolicyToken(
+ "RequireInternalReference", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken x509Token = new SecurityPolicyToken("X509Token",
+ SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ SecurityPolicyToken requireKeyIdentifierReference = new SecurityPolicyToken(
+ "RequireKeyIdentifierReference", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken requireIssuerSerialReference = new SecurityPolicyToken(
+ "RequireIssuerSerialReference", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken requiredEmbeddedTokenReference = new SecurityPolicyToken(
+ "RequiredEmbeddedTokenReference", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken requireThumbprintReference = new SecurityPolicyToken(
+ "RequireThumbprintReference", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken wssX509V1Token10 = new SecurityPolicyToken(
+ "WssX509V1Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509V3Token10 = new SecurityPolicyToken(
+ "WssX509V3Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509Pkcs7Token10 = new SecurityPolicyToken(
+ "WssX509Pkcs7Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509PkiPathV1Token10 = new SecurityPolicyToken(
+ "WssX509PkiPathV1Token10", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken wssX509V1Token11 = new SecurityPolicyToken(
+ "WssX509V1Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509V3Token11 = new SecurityPolicyToken(
+ "WssX509V3Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509Pkcs7Token11 = new SecurityPolicyToken(
+ "WssX509Pkcs7Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssX509PkiPathV1Token11 = new SecurityPolicyToken(
+ "WssX509PkiPathV1Token11", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken kerberosToken = new SecurityPolicyToken(
+ "KerberosToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // requireDerivedKeys already defined for issuedToken
+ // requireKeyIdentifierReference already defined for x509Token
+ SecurityPolicyToken wssKerberosV5ApReqToken11 = new SecurityPolicyToken(
+ "WssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken wssGssKerberosV5ApReqToken11 = new SecurityPolicyToken(
+ "WssGssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken spnegoContextToken = new SecurityPolicyToken(
+ "SpnegoContextToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // issuer already defined for issuedToken
+ // requireDerivedKeys already defined for issuedToken
+
+ SecurityPolicyToken securityContextToken = new SecurityPolicyToken(
+ "SecurityContextToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // requireDerivedKeys already defined for issuedToken
+ SecurityPolicyToken requireExternalUriReference = new SecurityPolicyToken(
+ "RequireExternalUriReference", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken sc10SecurityContextToken = new SecurityPolicyToken(
+ "SC10SecurityContextToken", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken secureConversationToken = new SecurityPolicyToken(
+ "SecureConversationToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // issuer already defined for issuedToken
+ // requireDerivedKeys already defined for issuedToken
+ // requireExternalUriReference is already defined for SecurityContextToken
+ // sc10SecurityContextToken is already defined for SecurityContextToken
+ SecurityPolicyToken bootstrapPolicy = new SecurityPolicyToken(
+ "BootstrapPolicy", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken samlToken = new SecurityPolicyToken("SamlToken",
+ SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // requireDerivedKeys already defined for issuedToken
+ // requireKeyIdentifierReference already defined for x509Token
+ SecurityPolicyToken wssSamlV10Token10 = new SecurityPolicyToken(
+ "WssSamlV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssSamlV11Token10 = new SecurityPolicyToken(
+ "WssSamlV11Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssSamlV10Token11 = new SecurityPolicyToken(
+ "WssSamlV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssSamlV11Token11 = new SecurityPolicyToken(
+ "WssSamlV11Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssSamlV20Token11 = new SecurityPolicyToken(
+ "WssSamlV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken relToken = new SecurityPolicyToken("RelToken",
+ SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "IncludeToken" });
+
+ // requireDerivedKeys already defined for issuedToken
+ // requireKeyIdentifierReference already defined for x509Token
+ SecurityPolicyToken wssRelV10Token10 = new SecurityPolicyToken(
+ "WssRelV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssRelV20Token10 = new SecurityPolicyToken(
+ "WssRelV20Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssRelV10Token11 = new SecurityPolicyToken(
+ "WssRelV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken wssRelV20Token11 = new SecurityPolicyToken(
+ "WssRelV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken httpsToken = new SecurityPolicyToken("RelToken",
+ SecurityPolicyToken.COMPLEX_TOKEN, true,
+ new String[] { "RequireClientCertificate" });
+
+ SecurityPolicyToken algorithmSuite = new SecurityPolicyToken("RelToken",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken basic256 = new SecurityPolicyToken("Basic256",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic192 = new SecurityPolicyToken("Basic192",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic128 = new SecurityPolicyToken("Basic128",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken tripleDes = new SecurityPolicyToken("TripleDes",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic256Rsa15 = new SecurityPolicyToken(
+ "Basic256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic192Rsa15 = new SecurityPolicyToken(
+ "Basic192Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic128Rsa15 = new SecurityPolicyToken(
+ "Basic128Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken tripleDesRsa15 = new SecurityPolicyToken(
+ "TripleDesRsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic256Sha256 = new SecurityPolicyToken(
+ "Basic256Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic192Sha256 = new SecurityPolicyToken(
+ "Basic192Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic128Sha256 = new SecurityPolicyToken(
+ "Basic128Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken tripleDesSha256 = new SecurityPolicyToken(
+ "TripleDesSha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic256Sha256Rsa15 = new SecurityPolicyToken(
+ "Basic256Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic192Sha256Rsa15 = new SecurityPolicyToken(
+ "Basic192Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken basic128Sha256Rsa15 = new SecurityPolicyToken(
+ "Basic128Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken tripleDesSha256Rsa15 = new SecurityPolicyToken(
+ "TripleDesSha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken inclusiveC14N = new SecurityPolicyToken(
+ "InclusiveC14N", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken soapNormalization10 = new SecurityPolicyToken(
+ "SoapNormalization10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken strTransform10 = new SecurityPolicyToken(
+ "StrTransform10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken xPath10 = new SecurityPolicyToken("XPath10",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken xPathFilter20 = new SecurityPolicyToken(
+ "XPathFilter20", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken layout = new SecurityPolicyToken("Layout",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken strict = new SecurityPolicyToken("Strict",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken lax = new SecurityPolicyToken("Lax",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken laxTsFirst = new SecurityPolicyToken("LaxTsFirst",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken laxTsLast = new SecurityPolicyToken("LaxTsLast",
+ SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken transportBinding = new SecurityPolicyToken(
+ "TransportBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken transportToken = new SecurityPolicyToken(
+ "TransportToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ // algorithmSuite and layout see above
+ SecurityPolicyToken includeTimestamp = new SecurityPolicyToken(
+ "IncludeTimestamp", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken symmetricBinding = new SecurityPolicyToken(
+ "SymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken encryptionToken = new SecurityPolicyToken(
+ "EncryptionToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken signatureToken = new SecurityPolicyToken(
+ "SignatureToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken protectionToken = new SecurityPolicyToken(
+ "ProtectionToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ // algorithmSuite and layout see above
+ // includeTimestamp already defined for transport binding
+ SecurityPolicyToken encryptBeforeSigning = new SecurityPolicyToken(
+ "EncryptBeforeSigning", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken encryptSignature = new SecurityPolicyToken(
+ "EncryptSignature", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken protectTokens = new SecurityPolicyToken(
+ "ProtectTokens", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+
+ SecurityPolicyToken onlySignEntireHeadersAndBody = new SecurityPolicyToken(
+ "OnlySignEntireHeadersAndBody", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken asymmetricBinding = new SecurityPolicyToken(
+ "AsymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken initiatorToken = new SecurityPolicyToken(
+ "InitiatorToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken receipientToken = new SecurityPolicyToken(
+ "ReceipientToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ // all other tokens for asymmetric already defined above
+
+ SecurityPolicyToken supportingTokens = new SecurityPolicyToken(
+ "SupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken signedSupportingTokens = new SecurityPolicyToken(
+ "SignedSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, true,
+ null);
+
+ SecurityPolicyToken endorsingSupportingTokens = new SecurityPolicyToken(
+ "EndorsingSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN,
+ true, null);
+
+ SecurityPolicyToken signedEndorsingSupportingTokens = new SecurityPolicyToken(
+ "SignedEndorsingSupportingTokens",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken wss10 = new SecurityPolicyToken("wss10",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken mustSupportRefKeyIdentifier = new SecurityPolicyToken(
+ "MustSupportRefKeyIdentifier", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken mustSupportRefIssuerSerial = new SecurityPolicyToken(
+ "MustSupportRefIssuerSerial", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken mustSupportRefExternalUri = new SecurityPolicyToken(
+ "MustSupportRefExternalUri", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken mustSupportRefEmbeddedToken = new SecurityPolicyToken(
+ "MustSupportRefEmbeddedToken", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken wss11 = new SecurityPolicyToken("wss11",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ // all from wss10
+ SecurityPolicyToken mustSupportRefKeyThumbprint = new SecurityPolicyToken(
+ "mustSupportRefKeyThumbprint", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken mustSupportRefKeyEncryptedKey = new SecurityPolicyToken(
+ "mustSupportRefKeyEncryptedKey", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken requireSignatureConfirmation = new SecurityPolicyToken(
+ "requireSignatureConfirmation", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken trust10 = new SecurityPolicyToken("trust10",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicyToken mustSupportClientChallenge = new SecurityPolicyToken(
+ "mustSupportClientChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken mustSupportServerChallenge = new SecurityPolicyToken(
+ "mustSupportServerChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
+ true, null);
+
+ SecurityPolicyToken requireClientEntropy = new SecurityPolicyToken(
+ "requireClientEntropy", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken requireServerEntropy = new SecurityPolicyToken(
+ "requireServerEntropy", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ SecurityPolicyToken mustSupportIssuedTokens = new SecurityPolicyToken(
+ "mustSupportIssuedTokens", SecurityPolicyToken.SIMPLE_TOKEN, true,
+ null);
+
+ String includeNever = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never";
+
+ String includeOnce = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once";
+
+ String includeAlways = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always";
+
+ /**
+ * Intialize the SignedParts complex token.
+ *
+ * This method creates a copy of the SingedParts token and sets the handler
+ * object to the copy. Then it creates copies of the child tokens that are
+ * allowed for SingedParts. These tokens are Body and Header. These copies
+ * are also initialized with the handler object and then set a schild tokens
+ * of SingedParts.
+ *
+ * @param handler
+ * The handler object that must contain the methods
+ * <code>doSignedParts, doBody, doHeader</code>.
+ * @return the intialized SignedParts token.
+ * @throws NoSuchMethodException
+ */
+ public SecurityPolicyToken initializeSignedParts(Object handler)
+ throws NoSuchMethodException {
+ SecurityPolicyToken spt = signedParts.copy();
+ spt.setProcessTokenMethod(handler);
+
+ SecurityPolicyToken tmpSpt = body.copy();
+ tmpSpt.setProcessTokenMethod(handler);
+ spt.setChildToken(tmpSpt);
+
+ tmpSpt = header.copy();
+ tmpSpt.setProcessTokenMethod(handler);
+ spt.setChildToken(tmpSpt);
+ return spt;
+ }
+}
Added: webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java?rev=367071&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java Sun Jan 8 11:01:06 2006
@@ -0,0 +1,225 @@
+/*
+ * Created on 28.12.2005
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package examples.secParser;
+
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Iterator;
+
+public class SecurityPolicyToken {
+
+ /**
+ * The following values describe the type of the security token. A complex
+ * token starts a transaction because it contains nested tokens. A simple
+ * token does not contain nested tokens but stands allone an defines a
+ * simple assertion or property.
+ *
+ * If Content is set then this token contains additional text content, e.g.
+ * XPath expressions.
+ */
+ public static final int COMPLEX_TOKEN = 1;
+
+ public static final int SIMPLE_TOKEN = 2;
+
+ public static final int WITH_CONTENT = 100;
+
+ private String tokenName;
+
+ private int tokenType = 0;
+
+ private boolean supported = false;
+
+ private String[] attributes = null;
+
+ private Object handler = null;
+
+ private Method processTokenMethod = null;
+
+ private ArrayList childTokens = null;
+
+ /**
+ * Create a SecurityPolicyToken data structure.
+ *
+ * @param token
+ * The name of the token, equals to to local name of the XML
+ * element
+ * @param type
+ * Type of the token. Either complex or simple. Can have a flag
+ * if the token containes some data.
+ * @param sup
+ * If true the processor supports this token and the enforcer can
+ * work with it,
+ * @param attribs
+ * The names of allowed attributes on this token
+ * @param h
+ * The handler object that implements the processing method. The
+ * name of a processing method is constructed by prepending a
+ * "do" to the token name
+ * @throws SecurityException
+ * @throws NoSuchMethodException
+ */
+ public SecurityPolicyToken(String token, int type, boolean sup,
+ String[] attribs, Object h) throws SecurityException,
+ NoSuchMethodException {
+ this(token, type, sup, attribs);
+
+ setProcessTokenMethod(h);
+ }
+
+ /**
+ * Create a SecurityPolicyToken data structure.
+ *
+ * @param token
+ * The name of the token, equals to to local name of the XML
+ * element
+ * @param type
+ * Type of the token. Either complex or simple. Can have a flag
+ * if the token containes some data.
+ * @param sup
+ * If true the processor supports this token and the enforcer can
+ * work with it,
+ * @param attribs
+ * The names of allowed attributes on this token processing
+ * method is constructed by prepending a "do" to the token name
+ */
+ public SecurityPolicyToken(String token, int type, boolean sup,
+ String[] attribs) {
+ tokenName = token;
+ tokenType = type;
+ supported = sup;
+ attributes = attribs;
+
+ if (tokenType == COMPLEX_TOKEN) {
+ childTokens = new ArrayList();
+ }
+ }
+
+ /**
+ * @return Returns the attributes.
+ */
+ public String[] getAttributes() {
+ return attributes;
+ }
+
+ /**
+ * Set the method which processes this security token.
+ *
+ * @param h
+ * The handler object that implements the processing method. The
+ * name of a processing method is constructed by prepending a
+ * "do" to the token name.
+ *
+ * @throws NoSuchMethodException
+ */
+ public void setProcessTokenMethod(Object h) throws NoSuchMethodException {
+
+ if (h == null) {
+ return;
+ }
+ handler = h;
+ Class handlerCls = h.getClass();
+ Class[] parameters = new Class[] { SecurityProcessorContext.class };
+
+ processTokenMethod = handlerCls.getDeclaredMethod("do" + tokenName,
+ parameters);
+ }
+
+ /**
+ * Invoke the processing method for this token.
+ *
+ * @param spc
+ * The SecurityProcessContext handed over to the processing
+ * method
+ * @return True if the token is processed successfully
+ * @throws IllegalArgumentException
+ * @throws IllegalAccessException
+ * @throws InvocationTargetException
+ */
+ public boolean invokeProcessTokenMethod(SecurityProcessorContext spc)
+ throws IllegalArgumentException, IllegalAccessException,
+ InvocationTargetException {
+
+ if (processTokenMethod == null) {
+ return false;
+ }
+ Object[] parameter = new Object[] { spc };
+ Object ret = processTokenMethod.invoke(handler, parameter);
+ Boolean bool;
+ if (ret instanceof Boolean) {
+ bool = (Boolean) ret;
+ return bool.booleanValue();
+ }
+ return false;
+ }
+
+ /**
+ * @return Returns the supported.
+ */
+ public boolean isSupported() {
+ return supported;
+ }
+
+ /**
+ * @return Returns the tokenName.
+ */
+ public String getTokenName() {
+ return tokenName;
+ }
+
+ /**
+ * Add a Child token to this complex token.
+ *
+ * @param spt
+ * The child token to add to this Complex token
+ */
+ public void setChildToken(SecurityPolicyToken spt) {
+ childTokens.add(spt);
+ }
+
+ /**
+ * Gets a named child token,
+ *
+ * @param sptName
+ * The token name to check for
+ * @return the SecurityPolicyToken if this token contains the named token as
+ * child token, null otherwise.
+ */
+ public SecurityPolicyToken getChildToken(String sptName) {
+ Iterator it = childTokens.iterator();
+ while (it.hasNext()) {
+ SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
+ if (sptName.equals(tmpSpt.getTokenName())) {
+ return tmpSpt;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * Copy this SecurityPolicyToken and return the copy.
+ *
+ * Produce a copy of this SPT. The imutable fields (token name, token type,
+ * supported, and attributes) are copied by reference. The child tokens are
+ * copied by value thus they can be modified. The handler object and the
+ * associated processing method are not copied and must be intialized.
+ *
+ * @return A new SecurityPolicyToken
+ */
+ public SecurityPolicyToken copy() {
+ SecurityPolicyToken spt = new SecurityPolicyToken(tokenName, tokenType,
+ supported, attributes);
+ if (childTokens != null) {
+ Iterator it = childTokens.iterator();
+ while (it.hasNext()) {
+ SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
+ spt.setChildToken(tmpSpt);
+ }
+ }
+ return spt;
+ }
+}
Added: webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java?rev=367071&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java Sun Jan 8 11:01:06 2006
@@ -0,0 +1,15 @@
+/*
+ * Created on 28.12.2005
+ *
+ * To change the template for this generated file go to
+ * Window>Preferences>Java>Code Generation>Code and Comments
+ */
+package examples.secParser;
+
+public class SecurityProcessorContext {
+
+ public SecurityProcessorContext() {
+
+ }
+
+}
Copied: webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java (from r359534, webservices/commons/trunk/policy/src/examples/WSSPolicyProcessorFull.java)
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java?p2=webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java&p1=webservices/commons/trunk/policy/src/examples/WSSPolicyProcessorFull.java&r1=359534&r2=367071&rev=367071&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/examples/WSSPolicyProcessorFull.java (original)
+++ webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java Sun Jan 8 11:01:06 2006
@@ -14,11 +14,12 @@
* limitations under the License.
*/
-package examples;
+package examples.secParser;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@@ -31,200 +32,248 @@
import org.apache.ws.policy.util.PolicyReader;
import org.apache.ws.policy.util.PolicyFactory;
+
/**
* @author Werner Dittmann (werner@apache.org)
*/
public class WSSPolicyProcessorFull {
- FileInputStream fis = null;
+ FileInputStream fis = null;
- PolicyReader prdr = null;
+ PolicyReader prdr = null;
- Policy merged = null;
+ Policy merged = null;
- int level = 0;
+ int level = 0;
- public static void main(String[] args) throws Exception {
-
- WSSPolicyProcessorFull processor = new WSSPolicyProcessorFull();
- processor.setup();
- String[] files = new String[1];
- files[0] = "policy/src/examples/policy2.xml";
- processor.go(files);
- System.out
- .println("\n ----------------------------------------------------");
- files = new String[2];
- files[0] = "policy/src/examples/SecurityPolicyBindings.xml";
- files[1] = "policy/src/examples/SecurityPolicyMsg.xml";
- processor.go(files);
- }
-
- void setup() {
- prdr = PolicyFactory.getPolicyReader(PolicyFactory.OM_POLICY_READER);
-
- }
-
- void go(String[] args) {
-
- merged = null;
- for (int i = 0; i < args.length; i++) {
- try {
- fis = new FileInputStream(args[i]);
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- Policy newPolicy = prdr.readPolicy(fis);
- newPolicy = (Policy) newPolicy.normalize();
-
- if (merged == null) {
- merged = newPolicy;
- } else {
- merged = (Policy) merged.merge(newPolicy);
- }
- try {
- fis.close();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- processPolicy(merged);
- }
-
- /**
- * This method takes a normalized policy object, processes it and returns
- * true if all assertion can be fulfilled.
- *
- * Each policy must be nromalized accordig to the WS Policy framework
- * specification. Therefore a policy has one child (wsp:ExactlyOne) that is
- * a XorCompositeAssertion. This child may contain one or more other terms
- * (alternatives). To match the policy one of these terms (alternatives)
- * must match. If none of the contained terms match this policy cannot be
- * enforced.
- *
- * @param policy
- * The policy to process
- * @return True if this policy can be enforced by the policy enforcement
- * implmentation
- */
- public boolean processPolicy(Policy policy) {
-
- if (!policy.isNormalized()) {
- throw new RuntimeException("Policy is not in normalized format");
- }
-
- /*
- *
- */
- XorCompositeAssertion xor = (XorCompositeAssertion) policy.getTerms()
- .get(0);
- List listOfPolicyAlternatives = xor.getTerms();
-
- boolean success = false;
- int numberOfAlternatives = listOfPolicyAlternatives.size();
-
- for (int i = 0; !success && i < numberOfAlternatives; i++) {
- AndCompositeAssertion aPolicyAlternative = (AndCompositeAssertion) listOfPolicyAlternatives
- .get(i);
-
- List listOfAssertions = aPolicyAlternative.getTerms();
-
- Iterator iterator = listOfAssertions.iterator();
- /*
- * Loop over all assertions in this alternative. If all assertions
- * can be fulfilled then we choose this alternative and signal a
- * success.
- */
- boolean all = true;
- while (all && iterator.hasNext()) {
- Assertion assertion = (Assertion) iterator.next();
- if (assertion instanceof Policy) {
- all = processPolicy((Policy) assertion);
- continue;
- }
- if (!(assertion instanceof PrimitiveAssertion)) {
- System.out.println("Got a unexpected assertion type: "
- + assertion.getClass().getName());
- continue;
- }
- all = processPrimitiveAssertion((PrimitiveAssertion) assertion);
- }
- /*
- * copy the status of assertion processing. If all is true the this
- * alternative is "success"ful
- */
- success = all;
- }
- return success;
- }
-
- boolean processPrimitiveAssertion(PrimitiveAssertion pa) {
- /*
- * We need to pick only the primitive assertions which conatain a
- * WSSecurityPolicy policy assertion. For that we'll check the namespace
- * of the primitive assertion
- */
- boolean commit = true;
-
- if (pa.getName().getNamespaceURI().equals(
- "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy")) {
- commit = startPolicyTransaction(pa);
- }
-
- List terms = pa.getTerms();
- if (terms.size() > 0) {
- for (int i = 0; commit && i < terms.size(); i++) {
- level++;
- Assertion assertion = (Assertion) pa.getTerms().get(i);
- if (assertion instanceof Policy) {
- assertion = assertion.normalize();
- commit = processPolicy((Policy) assertion);
- } else if (assertion instanceof PrimitiveAssertion) {
- commit = processPrimitiveAssertion((PrimitiveAssertion) assertion);
- }
- level--;
- }
- }
- if (commit) {
- commitPolicyTransaction(pa);
- } else {
- abortPolicyTransaction(pa);
- }
- return commit;
- }
-
- public boolean startPolicyTransaction(PrimitiveAssertion prim) {
-
- /*
- * May be I should be setting the configuration options in
- * WSDoAll*Handler according to this security assertion.
- */
- StringBuffer indent = new StringBuffer();
- for (int i = 0; i < level; i++) {
- indent.append(" ");
- }
- System.out.println(new String(indent) + prim.getName().getLocalPart());
- String text = prim.getStrValue();
- if (text != null) {
- text = text.trim();
- System.out
- .println(new String(indent) + "Value: " + text.toString());
- }
- if (prim.getName().getLocalPart().equals("SecurityHeader"))
- return false;
- return true;
- }
-
- public void abortPolicyTransaction(PrimitiveAssertion prim) {
- System.out.println("Aborting Policy transaction "
- + prim.getName().getLocalPart());
- }
-
- public void commitPolicyTransaction(PrimitiveAssertion prim) {
- System.out.println("Commit Policy transaction "
- + prim.getName().getLocalPart());
- }
+// ArrayList securityTokens = new ArrayList();
+
+ SecurityPolicyToken topLevel = new SecurityPolicyToken("_TopLevel_",
+ SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+
+ SecurityPolicy secPolicy = null;
+
+ public static void main(String[] args) throws Exception {
+
+ WSSPolicyProcessorFull processor = new WSSPolicyProcessorFull();
+ if (!processor.setup()) {
+ return;
+ }
+ String[] files = new String[1];
+ // files[0] = "policy/src/examples/policy2.xml";
+ // files[0] = "policy/src/examples/SecurityPolicyMsg.xml";
+ // processor.go(files);
+ // System.out
+ // .println("\n ----------------------------------------------------");
+ files = new String[2];
+ files[0] = "policy/src/examples/SecurityPolicyBindings.xml";
+ files[1] = "policy/src/examples/SecurityPolicyMsg.xml";
+ processor.go(files);
+ }
+
+ boolean setup() throws NoSuchMethodException {
+ prdr = PolicyFactory.getPolicyReader(PolicyFactory.OM_POLICY_READER);
+ secPolicy = new SecurityPolicy();
+
+ SecurityPolicyToken spt = secPolicy.initializeSignedParts(this);
+ topLevel.setChildToken(spt);
+
+ return true;
+ }
+
+ void go(String[] args) {
+
+ merged = null;
+ for (int i = 0; i < args.length; i++) {
+ try {
+ fis = new FileInputStream(args[i]);
+ } catch (FileNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ Policy newPolicy = prdr.readPolicy(fis);
+ newPolicy = (Policy) newPolicy.normalize();
+ // if (!newPolicy.isNormalized()) {
+ // throw new RuntimeException("newPolicy is not in normalized
+ // format");
+ // }
+ if (merged == null) {
+ merged = newPolicy;
+ } else {
+ merged = (Policy) merged.merge(newPolicy);
+ }
+ try {
+ fis.close();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ processPolicy(merged);
+ }
+
+ /**
+ * This method takes a normalized policy object, processes it and returns
+ * true if all assertion can be fulfilled.
+ *
+ * Each policy must be nromalized accordig to the WS Policy framework
+ * specification. Therefore a policy has one child (wsp:ExactlyOne) that is
+ * a XorCompositeAssertion. This child may contain one or more other terms
+ * (alternatives). To match the policy one of these terms (alternatives)
+ * must match. If none of the contained terms match this policy cannot be
+ * enforced.
+ *
+ * @param policy
+ * The policy to process
+ * @return True if this policy can be enforced by the policy enforcement
+ * implmentation
+ */
+ public boolean processPolicy(Policy policy) {
+
+ if (!policy.isNormalized()) {
+ throw new RuntimeException("Policy is not in normalized format");
+ }
+
+ XorCompositeAssertion xor = (XorCompositeAssertion) policy.getTerms()
+ .get(0);
+ List listOfPolicyAlternatives = xor.getTerms();
+
+ boolean success = false;
+ int numberOfAlternatives = listOfPolicyAlternatives.size();
+
+ for (int i = 0; !success && i < numberOfAlternatives; i++) {
+ AndCompositeAssertion aPolicyAlternative = (AndCompositeAssertion) listOfPolicyAlternatives
+ .get(i);
+
+ List listOfAssertions = aPolicyAlternative.getTerms();
+
+ Iterator iterator = listOfAssertions.iterator();
+ /*
+ * Loop over all assertions in this alternative. If all assertions
+ * can be fulfilled then we choose this alternative and signal a
+ * success.
+ */
+ boolean all = true;
+ while (all && iterator.hasNext()) {
+ Assertion assertion = (Assertion) iterator.next();
+ if (assertion instanceof Policy) {
+ all = processPolicy((Policy) assertion);
+ continue;
+ }
+ if (!(assertion instanceof PrimitiveAssertion)) {
+ System.out.println("Got a unexpected assertion type: "
+ + assertion.getClass().getName());
+ continue;
+ }
+ all = processPrimitiveAssertion((PrimitiveAssertion) assertion);
+ }
+ /*
+ * copy the status of assertion processing. If all is true the this
+ * alternative is "success"ful
+ */
+ success = all;
+ }
+ return success;
+ }
+
+ boolean processPrimitiveAssertion(PrimitiveAssertion pa) {
+ /*
+ * We need to pick only the primitive assertions which conatain a
+ * WSSecurityPolicy policy assertion. For that we'll check the namespace
+ * of the primitive assertion
+ */
+ boolean commit = true;
+
+ if (pa.getName().getNamespaceURI().equals(
+ "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy")) {
+ commit = startPolicyTransaction(pa);
+ }
+
+ List terms = pa.getTerms();
+ if (terms.size() > 0) {
+ for (int i = 0; commit && i < terms.size(); i++) {
+ level++;
+ Assertion assertion = (Assertion) pa.getTerms().get(i);
+ if (assertion instanceof Policy) {
+ assertion = assertion.normalize();
+ commit = processPolicy((Policy) assertion);
+ } else if (assertion instanceof PrimitiveAssertion) {
+ commit = processPrimitiveAssertion((PrimitiveAssertion) assertion);
+ }
+ level--;
+ }
+ }
+ if (commit) {
+ commitPolicyTransaction(pa);
+ } else {
+ abortPolicyTransaction(pa);
+ }
+ return commit;
+ }
+
+ public boolean startPolicyTransaction(PrimitiveAssertion prim) {
+
+ /*
+ * May be I should be setting the configuration options in
+ * WSDoAll*Handler according to this security assertion.
+ */
+ StringBuffer indent = new StringBuffer();
+ for (int i = 0; i < level; i++) {
+ indent.append(" ");
+ }
+ String tokenName = prim.getName().getLocalPart();
+ System.out.println(new String(indent) + tokenName);
+ String text = prim.getStrValue();
+ if (text != null) {
+ text = text.trim();
+ System.out
+ .println(new String(indent) + "Value: '" + text.toString() + "'");
+ }
+ SecurityPolicyToken spt = topLevel.getChildToken(tokenName);
+ SecurityProcessorContext spc = new SecurityProcessorContext();
+ if (spt != null) {
+ try {
+ System.out.println("SPT: " + spt);
+ spt.invokeProcessTokenMethod(spc);
+ } catch (IllegalArgumentException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ return true;
+ }
+
+ public void abortPolicyTransaction(PrimitiveAssertion prim) {
+ System.out.println("Aborting Policy transaction "
+ + prim.getName().getLocalPart());
+ }
+
+ public void commitPolicyTransaction(PrimitiveAssertion prim) {
+ System.out.println("Commit Policy transaction "
+ + prim.getName().getLocalPart());
+ }
+
+ public Object doSignedParts(SecurityProcessorContext spc) {
+ System.out.println("We found a SignedParts token");
+ return new Boolean(true);
+ }
+
+ public Object doBody(SecurityProcessorContext spc) {
+ System.out.println("We found a Body token");
+ return new Boolean(true);
+ }
+
+ public Object doHeader(SecurityProcessorContext spc) {
+ System.out.println("We found a Header token");
+ return new Boolean(true);
+ }
+
}