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
    Modifier and Type | Field | Description
    --- | --- | ---
    `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
    Constructor | Description
    --- | ---
    `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
    Modifier and Type | Method | Description
    --- | --- | ---
    `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

      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