Package org.apache.catalina.realm

# Class GenericPrincipal

java.lang.Object
org.apache.catalina.realm.GenericPrincipal

All Implemented Interfaces:
  `Serializable`, `Principal`, `TomcatPrincipal`

Direct Known Subclasses:
  `UserDatabaseRealm.UserDatabasePrincipal`

public class GenericPrincipal extends Object implements TomcatPrincipal, Serializable
Generic implementation of java.security.Principal that is available for use by `Realm` implementations.

Author:
  Craig R. McClanahan
See Also:
  - Serialized Form

## Field Summary

Fields
Modifier and Type
Field
Description
`protected GSSCredential`
`gssCredential`
The user's delegated credentials.
`protected final LoginContext`
`loginContext`
The JAAS LoginContext, if any, used to authenticate this Principal.
`protected final String`
`name`
The username of the user represented by this Principal.
`protected final String`
`password`
The authentication credentials for the user represented by this Principal.
`protected final String[]`
`roles`
The set of roles associated with this user.
`protected final Principal`
`userPrincipal`
The authenticated Principal to be exposed to applications.

## Constructor Summary

Constructors
Constructor
Description
`GenericPrincipal(String name, String password, List<String> roles)`
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).
`GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal)`
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).
`GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal, LoginContext loginContext)`
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).
`GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal, LoginContext loginContext, GSSCredential gssCredential)`
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).

## Method Summary

Modifier and Type
Method
Description
`GSSCredential`
`getGssCredential()`
`String`
`getName()`
`String`
`getPassword()`
`String[]`
`getRoles()`
`Principal`
`getUserPrincipal()`
`boolean`
`hasRole(String role)`
Does the user represented by this Principal possess the specified role?
`void`
`logout()`
Calls logout, if necessary, on any associated JAASLoginContext.
`protected void`
`setGssCredential(GSSCredential gssCredential)`
`String`
`toString()`
Return a String representation of this object, which exposes only information that should be public.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface java.security.Principal

`equals, hashCode, implies`

## Field Details

### name

protected final String name
The username of the user represented by this Principal.

### password

protected final String password
The authentication credentials for the user represented by this Principal.

### roles

protected final String[] roles
The set of roles associated with this user.

### userPrincipal

protected final Principal userPrincipal
The authenticated Principal to be exposed to applications.

### loginContext

protected final transient LoginContext loginContext
The JAAS LoginContext, if any, used to authenticate this Principal. Kept so we can call logout().

### gssCredential

protected transient GSSCredential gssCredential
The user's delegated credentials.

## Constructor Details

### GenericPrincipal

public GenericPrincipal(String name, String password, List<String> roles)
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).

Parameters:
  `name` - The username of the user represented by this Principal
  `password` - Credentials used to authenticate this user
  `roles` - List of roles (must be Strings) possessed by this user

### GenericPrincipal

public GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal)
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).

Parameters:
  `name` - The username of the user represented by this Principal
  `password` - Credentials used to authenticate this user
  `roles` - List of roles (must be Strings) possessed by this user
  `userPrincipal` - - the principal to be returned from the request getUserPrincipal call if not null; if null, this will be returned

### GenericPrincipal

public GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal, LoginContext loginContext)
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).

Parameters:
  `name` - The username of the user represented by this Principal
  `password` - Credentials used to authenticate this user
  `roles` - List of roles (must be Strings) possessed by this user
  `userPrincipal` - - the principal to be returned from the request getUserPrincipal call if not null; if null, this will be returned
  `loginContext` - - If provided, this will be used to log out the user at the appropriate time

### GenericPrincipal

public GenericPrincipal(String name, String password, List<String> roles, Principal userPrincipal, LoginContext loginContext, GSSCredential gssCredential)
Construct a new Principal, associated with the specified Realm, for the specified username and password, with the specified role names (as Strings).

Parameters:
  `name` - The username of the user represented by this Principal
  `password` - Credentials used to authenticate this user
  `roles` - List of roles (must be Strings) possessed by this user
  `userPrincipal` - - the principal to be returned from the request getUserPrincipal call if not null; if null, this will be returned
  `loginContext` - - If provided, this will be used to log out the user at the appropriate time
  `gssCredential` - - If provided, the user's delegated credentials

## Method Details

### getName

public String getName()

Specified by:
  `getName` in interface `Principal`

### getPassword

public String getPassword()

### getRoles

public String[] getRoles()

### getUserPrincipal

public Principal getUserPrincipal()

Specified by:
  `getUserPrincipal` in interface `TomcatPrincipal`
Returns:
  The authenticated Principal to be exposed to applications.

### getGssCredential

public GSSCredential getGssCredential()

Specified by:
  `getGssCredential` in interface `TomcatPrincipal`
Returns:
  The user's delegated credentials.

### setGssCredential

protected void setGssCredential(GSSCredential gssCredential)

### hasRole

public boolean hasRole(String role)
Does the user represented by this Principal possess the specified role?

Parameters:
  `role` - Role to be tested
Returns:
  `true` if this Principal has been assigned the given role, otherwise `false`

### toString

public String toString()
Return a String representation of this object, which exposes only information that should be public.

Specified by:
  `toString` in interface `Principal`
Overrides:
  `toString` in class `Object`

### logout

public void logout() throws Exception
Description copied from interface: `TomcatPrincipal`
Calls logout, if necessary, on any associated JAASLoginContext. May in the future be extended to cover other logout requirements.

Specified by:
  `logout` in interface `TomcatPrincipal`
Throws:
  `Exception` - If something goes wrong with the logout. Uses Exception to allow for future expansion of this method to cover other logout mechanisms that might throw a different exception to LoginContext