Package org.apache.catalina.realm

## Class GenericPrincipal

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

All Implemented Interfaces:
  `java.io.Serializable`, `java.security.Principal`, `TomcatPrincipal`

Direct Known Subclasses:
  `UserDatabaseRealm.UserDatabasePrincipal`

    public class GenericPrincipal
    extends java.lang.Object
    implements TomcatPrincipal, java.io.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
`protected org.ietf.jgss.GSSCredential` `gssCredential` The user's delegated credentials.
`protected javax.security.auth.login.LoginContext` `loginContext` The JAAS LoginContext, if any, used to authenticate this Principal.
`protected java.lang.String` `name` The username of the user represented by this Principal.
`protected java.lang.String` `password` The authentication credentials for the user represented by this Principal.
`protected java.lang.String[]` `roles` The set of roles associated with this user.
`protected java.security.Principal` `userPrincipal` The authenticated Principal to be exposed to applications.

### Constructor Summary

Constructors
`GenericPrincipal​(java.lang.String name, java.lang.String password, java.util.List<java.lang.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​(java.lang.String name, java.lang.String password, java.util.List<java.lang.String> roles, java.security.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​(java.lang.String name, java.lang.String password, java.util.List<java.lang.String> roles, java.security.Principal userPrincipal, javax.security.auth.login.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​(java.lang.String name, java.lang.String password, java.util.List<java.lang.String> roles, java.security.Principal userPrincipal, javax.security.auth.login.LoginContext loginContext, org.ietf.jgss.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

All Methods Instance Methods Concrete Methods
`org.ietf.jgss.GSSCredential` `getGssCredential()`
`java.lang.String` `getName()`
`java.lang.String` `getPassword()`
`java.lang.String[]` `getRoles()`
`java.security.Principal` `getUserPrincipal()`
`boolean` `hasRole​(java.lang.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​(org.ietf.jgss.GSSCredential gssCredential)`
`java.lang.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 Detail

#### name

    protected final java.lang.String name

The username of the user represented by this Principal.

#### password

    protected final java.lang.String password

The authentication credentials for the user represented by this Principal.

#### roles

    protected final java.lang.String[] roles

The set of roles associated with this user.

#### userPrincipal

    protected final java.security.Principal userPrincipal

The authenticated Principal to be exposed to applications.

#### loginContext

    protected final transient javax.security.auth.login.LoginContext loginContext

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

#### gssCredential

    protected transient org.ietf.jgss.GSSCredential gssCredential

The user's delegated credentials.

### Constructor Detail

#### GenericPrincipal

    public GenericPrincipal​(java.lang.String name,
                            java.lang.String password,
                            java.util.List<java.lang.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​(java.lang.String name,
                            java.lang.String password,
                            java.util.List<java.lang.String> roles,
                            java.security.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​(java.lang.String name,
                            java.lang.String password,
                            java.util.List<java.lang.String> roles,
                            java.security.Principal userPrincipal,
                            javax.security.auth.login.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​(java.lang.String name,
                            java.lang.String password,
                            java.util.List<java.lang.String> roles,
                            java.security.Principal userPrincipal,
                            javax.security.auth.login.LoginContext loginContext,
                            org.ietf.jgss.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 java.lang.String getName()

Specified by:
  `getName` in interface `java.security.Principal`

#### getPassword

    public java.lang.String getPassword()

#### getRoles

    public java.lang.String[] getRoles()

#### getUserPrincipal

    public java.security.Principal getUserPrincipal()

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

#### getGssCredential

    public org.ietf.jgss.GSSCredential getGssCredential()

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

#### setGssCredential

    protected void setGssCredential​(org.ietf.jgss.GSSCredential gssCredential)

#### hasRole

    public boolean hasRole​(java.lang.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 java.lang.String toString()

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

Specified by:
  `toString` in interface `java.security.Principal`
Overrides:
  `toString` in class `java.lang.Object`

#### logout

    public void logout()
                throws java.lang.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:
  `java.lang.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