NTCredentials.java
1 /* 2 * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/NTCredentials.java,v 1.10 2004/04/18 23:51:35 jsdever Exp $ 3 * $Revision: 480424 $ 4 * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $ 5 * 6 * ==================================================================== 7 * 8 * Licensed to the Apache Software Foundation (ASF) under one or more 9 * contributor license agreements. See the NOTICE file distributed with 10 * this work for additional information regarding copyright ownership. 11 * The ASF licenses this file to You under the Apache License, Version 2.0 12 * (the "License"); you may not use this file except in compliance with 13 * the License. You may obtain a copy of the License at 14 * 15 * http://www.apache.org/licenses/LICENSE-2.0 16 * 17 * Unless required by applicable law or agreed to in writing, software 18 * distributed under the License is distributed on an "AS IS" BASIS, 19 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 * See the License for the specific language governing permissions and 21 * limitations under the License. 22 * ==================================================================== 23 * 24 * This software consists of voluntary contributions made by many 25 * individuals on behalf of the Apache Software Foundation. For more 26 * information on the Apache Software Foundation, please see 27 * <http://www.apache.org/>. 28 * 29 */ 30 31 package org.apache.commons.httpclient; 32 33 import org.apache.commons.httpclient.util.LangUtils; 34 35 /** {@link Credentials} for use with the NTLM authentication scheme which requires additional 36 * information. 37 * 38 * @author <a href="mailto:adrian@ephox.com">Adrian Sutton</a> 39 * @author <a href="mailto:mbowler@GargoyleSoftware.com">Mike Bowler</a> 40 * 41 * @version $Revision: 480424 $ $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $ 42 * 43 * @since 2.0 44 */ 45 public class NTCredentials extends UsernamePasswordCredentials { 46 47 // ----------------------------------------------------- Instance Variables 48 49 /** The Domain to authenticate with. */ 50 private String domain; 51 52 /** The host the authentication request is originating from. */ 53 private String host; 54 55 56 // ----------------------------------------------------------- Constructors 57 58 /** 59 * Default constructor. 60 * 61 * @deprecated Do not use. Null user name, domain & host no longer allowed 62 */ 63 public NTCredentials() { 64 super(); 65 } 66 67 /** 68 * Constructor. 69 * @param userName The user name. This should not include the domain to authenticate with. 70 * For example: "user" is correct whereas "DOMAIN\\user" is not. 71 * @param password The password. 72 * @param host The host the authentication request is originating from. Essentially, the 73 * computer name for this machine. 74 * @param domain The domain to authenticate within. 75 */ 76 public NTCredentials(String userName, String password, String host, 77 String domain) { 78 super(userName, password); 79 if (domain == null) { 80 throw new IllegalArgumentException("Domain may not be null"); 81 } 82 this.domain = domain; 83 if (host == null) { 84 throw new IllegalArgumentException("Host may not be null"); 85 } 86 this.host = host; 87 } 88 // ------------------------------------------------------- Instance Methods 89 90 91 /** 92 * Sets the domain to authenticate with. The domain may not be null. 93 * 94 * @param domain the NT domain to authenticate in. 95 * 96 * @see #getDomain() 97 * 98 * @deprecated Do not use. The NTCredentials objects should be immutable 99 */ 100 public void setDomain(String domain) { 101 if (domain == null) { 102 throw new IllegalArgumentException("Domain may not be null"); 103 } 104 this.domain = domain; 105 } 106 107 /** 108 * Retrieves the name to authenticate with. 109 * 110 * @return String the domain these credentials are intended to authenticate with. 111 * 112 * @see #setDomain(String) 113 * 114 */ 115 public String getDomain() { 116 return domain; 117 } 118 119 /** 120 * Sets the host name of the computer originating the request. The host name may 121 * not be null. 122 * 123 * @param host the Host the user is logged into. 124 * 125 * @deprecated Do not use. The NTCredentials objects should be immutable 126 */ 127 public void setHost(String host) { 128 if (host == null) { 129 throw new IllegalArgumentException("Host may not be null"); 130 } 131 this.host = host; 132 } 133 134 /** 135 * Retrieves the host name of the computer originating the request. 136 * 137 * @return String the host the user is logged into. 138 */ 139 public String getHost() { 140 return this.host; 141 } 142 143 /** 144 * Return a string representation of this object. 145 * @return A string represenation of this object. 146 */ 147 public String toString() { 148 final StringBuffer sbResult = new StringBuffer(super.toString()); 149 150 sbResult.append("@"); 151 sbResult.append(this.host); 152 sbResult.append("."); 153 sbResult.append(this.domain); 154 155 return sbResult.toString(); 156 } 157 158 /** 159 * Computes a hash code based on all the case-sensitive parts of the credentials object. 160 * 161 * @return The hash code for the credentials. 162 */ 163 public int hashCode() { 164 int hash = super.hashCode(); 165 hash = LangUtils.hashCode(hash, this.host); 166 hash = LangUtils.hashCode(hash, this.domain); 167 return hash; 168 } 169 170 /** 171 * Performs a case-sensitive check to see if the components of the credentials 172 * are the same. 173 * 174 * @param o The object to match. 175 * 176 * @return <code>true</code> if all of the credentials match. 177 */ 178 public boolean equals(Object o) { 179 if (o == null) return false; 180 if (this == o) return true; 181 if (super.equals(o) ) { 182 if (o instanceof NTCredentials) { 183 NTCredentials that = (NTCredentials) o; 184 185 return LangUtils.equals(this.domain, that.domain) 186 && LangUtils.equals(this.host, that.host); 187 } 188 } 189 190 return false; 191 } 192 }