Interface RealmIdentity

  • All Known Subinterfaces:
    ModifiableRealmIdentity

    public interface RealmIdentity
    A representation of a pre-authentication identity. The life of a RealmIdentity is short and is for a specific authentication attempt. A SecurityRealm creating a RealmIdentity does not confirm the existence of the identity. The exists() method must be used for that purpose.
    Author:
    Darran Lofthouse
    • Field Detail

      • ANONYMOUS

        static final RealmIdentity ANONYMOUS
        The anonymous realm identity.
      • NON_EXISTENT

        static final RealmIdentity NON_EXISTENT
        An identity for a non-existent user.
    • Method Detail

      • getRealmIdentityPrincipal

        Principal getRealmIdentityPrincipal()
        Get the principal that canonically identifies the identity within the realm. This method may return the principal object which was passed in as a parameter to SecurityRealm.getRealmIdentity(Principal) (a.k.a. domain principal), but is not required to do so. Any existent realm identity (i.e. any identity which returns true on invocation of exists()) must return a non-null principal.
        Returns:
        the principal for this realm identity (may not be null)
      • getCredentialAcquireSupport

        SupportLevel getCredentialAcquireSupport​(Class<? extends Credential> credentialType,
                                                 String algorithmName,
                                                 AlgorithmParameterSpec parameterSpec)
                                          throws RealmUnavailableException
        Determine whether a given credential type is definitely obtainable, possibly obtainable, or definitely not obtainable for this identity.
        Parameters:
        credentialType - the exact credential type (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the credential type does not support algorithm names
        parameterSpec - the algorithm parameters to match, or null if any parameters are acceptable or the credential type does not support algorithm parameters
        Returns:
        the level of support for this credential type (may not be null)
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • getCredential

        <C extends Credential> C getCredential​(Class<C> credentialType)
                                        throws RealmUnavailableException
        Acquire a credential of the given type.
        Type Parameters:
        C - the credential type
        Parameters:
        credentialType - the credential type class (must not be null)
        Returns:
        the credential, or null if no such credential exists
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • getCredential

        default <C extends Credential> C getCredential​(Class<C> credentialType,
                                                       String algorithmName)
                                                throws RealmUnavailableException
        Acquire a credential of the given type and algorithm name. Realms which support more than one credential of a given type must override this method.
        Type Parameters:
        C - the credential type
        Parameters:
        credentialType - the credential type class (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the credential type does not support algorithm names
        Returns:
        the credential, or null if no such credential exists
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • getCredential

        default <C extends Credential> C getCredential​(Class<C> credentialType,
                                                       String algorithmName,
                                                       AlgorithmParameterSpec parameterSpec)
                                                throws RealmUnavailableException
        Acquire a credential of the given type and algorithm name. Realms which support more than one credential of a given type and algorithm must override this method.
        Type Parameters:
        C - the credential type
        Parameters:
        credentialType - the credential type class (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the credential type does not support algorithm names
        parameterSpec - the algorithm parameters to match, or null if any parameters are acceptable or the credential type does not support algorithm parameters
        Returns:
        the credential, or null if no such credential exists
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • applyToCredential

        default <C extends Credential,​R> R applyToCredential​(Class<C> credentialType,
                                                                   Function<C,​R> function)
                                                            throws RealmUnavailableException
        Apply the given function to the acquired credential, if it is set and of the given type.
        Type Parameters:
        C - the credential type
        R - the return type
        Parameters:
        credentialType - the credential type class (must not be null)
        function - the function to apply (must not be null)
        Returns:
        the result of the function, or null if the criteria are not met
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • applyToCredential

        default <C extends Credential,​R> R applyToCredential​(Class<C> credentialType,
                                                                   String algorithmName,
                                                                   Function<C,​R> function)
                                                            throws RealmUnavailableException
        Apply the given function to the acquired credential, if it is set and of the given type and algorithm.
        Type Parameters:
        C - the credential type
        R - the return type
        Parameters:
        credentialType - the credential type class (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the credential type does not support algorithm names
        function - the function to apply (must not be null)
        Returns:
        the result of the function, or null if the criteria are not met
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • applyToCredential

        default <C extends Credential,​R> R applyToCredential​(Class<C> credentialType,
                                                                   String algorithmName,
                                                                   AlgorithmParameterSpec parameterSpec,
                                                                   Function<C,​R> function)
                                                            throws RealmUnavailableException
        Apply the given function to the acquired credential, if it is set and of the given type, algorithm, and parameters.
        Type Parameters:
        C - the credential type
        R - the return type
        Parameters:
        credentialType - the credential type class (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the credential type does not support algorithm names
        parameterSpec - the algorithm parameters to match, or null if any parameters are acceptable or the credential type does not support algorithm parameters
        function - the function to apply (must not be null)
        Returns:
        the result of the function, or null if the criteria are not met
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • getEvidenceVerifySupport

        SupportLevel getEvidenceVerifySupport​(Class<? extends Evidence> evidenceType,
                                              String algorithmName)
                                       throws RealmUnavailableException
        Determine whether a given type of evidence is definitely verifiable, possibly verifiable, or definitely not verifiable.
        Parameters:
        evidenceType - the type of evidence to be verified (must not be null)
        algorithmName - the algorithm name, or null if any algorithm is acceptable or the evidence type does not support algorithm names
        Returns:
        the level of support for this evidence type
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • verifyEvidence

        boolean verifyEvidence​(Evidence evidence)
                        throws RealmUnavailableException
        Verify the given evidence against a credential of this identity. The credential to be used is selected based on the evidence type.
        Parameters:
        evidence - the evidence to verify
        Returns:
        true if verification was successful, false otherwise
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • exists

        boolean exists()
                throws RealmUnavailableException
        Determine if the identity exists in lieu of verifying or acquiring a credential. This method is intended to be used to verify an identity for non-authentication purposes only. Implementations of this method should return false up until the point it is known that a call to getAuthorizationIdentity() can successfully return an identity. If a realm can load an identity independently of credential acquisition and evidence verification if not already loaded it should be loaded at the time of this call to return an accurate result.
        Returns:
        true if the identity exists in this realm, false otherwise
        Throws:
        RealmUnavailableException - if the realm is not able to handle requests for any reason
      • dispose

        default void dispose()
        Dispose this realm identity after a completed authentication attempt.
      • getAttributes

        default Attributes getAttributes()
                                  throws RealmUnavailableException
        Get the attributes for the realm identity.
        Returns:
        the attributes, or null if the implementing class does not support getting attributes
        Throws:
        RealmUnavailableException - if accessing the attributes fails for some reason