Removed a small dependency on Sun's JDK classes. (com.sun.*)
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 29 Apr 2005 05:11:21 +0000 (05:11 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Fri, 29 Apr 2005 05:11:21 +0000 (05:11 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@1428 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/utils/ClientCertTrustFilter.java
tests/edu/internet2/middleware/shibboleth/aa/attrresolv/ResolverTests.java

index 20984b1..422bfd4 100644 (file)
@@ -1,50 +1,26 @@
 /*
- * The Shibboleth License, Version 1.
- * Copyright (c) 2002
- * University Corporation for Advanced Internet Development, Inc.
- * All rights reserved
- *
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- *
- * Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution, if any, must include
- * the following acknowledgment: "This product includes software developed by
- * the University Corporation for Advanced Internet Development
- * <http://www.ucaid.edu>Internet2 Project. Alternately, this acknowledegement
- * may appear in the software itself, if and wherever such third-party
- * acknowledgments normally appear.
- *
- * Neither the name of Shibboleth nor the names of its contributors, nor
- * Internet2, nor the University Corporation for Advanced Internet Development,
- * Inc., nor UCAID may be used to endorse or promote products derived from this
- * software without specific prior written permission. For written permission,
- * please contact shibboleth@shibboleth.org
- *
- * Products derived from this software may not be called Shibboleth, Internet2,
- * UCAID, or the University Corporation for Advanced Internet Development, nor
- * may Shibboleth appear in their name, without prior written permission of the
- * University Corporation for Advanced Internet Development.
- *
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- * AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
- * PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE DISCLAIMED AND THE ENTIRE RISK
- * OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE.
- * IN NO EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY
- * CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC. BE LIABLE FOR ANY DIRECT,
- * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * The Shibboleth License, Version 1. Copyright (c) 2002 University Corporation for Advanced Internet Development, Inc.
+ * All rights reserved Redistribution and use in source and binary forms, with or without modification, are permitted
+ * provided that the following conditions are met: Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above
+ * copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials
+ * provided with the distribution, if any, must include the following acknowledgment: "This product includes software
+ * developed by the University Corporation for Advanced Internet Development <http://www.ucaid.edu>Internet2 Project.
+ * Alternately, this acknowledegement may appear in the software itself, if and wherever such third-party
+ * acknowledgments normally appear. Neither the name of Shibboleth nor the names of its contributors, nor Internet2, nor
+ * the University Corporation for Advanced Internet Development, Inc., nor UCAID may be used to endorse or promote
+ * products derived from this software without specific prior written permission. For written permission, please contact
+ * shibboleth@shibboleth.org Products derived from this software may not be called Shibboleth, Internet2, UCAID, or the
+ * University Corporation for Advanced Internet Development, nor may Shibboleth appear in their name, without prior
+ * written permission of the University Corporation for Advanced Internet Development. THIS SOFTWARE IS PROVIDED BY THE
+ * COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND WITH ALL FAULTS. ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT ARE
+ * DISCLAIMED AND THE ENTIRE RISK OF SATISFACTORY QUALITY, PERFORMANCE, ACCURACY, AND EFFORT IS WITH LICENSEE. IN NO
+ * EVENT SHALL THE COPYRIGHT OWNER, CONTRIBUTORS OR THE UNIVERSITY CORPORATION FOR ADVANCED INTERNET DEVELOPMENT, INC.
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+ * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 package edu.internet2.middleware.shibboleth.utils;
@@ -69,12 +45,12 @@ import javax.servlet.http.HttpServletResponse;
 import org.apache.log4j.Logger;
 import org.apache.log4j.MDC;
 
-import sun.security.acl.PrincipalImpl;
+import edu.internet2.middleware.shibboleth.common.AuthNPrincipal;
 
 /**
- * Simple Servlet Filter that populates the ServletRequest with data from a client certificate.  Relies
- * on external mechanisms to properly authorize the certificate.
- *
+ * Simple Servlet Filter that populates the ServletRequest with data from a client certificate. Relies on external
+ * mechanisms to properly authorize the certificate.
+ * 
  * @author Walter Hoehn
  */
 public class ClientCertTrustFilter implements Filter {
@@ -87,11 +63,13 @@ public class ClientCertTrustFilter implements Filter {
         * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
         */
        public void init(FilterConfig config) throws ServletException {
+
                if (config.getInitParameter("regex") != null) {
                        try {
                                regex = Pattern.compile(config.getInitParameter("regex"));
                        } catch (PatternSyntaxException e) {
-                               throw new ServletException("Failed to start ClientCertTrustFilter: supplied regular expression fails to compile.");
+                               throw new ServletException(
+                                               "Failed to start ClientCertTrustFilter: supplied regular expression fails to compile.");
                        }
                }
 
@@ -99,16 +77,18 @@ public class ClientCertTrustFilter implements Filter {
                        try {
                                matchGroup = Integer.parseInt(config.getInitParameter("matchGroup"));
                        } catch (NumberFormatException e) {
-                               throw new ServletException("Failed to start ClientCertTrustFilter: supplied matchGroup is not an integer.");
+                               throw new ServletException(
+                                               "Failed to start ClientCertTrustFilter: supplied matchGroup is not an integer.");
                        }
                }
        }
 
        /**
-        * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
+        * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse,
+        *      javax.servlet.FilterChain)
         */
-       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
-               throws IOException, ServletException {
+       public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
+                       ServletException {
 
                MDC.put("serviceId", "[Client Cert Trust Filter]");
 
@@ -133,9 +113,8 @@ public class ClientCertTrustFilter implements Filter {
                Matcher matches = regex.matcher(certs[0].getSubjectDN().getName());
                if (!matches.find()) {
                        log.error("Principal could not be extracted from Certificate Subject.");
-                       httpResponse.sendError(
-                               HttpServletResponse.SC_FORBIDDEN,
-                               "Client certificate does not contain required data.");
+                       httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN,
+                                       "Client certificate does not contain required data.");
                        return;
                }
                String principalName;
@@ -143,32 +122,32 @@ public class ClientCertTrustFilter implements Filter {
                        principalName = matches.group(matchGroup);
                } catch (IndexOutOfBoundsException e) {
                        log.error("Principal could not be extracted from Certificate Subject: matchGroup out of bounds.");
-                       httpResponse.sendError(
-                               HttpServletResponse.SC_FORBIDDEN,
-                               "Client certificate does not contain required data.");
+                       httpResponse.sendError(HttpServletResponse.SC_FORBIDDEN,
+                                       "Client certificate does not contain required data.");
                        return;
                }
                log.debug("Extracted principal name (" + principalName + ") from Subject.");
-               chain.doFilter(new ClientCertTrustWrapper(httpRequest, new PrincipalImpl(principalName)), response);
+               chain.doFilter(new ClientCertTrustWrapper(httpRequest, new AuthNPrincipal(principalName)), response);
        }
 
        /**
         * @see javax.servlet.Filter#destroy()
         */
        public void destroy() {
-               //required by interface
-               //no resources to clean
+
+       //required by interface
+       //no resources to clean
        }
 
        /**
-        * <code>HttpServletRequest</code> wrapper class.  Returns a locally specified principal
-        * and hardcoded authType.
+        * <code>HttpServletRequest</code> wrapper class. Returns a locally specified principal and hardcoded authType.
         */
        private class ClientCertTrustWrapper extends HttpServletRequestWrapper {
 
                private Principal principal;
 
                private ClientCertTrustWrapper(HttpServletRequest request, Principal principal) {
+
                        super(request);
                        this.principal = principal;
                }
@@ -177,6 +156,7 @@ public class ClientCertTrustFilter implements Filter {
                 * @see javax.servlet.http.HttpServletRequest#getAuthType()
                 */
                public String getAuthType() {
+
                        return HttpServletRequest.CLIENT_CERT_AUTH;
                }
 
@@ -184,6 +164,7 @@ public class ClientCertTrustFilter implements Filter {
                 * @see javax.servlet.http.HttpServletRequest#getRemoteUser()
                 */
                public String getRemoteUser() {
+
                        return principal.getName();
                }
 
@@ -191,8 +172,9 @@ public class ClientCertTrustFilter implements Filter {
                 * @see javax.servlet.http.HttpServletRequest#getUserPrincipal()
                 */
                public Principal getUserPrincipal() {
+
                        return principal;
                }
        }
 
-}
+}
\ No newline at end of file
index 939093b..e01d591 100644 (file)
@@ -59,10 +59,11 @@ import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.opensaml.SAMLException;
 
-import sun.security.acl.PrincipalImpl;
+
 import edu.internet2.middleware.shibboleth.aa.AAAttribute;
 import edu.internet2.middleware.shibboleth.aa.AAAttributeSet;
 import edu.internet2.middleware.shibboleth.aa.attrresolv.provider.ScopedStringValueHandler;
+import edu.internet2.middleware.shibboleth.common.AuthNPrincipal;
 
 /**
  * Validation suite for the <code>AttributeResolver</code>.
@@ -112,7 +113,7 @@ public class ResolverTests extends TestCase {
                                                        new Object[] { "urn:mace:example.edu:exampleEntitlement" })
                                                });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
@@ -151,7 +152,7 @@ public class ResolverTests extends TestCase {
                                        new ScopedStringValueHandler("example.edu"))
                                });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
                } catch (AttributeResolverException e) {
@@ -228,7 +229,7 @@ public class ResolverTests extends TestCase {
                                new AAAttributeSet(new AAAttribute[] { new AAAttribute("myAffiliation", new Object[] { "member" })
                        });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
                } catch (AttributeResolverException e) {
@@ -266,7 +267,7 @@ public class ResolverTests extends TestCase {
                                                        new Object[] { "urn:mace:example.edu:exampleEntitlement" })
                                                });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
@@ -298,7 +299,7 @@ public class ResolverTests extends TestCase {
                                                        new ScopedStringValueHandler("example.edu"))
                                                });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
@@ -323,7 +324,7 @@ public class ResolverTests extends TestCase {
 
                        AAAttributeSet outputAttributes = new AAAttributeSet();
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
 
@@ -348,7 +349,7 @@ public class ResolverTests extends TestCase {
 
                        AAAttributeSet outputAttributes = new AAAttributeSet();
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);
                } catch (ClassCastException e) {
@@ -385,7 +386,7 @@ public class ResolverTests extends TestCase {
                                                new AAAttribute("urn:mace:shibboleth:test:eduPersonAffiliation", new Object[] { "member" })
                                        });
 
-                       ar.resolveAttributes(new PrincipalImpl("mytestuser"), "shar.example.edu", inputAttributes);
+                       ar.resolveAttributes(new AuthNPrincipal("mytestuser"), "shar.example.edu", inputAttributes);
 
                        assertEquals("Attribute Resolver returned unexpected attribute set.", inputAttributes, outputAttributes);