Package org.apache.activemq.artemis.spi.core.security

## Interface ActiveMQSecurityManager3

- All Superinterfaces:
    `ActiveMQSecurityManager`

      public interface ActiveMQSecurityManager3
      extends ActiveMQSecurityManager

  Used to validate whether a user is authorized to connect to the server and perform certain functions on certain destinations. This is an evolution of `ActiveMQSecurityManager` and `ActiveMQSecurityManager2` that adds the ability to determine the identity of the validated user.

- - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `java.lang.String` | `validateUser​(java.lang.String user, java.lang.String password, RemotingConnection remotingConnection)` | is this a valid user.
    `java.lang.String` | `validateUserAndRole​(java.lang.String user, java.lang.String password, java.util.Set<org.apache.activemq.artemis.core.security.Role> roles, org.apache.activemq.artemis.core.security.CheckType checkType, java.lang.String address, RemotingConnection remotingConnection)` | Determine whether the given user is valid and whether they have the correct role for the given destination address.

    - ### Methods inherited from interface org.apache.activemq.artemis.spi.core.security.ActiveMQSecurityManager

      `getDomain, init, validateUser, validateUserAndRole`

- - ### Method Detail

    - #### validateUser

          java.lang.String validateUser​(java.lang.String user,
                                        java.lang.String password,
                                        RemotingConnection remotingConnection)

      is this a valid user. This method is called instead of `ActiveMQSecurityManager.validateUser(String, String)`.
      Parameters:
        `user` - the user
        `password` - the users password
        `remotingConnection` -
      Returns:
        the name of the validated user or null if the user isn't validated

    - #### validateUserAndRole

          java.lang.String validateUserAndRole​(java.lang.String user,
                                               java.lang.String password,
                                               java.util.Set<org.apache.activemq.artemis.core.security.Role> roles,
                                               org.apache.activemq.artemis.core.security.CheckType checkType,
                                               java.lang.String address,
                                               RemotingConnection remotingConnection)

      Determine whether the given user is valid and whether they have the correct role for the given destination address. This method is called instead of `ActiveMQSecurityManager.validateUserAndRole(String, String, Set, CheckType)`.
      Parameters:
        `user` - the user
        `password` - the user's password
        `roles` - the user's roles
        `checkType` - which permission to validate
        `address` - the address for which to perform authorization
        `remotingConnection` - the user's connection
      Returns:
        the name of the validated user or null if the user isn't validated