Package org.apache.catalina

## Interface TomcatPrincipal

- All Superinterfaces:
    `java.security.Principal`
  All Known Implementing Classes:
    `GenericPrincipal`, `UserDatabaseRealm.UserDatabasePrincipal`

      public interface TomcatPrincipal
      extends java.security.Principal

  Defines additional methods implemented by `Principal`s created by Tomcat's standard `Realm` implementations.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `default java.lang.Object` | `getAttribute​(java.lang.String name)` | Returns the value of the named attribute as an `Object`, or `null` if no attribute of the given name exists, or if `null` has been specified as the attribute's name.
    `default java.util.Enumeration<java.lang.String>` | `getAttributeNames()` | Returns an `Enumeration` containing the names of the attributes available to this Principal.
    `org.ietf.jgss.GSSCredential` | `getGssCredential()` |
    `java.security.Principal` | `getUserPrincipal()` |
    `void` | `logout()` | Calls logout, if necessary, on any associated JAASLoginContext and/or GSSContext.

    - ### Methods inherited from interface java.security.Principal

      `equals, getName, hashCode, implies, toString`

- - ### Method Detail

    - #### getUserPrincipal

          java.security.Principal getUserPrincipal()

      Returns:
        The authenticated Principal to be exposed to applications.

    - #### getGssCredential

          org.ietf.jgss.GSSCredential getGssCredential()

      Returns:
        The user's delegated credentials.

    - #### logout

          void logout()
               throws java.lang.Exception

      Calls logout, if necessary, on any associated JAASLoginContext and/or GSSContext. May in the future be extended to cover other logout requirements.
      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

    - #### getAttribute

          default java.lang.Object getAttribute​(java.lang.String name)

      Returns the value of the named attribute as an `Object`, or `null` if no attribute of the given name exists, or if `null` has been specified as the attribute's name.

      Only the servlet container may set attributes to make available custom information about a Principal or the user it represents.

      The purpose of the method is to implement read only access to attributes which may be stored in the `Realm` implementation's backend due to its inherent design.

      As using this method from application code will make it non portable to other EE compliant containers, it is advised this should never be used as an object storage facility tied to the `Principal`, but rather as simple extra additional metadata. It is recommended that a container level object is used to further process the attributes that may be associated with the `Principal`.

      `Realm` implementations that are provided by Tomcat will not provide complex type mapping, but will in most cases always return a result as a `String` object which may need custom decoding.

      `Realm` implementations that are provided by Tomcat will not provide an implementation for this facility unless it is inherent to the storage backend of the `Realm` itself and metadata is available without additional user intervention or configuration.

      Parameters:
        `name` - a `String` specifying the name of the attribute
      Returns:
        an `Object` containing the value of the attribute, or `null` if the attribute does not exist, or if `null` has been specified as the attribute's name

    - #### getAttributeNames

          default java.util.Enumeration<java.lang.String> getAttributeNames()

      Returns an `Enumeration` containing the names of the attributes available to this Principal. This method returns an empty `Enumeration` if the Principal has no attributes available to it.
      Returns:
        an `Enumeration` of strings containing the names of the Principal's attributes