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