Author: nandana
Date: Wed Jun 11 01:37:43 2008
New Revision: 666566

URL: http://svn.apache.org/viewvc?rev=666566&view=rev
Log:
RAMPART-169 Applying Stefan's patch, thanks Stefan

Modified:
    
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/HttpsToken.java

Modified: 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/HttpsToken.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/HttpsToken.java?rev=666566&r1=666565&r2=666566&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/HttpsToken.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/HttpsToken.java
 Wed Jun 11 01:37:43 2008
@@ -36,6 +36,8 @@
     }
     
     private boolean requireClientCertificate = false;
+    private boolean httpBasicAuthentication = false;
+    private boolean httpDigestAuthentication = false;
 
     public boolean isRequireClientCertificate() {
         return requireClientCertificate;
@@ -44,6 +46,38 @@
     public void setRequireClientCertificate(boolean requireClientCertificate) {
         this.requireClientCertificate = requireClientCertificate;
     }
+    
+    /**
+     * @return the httpBasicAuthentication
+     */
+    public boolean isHttpBasicAuthentication()
+    {
+        return httpBasicAuthentication;
+    }
+
+    /**
+     * @param httpBasicAuthentication the httpBasicAuthentication to set
+     */
+    public void setHttpBasicAuthentication(boolean httpBasicAuthentication)
+    {
+        this.httpBasicAuthentication = httpBasicAuthentication;
+    }
+
+    /**
+     * @return the httpDigestAuthentication
+     */
+    public boolean isHttpDigestAuthentication()
+    {
+        return httpDigestAuthentication;
+    }
+
+    /**
+     * @param httpDigestAuthentication the httpDigestAuthentication to set
+     */
+    public void setHttpDigestAuthentication(boolean httpDigestAuthentication)
+    {
+        this.httpDigestAuthentication = httpDigestAuthentication;
+    }
 
     public QName getName() {
         if (version == SPConstants.SP_V12) {
@@ -71,10 +105,38 @@
         // <sp:HttpsToken
         writer.writeStartElement(prefix, localname, namespaceURI);
 
-        // RequireClientCertificate=".."
-        writer
-                
.writeAttribute(SPConstants.REQUIRE_CLIENT_CERTIFICATE.getLocalPart(), Boolean
-                        .toString(isRequireClientCertificate()));
+
+        if (version == SPConstants.SP_V12) {
+            
+            if (isRequireClientCertificate() ||
+                isHttpBasicAuthentication() ||
+                isHttpDigestAuthentication()) {
+                // <wsp:Policy>
+                writer.writeStartElement(SPConstants.POLICY.getPrefix(), 
SPConstants.POLICY.getLocalPart(), SPConstants.POLICY.getNamespaceURI());
+                
+                /*
+                 *  The ws policy 1.2 specification states that only one of 
those should be present, although
+                 * a web server (say tomcat) could be normally configured to 
require both a client certificate and 
+                 * a http user/pwd authentication. Nevertheless stick to the 
specification.
+                 */
+                if(isHttpBasicAuthentication()) {
+                    writer.writeStartElement(prefix, 
SPConstants.HTTP_BASIC_AUTHENTICATION.getLocalPart(), namespaceURI);
+                    writer.writeEndElement();
+                } else if(isHttpDigestAuthentication()) {
+                    writer.writeStartElement(prefix, 
SPConstants.HTTP_DIGEST_AUTHENTICATION.getLocalPart(), namespaceURI);
+                    writer.writeEndElement();
+                } else if(isRequireClientCertificate()) {
+                    writer.writeStartElement(prefix, 
SPConstants.REQUIRE_CLIENT_CERTIFICATE.getLocalPart(), namespaceURI);
+                    writer.writeEndElement();
+                }
+                // </wsp:Policy>
+                writer.writeEndElement();
+            }
+        } else {
+            // RequireClientCertificate=".."
+            
writer.writeAttribute(SPConstants.REQUIRE_CLIENT_CERTIFICATE.getLocalPart(), 
Boolean
+                            .toString(isRequireClientCertificate()));
+        }
 
         writer.writeEndElement();
         // </sp:HttpsToken>


Reply via email to