blob: dacaee9fd595ac5c5857b8f8768f267d0be3d2d6 [file] [log] [blame]
/*
* Copyright 2003-2004 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package org.apache.ws.security;
import java.security.Principal;
/**
* This class implements the <code>Principal</code> interface and
* represents a UsernameToken user.
* <p/>In addition to the principal's name
* this principal object also contains the nonce and created time of the
* UsernameToken (refer to the OASIS WS Security specification, UsernameToken
* profile). These values are set only if the password of UsernameToken was of
* type <code>PasswordDigest</code>.
* <p/>Furthermore the password type is
* provided to the application. The password type is the string of the type
* attribute of the password element inside the username token. Refer to the
* OASIS WSS specification for predefined password types. <p/>The
* <code>equals()</code> method use the prinicipal's name only and does not
* compare nonce or created time.
* <p/>Modelled according to the example provided
* by JAAS documentation
* <p/>
*
* @author Davanum Srinivas (dims@yahoo.com).
* @author Werner Dittmann (Werner.Dittmann@siemens.com).
* @see java.security.Principal
* @see javax.security.auth.Subject
*/
public class WSUsernameTokenPrincipal implements Principal, java.io.Serializable {
/**
* @serial
*/
private String name = null;
private String nonce = null;
private String password = null;
private String createdTime = null;
private String passwordType = null;
private boolean digest = false;
/**
* Create a WSUsernameTokenPrincipal with a WSUsernameToken username.
* <p/>
*
* @param name the WSUsernameToken username for this user.
* @throws NullPointerException if the <code>name</code>
* is <code>null</code>.
*/
public WSUsernameTokenPrincipal(String name, boolean digest) {
if (name == null)
throw new NullPointerException("illegal null input");
this.name = name;
this.digest = digest;
}
/**
* Return the WSUsernameToken username for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @return the WSUsernameToken username for this <code>WSUsernameTokenPrincipal</code>
*/
public String getName() {
return name;
}
/**
* Return the WSUsernameToken password type for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @return true if the password type was <code>PassowrdDigest</code>
*/
public boolean isPasswordDigest() {
return digest;
}
/**
* Set the WSUsernameToken password for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @param password
*/
public void setPassword(String password) {
this.password = password;
}
/**
* Return the WSUsernameToken password for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @return the WSUsernameToken password for this <code>WSUsernameTokenPrincipal</code>
*/
public String getPassword() {
return password;
}
/**
* Set the WSUsernameToken nonce for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @param nonce
*/
public void setNonce(String nonce) {
this.nonce = nonce;
}
/**
* Return the WSUsernameToken nonce for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @return the WSUsernameToken nonce for this <code>WSUsernameTokenPrincipal</code>
*/
public String getNonce() {
return nonce;
}
/**
* Set the WSUsernameToken created time for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
*
* @param createdTime
*/
public void setCreatedTime(String createdTime) {
this.createdTime = createdTime;
}
/**
* Return the WSUsernameToken created time for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
*
* @return the WSUsernameToken created time for this <code>WSUsernameTokenPrincipal</code>
*/
public String getCreatedTime() {
return createdTime;
}
/**
* Return a string representation of this <code>WSUsernameTokenPrincipal</code>.
* <p/>
*
* @return a string representation of this <code>WSUsernameTokenPrincipal</code>.
*/
public String toString() {
return ("WSUsernameTokenPrincipal: " + name);
}
/**
* @return Returns the passwordType.
*/
public String getPasswordType() {
return passwordType;
}
/**
* @param passwordType The passwordType to set.
*/
public void setPasswordType(String passwordType) {
this.passwordType = passwordType;
}
/**
* Compares the specified Object with this <code>WSUsernameTokenPrincipal</code>
* for equality. Returns true if the given object is also a
* <code>WSUsernameTokenPrincipal</code> and the two WSUsernameTokenPrincipals
* have the same username.
* <p/>
* <p/>
*
* @param o Object to be compared for equality with this
* <code>WSUsernameTokenPrincipal</code>.
* @return true if the specified Object is equal equal to this
* <code>WSUsernameTokenPrincipal</code>.
*/
public boolean equals(Object o) {
if (o == null) {
return false;
}
if (this == o) {
return true;
}
if (!(o instanceof WSUsernameTokenPrincipal)) {
return false;
}
WSUsernameTokenPrincipal that = (WSUsernameTokenPrincipal) o;
if (this.getName().equals(that.getName())) {
return true;
}
return false;
}
/**
* Return a hash code for this <code>WSUsernameTokenPrincipal</code>.
* <p/>
* <p/>
*
* @return a hash code for this <code>WSUsernameTokenPrincipal</code>.
*/
public int hashCode() {
return name.hashCode();
}
}