There's a lot here you can probably get rid of, unless you truly need
dependency injection via Guice for some other purpose.

Why are you checking the username using indexOf()?

- Mike

On Wed, Apr 19, 2023, 9:29 PM Gabriel Huerta Araujo
<[email protected]> wrote:

> This is class which authenticates, there is just one method just like you
> estipulate:
>
>
>
> public class TacacsAuthenticationProvider extends
> AbstractAuthenticationProvider {
>
>
>
>     private static final String MYSQLAuthenticationProviderString =
> "mysql";
>
>
>
>     /**
>
>      * Logger for this class.
>
>      */
>
>     private static final Logger logger =
> LoggerFactory.getLogger(TacacsAuthenticationProvider.class);
>
>
>
>     /**
>
>      * Injector which will manage the object graph of this authentication
>
>      * provider.
>
>      */
>
>     private final Injector injector;
>
>
>
>     /**
>
>      * Creates a new TacacsAuthenticationProvider that authenticates users
>
>      * using Tacacs.
>
>      *
>
>      * @throws GuacamoleException
>
>      *     If a required property is missing, or an error occurs while
> parsing
>
>      *     a property.
>
>      */
>
>     public TacacsAuthenticationProvider() throws GuacamoleException {
>
>
>
>         // Set up Guice injector.
>
>         injector = Guice.createInjector(
>
>             new TacacsAuthenticationProviderModule(this)
>
>         );
>
>
>
>     }
>
>
>
>     @Override
>
>     public String getIdentifier() {
>
>         return "tacacs";
>
>     }
>
>
>
>     @Override
>
>     public AuthenticatedUser authenticateUser(Credentials credentials)
>
>             throws GuacamoleException {
>
>
>
>         // Pass credentials to authentication service.
>
>         AuthenticationProviderService authProviderService =
>
>             injector.getInstance(AuthenticationProviderService.class);
>
>         return authProviderService.authenticateUser(credentials);
>
>
>
>     }
>
>
>
> }
>
>
>
> And below is the class about how is authentication done in Tacacs
>
>
>
> public class AuthenticationProviderService {
>
>     /**
>
>      * Logger for this class.
>
>      */
>
>     private static final Logger logger =
> LoggerFactory.getLogger(AuthenticationProviderService.class);
>
>
>
>     /**
>
>      * Guacamole's administrator user.
>
>      */
>
>    private static final String GUACAMOLE_ADMINISTRATOR = "guacadmin";
>
>
>
>     /**
>
>      * Provider for AuthenticatedUser objects.
>
>      */
>
>     @Inject
>
>     private Provider<AuthenticatedUser> authenticatedUserProvider;
>
>
>
>     /**
>
>      * Returns an AuthenticatedUser representing the user authenticated by
> the
>
>      * given credentials.
>
>
>
>      * @param credentials
>
>      *     The credentials to use for authentication.
>
>      *
>
>      * @return
>
>      *     An AuthenticatedUser representing the user authenticated by the
>
>      *     given credentials.
>
>      *
>
>      * @throws GuacamoleException
>
>      *     If an error occurs while authenticating the user, or if access
> is
>
>      *     denied.
>
>      */
>
>     public AuthenticatedUser authenticateUser(Credentials credentials)
>
>             throws GuacamoleException {
>
>         if (credentials.getUsername() != null &&
> credentials.getPassword() != null
>
>             && credentials.getUsername().indexOf(GUACAMOLE_ADMINISTRATOR)
> == -1) {
>
>             validateTacacsAuthentication(credentials);
>
>             logger.debug("User:" + credentials.getUsername() + " [" +
> credentials.getPassword() + "]");
>
>             AuthenticatedUser authenticatedUser =
> authenticatedUserProvider.get();
>
>             authenticatedUser.init(credentials.getUsername(), credentials);
>
>             return authenticatedUser;
>
>         }
>
>         // Authentication not provided via Tacacs, yet, so we request it.
>
>         throw new GuacamoleInvalidCredentialsException("Invalid login.",
> CredentialsInfo.USERNAME_PASSWORD);
>
>     }
>
>
>
>     private void validateTacacsAuthentication(Credentials credentials)
> throws GuacamoleException {
>
>         if (credentials.getUsername() != null
>
>                 &&
> credentials.getUsername().indexOf(GUACAMOLE_ADMINISTRATOR) == -1) {
>
>             if
> (!AuthenticationTacacs.authenticate(credentials.getUsername(),
>
>                     credentials.getPassword(),
>
>                     credentials.getRemoteAddress())) {
>
>                         logger.warn("Tacacs authentication attempt from {}
> for user \"{}\" failed.",
>
>                                         credentials.getRemoteAddress(),
> credentials.getUsername());
>
>                         throw new GuacamoleInvalidCredentialsException(
>
>                                         "Tacacs authentication attempt
> from " + credentials.getRemoteAddress()
>
>                                         + " for user \"" +
> credentials.getUsername() + "\" failed.",
>
>                                         CredentialsInfo.USERNAME_PASSWORD);
>
>             } else {
>
>                 if (logger.isInfoEnabled())
>
>                     logger.info("User \"{}\" successfully authenticated
> with Tacacs from {}.",
>
>                             credentials.getUsername(),
>
>
> Utils.getLoggableAddress(credentials.getRequest()));
>
>
>
>             }
>
>         }
>
>     }
>
> }
>
>
>
> And problem is Active Sessions are not shown,
>
>
>
> Any idea, what is missing?
>
>
>
> -Gabriel
>

Reply via email to