blob: 87059007682dbb7da7a9cb1f8368bf8a50d8eb2e [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.apache.guacamole.net.event;
import org.apache.guacamole.net.auth.AuthenticationProvider;
import org.apache.guacamole.net.auth.Credentials;
import org.apache.guacamole.net.event.listener.Listener;
/**
* An event which is triggered whenever a user's credentials fail to be
* authenticated. The credentials that failed to be authenticated are included
* within this event, and can be retrieved using getCredentials().
*/
public class AuthenticationFailureEvent implements AuthenticationProviderEvent,
CredentialEvent, FailureEvent {
/**
* The credentials which failed authentication.
*/
private final Credentials credentials;
/**
* The AuthenticationProvider that encountered the failure. This may be
* null if the AuthenticationProvider is not known, such as if the failure
* is caused by every AuthenticationProvider passively refusing to
* authenticate the user but without explicitly rejecting the user
* (returning null for calls to {@link AuthenticationProvider#authenticateUser(org.apache.guacamole.net.auth.Credentials)}),
* or if the failure is external to any installed AuthenticationProvider
* (such as within a {@link Listener}.
*/
private final AuthenticationProvider authProvider;
/**
* The Throwable that was thrown resulting in the failure, if any. This
* may be null if authentication failed without a known error, such as if
* the failure is caused by every AuthenticationProvider passively refusing
* to authenticate the user but without explicitly rejecting the user
* (returning null for calls to {@link AuthenticationProvider#authenticateUser(org.apache.guacamole.net.auth.Credentials)}).
*/
private final Throwable failure;
/**
* Creates a new AuthenticationFailureEvent which represents a failure
* to authenticate the given credentials where there is no specific
* AuthenticationProvider nor Throwable associated with the failure.
*
* @param credentials
* The credentials which failed authentication.
*/
public AuthenticationFailureEvent(Credentials credentials) {
this(credentials, null);
}
/**
* Creates a new AuthenticationFailureEvent which represents a failure
* to authenticate the given credentials where there is no specific
* AuthenticationProvider causing the failure.
*
* @param credentials
* The credentials which failed authentication.
*
* @param failure
* The Throwable that was thrown resulting in the failure, or null if
* there is no such Throwable.
*/
public AuthenticationFailureEvent(Credentials credentials, Throwable failure) {
this(credentials, null, failure);
}
/**
* Creates a new AuthenticationFailureEvent which represents a failure
* to authenticate the given credentials.
*
* @param credentials
* The credentials which failed authentication.
*
* @param authProvider
* The AuthenticationProvider that caused the failure, or null if there
* is no such AuthenticationProvider.
*
* @param failure
* The Throwable that was thrown resulting in the failure, or null if
* there is no such Throwable.
*/
public AuthenticationFailureEvent(Credentials credentials,
AuthenticationProvider authProvider, Throwable failure) {
this.credentials = credentials;
this.authProvider = authProvider;
this.failure = failure;
}
@Override
public Credentials getCredentials() {
return credentials;
}
/**
* {@inheritDoc}
*
* <p>NOTE: In the case of an authentication failure, cases where this may
* be null include if authentication failed without a definite single
* AuthenticationProvider causing that failure, such as if the failure is
* caused by every AuthenticationProvider passively refusing to
* authenticate the user but without explicitly rejecting the user
* (returning null for calls to {@link AuthenticationProvider#authenticateUser(org.apache.guacamole.net.auth.Credentials)}),
* or if the failure is external to any installed AuthenticationProvider
* (such as within a {@link Listener}.
*/
@Override
public AuthenticationProvider getAuthenticationProvider() {
return authProvider;
}
/**
* {@inheritDoc}
*
* <p>NOTE: In the case of an authentication failure, cases where this may
* be null include if authentication failed without a known error, such as
* if the failure is caused by every AuthenticationProvider passively
* refusing to authenticate the user but without explicitly rejecting the
* user (returning null for calls to {@link AuthenticationProvider#authenticateUser(org.apache.guacamole.net.auth.Credentials)}).
*/
@Override
public Throwable getFailure() {
return failure;
}
}