Catch CAS errors and throw them to Guacamole, and display error message in login dialog.
@@ -33,6 +33,8 @@ import org.apache.guacamole.GuacamoleException;
import org.apache.guacamole.GuacamoleServerException;
import org.apache.guacamole.auth.cas.conf.ConfigurationService;
import org.apache.guacamole.net.auth.Credentials;
+import org.apache.guacamole.net.auth.credentials.CredentialsInfo;
+import org.apache.guacamole.net.auth.credentials.GuacamoleInsufficientCredentialsException;
import org.jasig.cas.client.authentication.AttributePrincipal;
import org.jasig.cas.client.validation.Assertion;
import org.jasig.cas.client.validation.Cas20ProxyTicketValidator;
@@ -109,6 +111,10 @@ public class TicketValidationService {
catch (TicketValidationException e) {
throw new GuacamoleException("Ticket validation failed.", e);
}
+ catch (Throwable t) {
+ logger.error("Error validating ticket with CAS server: {}", t.getMessage());
+ throw new GuacamoleInsufficientCredentialsException("Error validating ticket with CAS server.", t, CredentialsInfo.USERNAME_PASSWORD);
+ }
}
