org.apache.catalina.realm

## Class GenericPrincipal

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

- All Implemented Interfaces:
    Serializable, Principal, TomcatPrincipal

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

- - ### Field Detail

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

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

      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

      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

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.