org.apache.catalina.realm

## Class GenericPrincipal

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

All Implemented Interfaces:
  Principal

    public class GenericPrincipal
    extends Object
    implements Principal

Generic implementation of java.security.Principal that is available for use by `Realm` implementations.

Author:
  Craig R. McClanahan

### Field Summary

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

### Constructor Summary

Constructors
Constructor and Description
`GenericPrincipal(String name, String password)` Deprecated. Unused
`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

Methods
`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`

### Field Detail

#### name

    protected String name

The username of the user represented by this Principal.

#### password

    protected String password

The authentication credentials for the user represented by this Principal.

#### roles

    protected String[] roles

The set of roles associated with this user.

#### userPrincipal

    protected Principal userPrincipal

The authenticated Principal to be exposed to applications.

#### loginContext

    protected LoginContext loginContext

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

#### gssCredential

    protected GSSCredential gssCredential

The user's delegated credentials.

### Constructor Detail

#### GenericPrincipal

    @Deprecated
    public GenericPrincipal(String name,
                               String password)

Deprecated. Unused
Construct a new Principal, associated with the specified Realm, for the specified username and password.

Parameters:
  `name` - The username of the user represented by this Principal
  `password` - Credentials used to authenticate this user

#### 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 Detail

#### getName

    public String getName()

Specified by:
  `getName` in interface `Principal`

#### getPassword

    public String getPassword()

#### getRoles

    public String[] getRoles()

#### getUserPrincipal

    public Principal getUserPrincipal()

#### getGssCredential

    public GSSCredential getGssCredential()

#### 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

#### 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

Calls logout, if necessary, on any associated JAASLoginContext. May in the future be extended to cover other logout requirements.

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