GUACAMOLE-1289: Move AuthenticationSession components to guacamole-exit.
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/NonceService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/NonceService.java
index 5717794..d43a004 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/NonceService.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/NonceService.java
@@ -19,11 +19,11 @@
 
 package org.apache.guacamole.auth.sso;
 
-import com.google.inject.Inject;
 import java.util.Iterator;
 import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
+import org.apache.guacamole.net.auth.IdentifierGenerator;
 
 /**
  * Service for generating and validating single-use random tokens (nonces).
@@ -32,12 +32,6 @@
 public class NonceService {
 
     /**
-     * Generator of arbitrary, unique, unpredictable identifiers.
-     */
-    @Inject
-    private IdentifierGenerator idGenerator;
-
-    /**
      * Map of all generated nonces to their corresponding expiration timestamps.
      * This Map must be periodically swept of expired nonces to avoid growing
      * without bound.
@@ -107,7 +101,7 @@
         sweepExpiredNonces();
 
         // Generate and store nonce, along with expiration timestamp
-        String nonce = idGenerator.generateIdentifier(NONCE_BITS, false);
+        String nonce = IdentifierGenerator.generateIdentifier(NONCE_BITS, false);
         nonces.put(nonce, System.currentTimeMillis() + maxAge);
         return nonce;
 
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSession.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSession.java
index bbd74e2..f89502d 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSession.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSession.java
@@ -19,7 +19,7 @@
 
 package org.apache.guacamole.auth.saml.acs;
 
-import org.apache.guacamole.auth.sso.AuthenticationSession;
+import org.apache.guacamole.net.auth.AuthenticationSession;
 
 /**
  * Representation of an in-progress SAML authentication attempt.
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSessionManager.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSessionManager.java
index 4adf82f..2371bb5 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSessionManager.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLAuthenticationSessionManager.java
@@ -20,7 +20,7 @@
 package org.apache.guacamole.auth.saml.acs;
 
 import com.google.inject.Singleton;
-import org.apache.guacamole.auth.sso.AuthenticationSessionManager;
+import org.apache.guacamole.net.auth.AuthenticationSessionManager;
 
 /**
  * Manager service that temporarily stores SAML authentication attempts while
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLService.java
index 2fe6da4..37d7fa9 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLService.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/acs/SAMLService.java
@@ -36,7 +36,7 @@
 import org.apache.guacamole.GuacamoleSecurityException;
 import org.apache.guacamole.GuacamoleServerException;
 import org.apache.guacamole.auth.saml.conf.ConfigurationService;
-import org.apache.guacamole.auth.sso.IdentifierGenerator;
+import org.apache.guacamole.net.auth.IdentifierGenerator;
 import org.xml.sax.SAXException;
 
 /**
@@ -59,12 +59,6 @@
     private SAMLAuthenticationSessionManager sessionManager;
 
     /**
-     * Generator of arbitrary, unique, unpredictable identifiers.
-     */
-    @Inject
-    private IdentifierGenerator idGenerator;
-
-    /**
      * Creates a new SAML request, beginning the overall authentication flow
      * that will ultimately result in an asserted user identity if the user is
      * successfully authenticated by the SAML IdP. The URI of the SSO endpoint
@@ -89,7 +83,7 @@
             Auth auth = new Auth(samlSettings, null, null);
 
             // Generate a unique ID to use for the relay state
-            String identifier = idGenerator.generateIdentifier();
+            String identifier = IdentifierGenerator.generateIdentifier();
 
             // Create the request URL for the SAML IdP
             String requestUrl = auth.login(
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java
index d2a73c4..47ead88 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-saml/src/main/java/org/apache/guacamole/auth/saml/conf/ConfigurationService.java
@@ -24,7 +24,6 @@
 import com.onelogin.saml2.settings.Saml2Settings;
 import com.onelogin.saml2.settings.SettingsBuilder;
 import com.onelogin.saml2.util.Constants;
-
 import java.io.File;
 import java.io.IOException;
 import java.net.URI;
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationEventListener.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationEventListener.java
index 26769ce..2d353b5 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationEventListener.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationEventListener.java
@@ -20,14 +20,8 @@
 package org.apache.guacamole.auth.ssl;
 
 import com.google.inject.Inject;
-import com.google.inject.Singleton;
-import org.apache.guacamole.GuacamoleException;
-import org.apache.guacamole.auth.ssl.SSLAuthenticationSessionManager;
 import org.apache.guacamole.auth.sso.SSOAuthenticationEventListener;
 import org.apache.guacamole.net.auth.Credentials;
-import org.apache.guacamole.net.event.AuthenticationFailureEvent;
-import org.apache.guacamole.net.event.AuthenticationSuccessEvent;
-import org.apache.guacamole.net.event.listener.Listener;
 
 /**
  * A Listener that will reactivate or invalidate SSL auth sessions depending on
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSession.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSession.java
index 4a4c9ce..41813a4 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSession.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSession.java
@@ -19,7 +19,7 @@
 
 package org.apache.guacamole.auth.ssl;
 
-import org.apache.guacamole.auth.sso.AuthenticationSession;
+import org.apache.guacamole.net.auth.AuthenticationSession;
 
 /**
  * Representation of an in-progress SSL/TLS authentication attempt.
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSessionManager.java b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSessionManager.java
index fc1b084..252a2c9 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSessionManager.java
+++ b/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-ssl/src/main/java/org/apache/guacamole/auth/ssl/SSLAuthenticationSessionManager.java
@@ -20,7 +20,7 @@
 package org.apache.guacamole.auth.ssl;
 
 import com.google.inject.Singleton;
-import org.apache.guacamole.auth.sso.AuthenticationSessionManager;
+import org.apache.guacamole.net.auth.AuthenticationSessionManager;
 
 /**
  * Manager service that temporarily stores SSL/TLS authentication attempts
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSession.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSession.java
similarity index 97%
rename from extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSession.java
rename to guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSession.java
index 89d75df..8d13e61 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSession.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSession.java
@@ -17,7 +17,7 @@
  * under the License.
  */
 
-package org.apache.guacamole.auth.sso;
+package org.apache.guacamole.net.auth;
 
 /**
  * Representation of an in-progress authentication attempt.
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSessionManager.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSessionManager.java
similarity index 94%
rename from extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSessionManager.java
rename to guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSessionManager.java
index 11ef307..d8a47f4 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/AuthenticationSessionManager.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/AuthenticationSessionManager.java
@@ -17,10 +17,7 @@
  * under the License.
  */
 
-package org.apache.guacamole.auth.sso;
-
-import com.google.inject.Inject;
-import com.google.inject.Singleton;
+package org.apache.guacamole.net.auth;
 
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
@@ -39,14 +36,7 @@
  * @param <T>
  *     The type of sessions managed by this session manager.
  */
-@Singleton
-public class AuthenticationSessionManager<T extends AuthenticationSession> {
-
-    /**
-     * Generator of arbitrary, unique, unpredictable identifiers.
-     */
-    @Inject
-    private IdentifierGenerator idGenerator;
+public abstract class AuthenticationSessionManager<T extends AuthenticationSession> {
 
     /**
      * Map of authentication session identifiers to their associated
@@ -98,7 +88,7 @@
      *     token.
      */
     public String generateInvalid() {
-        return idGenerator.generateIdentifier();
+        return IdentifierGenerator.generateIdentifier();
     }
 
     /**
@@ -193,7 +183,7 @@
      *     given session when calling resume().
      */
     public String defer(T session) {
-        String identifier = idGenerator.generateIdentifier();
+        String identifier = IdentifierGenerator.generateIdentifier();
         sessions.put(identifier, session);
         return identifier;
     }
diff --git a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/IdentifierGenerator.java b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/IdentifierGenerator.java
similarity index 91%
rename from extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/IdentifierGenerator.java
rename to guacamole-ext/src/main/java/org/apache/guacamole/net/auth/IdentifierGenerator.java
index 82538c6..fcc365a 100644
--- a/extensions/guacamole-auth-sso/modules/guacamole-auth-sso-base/src/main/java/org/apache/guacamole/auth/sso/IdentifierGenerator.java
+++ b/guacamole-ext/src/main/java/org/apache/guacamole/net/auth/IdentifierGenerator.java
@@ -17,10 +17,9 @@
  * under the License.
  */
 
-package org.apache.guacamole.auth.sso;
+package org.apache.guacamole.net.auth;
 
 import com.google.common.io.BaseEncoding;
-import com.google.inject.Singleton;
 import java.math.BigInteger;
 import java.security.SecureRandom;
 
@@ -29,14 +28,13 @@
  * is an arbitrary, random string produced using a cryptographically-secure
  * random number generator.
  */
-@Singleton
 public class IdentifierGenerator {
 
     /**
      * Cryptographically-secure random number generator for generating unique
      * identifiers.
      */
-    private final SecureRandom secureRandom = new SecureRandom();
+    private static final SecureRandom secureRandom = new SecureRandom();
 
     /**
      * Generates a unique and unpredictable identifier. Each identifier is at
@@ -48,7 +46,7 @@
      *     A unique and unpredictable identifier with at least 256 bits of
      *     entropy.
      */
-    public String generateIdentifier() {
+    public static String generateIdentifier() {
         return generateIdentifier(256);
     }
 
@@ -65,7 +63,7 @@
      *     A unique and unpredictable identifier with at least the given number
      *     of bits of entropy.
      */
-    public String generateIdentifier(int minBits) {
+    public static String generateIdentifier(int minBits) {
         return generateIdentifier(minBits, true);
     }
 
@@ -87,7 +85,7 @@
      *     A unique and unpredictable identifier with at least the given number
      *     of bits of entropy.
      */
-    public String generateIdentifier(int minBits, boolean caseSensitive) {
+    public static String generateIdentifier(int minBits, boolean caseSensitive) {
 
         // Generate a base64 identifier if we're allowed to vary by case
         if (caseSensitive) {