View Javadoc
1 /* 2 * $Header: /home/cvs/jakarta-commons/httpclient/src/java/org/apache/commons/httpclient/auth/RFC2617Scheme.java,v 1.4 2003/04/22 17:00:25 olegk Exp $ 3 * $Revision: 1.4 $ 4 * $Date: 2003/04/22 17:00:25 $ 5 * 6 * ==================================================================== 7 * 8 * The Apache Software License, Version 1.1 9 * 10 * Copyright (c) 2002-2003 The Apache Software Foundation. All rights 11 * reserved. 12 * 13 * Redistribution and use in source and binary forms, with or without 14 * modification, are permitted provided that the following conditions 15 * are met: 16 * 17 * 1. Redistributions of source code must retain the above copyright 18 * notice, this list of conditions and the following disclaimer. 19 * 20 * 2. Redistributions in binary form must reproduce the above copyright 21 * notice, this list of conditions and the following disclaimer in 22 * the documentation and/or other materials provided with the 23 * distribution. 24 * 25 * 3. The end-user documentation included with the redistribution, if 26 * any, must include the following acknowlegement: 27 * "This product includes software developed by the 28 * Apache Software Foundation (http://www.apache.org/)." 29 * Alternately, this acknowlegement may appear in the software itself, 30 * if and wherever such third-party acknowlegements normally appear. 31 * 32 * 4. The names "The Jakarta Project", "Commons", and "Apache Software 33 * Foundation" must not be used to endorse or promote products derived 34 * from this software without prior written permission. For written 35 * permission, please contact apache@apache.org. 36 * 37 * 5. Products derived from this software may not be called "Apache" 38 * nor may "Apache" appear in their names without prior written 39 * permission of the Apache Group. 40 * 41 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED 42 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 43 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 44 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR 45 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 46 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 47 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF 48 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND 49 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 50 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 51 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 52 * SUCH DAMAGE. 53 * ==================================================================== 54 * 55 * This software consists of voluntary contributions made by many 56 * individuals on behalf of the Apache Software Foundation. For more 57 * information on the Apache Software Foundation, please see 58 * <http://www.apache.org/>. 59 * 60 * [Additional notices, if required by prior licensing conditions] 61 * 62 */ 63 64 package org.apache.commons.httpclient.auth; 65 66 import java.util.Map; 67 68 /*** 69 * <p> 70 * Abstract authentication scheme class that lays foundation for all 71 * RFC 2617 compliant authetication schemes and provides capabilities common 72 * to all authentication schemes defined in RFC 2617. 73 * </p> 74 * 75 * @author <a href="mailto:oleg@ural.ru">Oleg Kalnichevski</a> 76 */ 77 public abstract class RFC2617Scheme extends AuthSchemeBase { 78 79 /*** 80 * Authentication parameter map. 81 */ 82 private Map params = null; 83 84 /*** 85 * Default constructor for RFC2617 compliant authetication schemes. 86 * 87 * @param challenge authentication challenge 88 * 89 * @throws MalformedChallengeException is thrown if the authentication challenge 90 * is malformed 91 */ 92 public RFC2617Scheme(final String challenge) throws MalformedChallengeException { 93 super(challenge); 94 String s = AuthChallengeParser.extractScheme(challenge); 95 if (!s.equalsIgnoreCase(getSchemeName())) { 96 throw new MalformedChallengeException( 97 "Invalid " + getSchemeName() + " challenge: " + challenge); 98 } 99 this.params = AuthChallengeParser.extractParams(challenge); 100 } 101 102 /*** 103 * Returns authentication parameters map. Keys in the map are lower-cased. 104 * 105 * @return the map of authentication parameters 106 */ 107 protected Map getParameters() { 108 return this.params; 109 } 110 111 /*** 112 * Returns authentication parameter with the given name, if available. 113 * 114 * @param name The name of the parameter to be returned 115 * 116 * @return the parameter with the given name 117 */ 118 public String getParameter(String name) { 119 if (name == null) { 120 throw new IllegalArgumentException("Parameter name may not be null"); 121 } 122 return (String) this.params.get(name.toLowerCase()); 123 } 124 125 /*** 126 * Returns authentication realm. The realm may not be null. 127 * 128 * @return the authentication realm 129 */ 130 public String getRealm() { 131 return getParameter("realm"); 132 } 133 134 /*** 135 * Returns a String identifying the authentication challenge. This is 136 * used, in combination with the host and port to determine if 137 * authorization has already been attempted or not. Schemes which 138 * require multiple requests to complete the authentication should 139 * return a different value for each stage in the request. 140 * 141 * <p>Additionally, the ID should take into account any changes to the 142 * authentication challenge and return a different value when appropriate. 143 * For example when the realm changes in basic authentication it should be 144 * considered a different authentication attempt and a different value should 145 * be returned.</p> 146 * 147 * <p>This method simply returns the realm for the challenge.</p> 148 * 149 * @return String a String identifying the authentication challenge. The 150 * returned value may be null. 151 */ 152 public String getID() { 153 return getRealm(); 154 } 155 }

This page was automatically generated by Maven