Definición del modelo de ThingWorx en Composer > Seguridad > Autenticadores > Autenticadores de inicio de sesión > Configuración de la extensión de muestra del autenticador
Configuración de la extensión de muestra del autenticador
Siga los pasos que se indican a continuación para compilar, crear un manifiesto de extensión e implementar el algoritmo de estrategia de autenticación en los métodos de llamada de la extensión del autenticador. Para obtener más información sobre la creación extensiones personalizadas en ThingWorx, consulte Extensibilidad de ThingWorx.
Compilación
Es posible utilizar herramientas de compilación, como Ant o Gradle. En el script de compilación, se deberá compilar la clase Java que implementa las llamadas del método del autenticador (que se describe más adelante). Asegúrese de compilar con las bibliotecas de ThingWorx-Extension-SDK-x.x.x (ficheros jar) que sean compatibles con la versión de ThingWorx-Platform-x.x.x que se utiliza en tiempo de ejecución. Además, se debe incluir el fichero metadata.xml que se utiliza para registrar la extensión del autenticador con ThingWorx cuando se importa el fichero zip de extensión.
Creación de un manifiesto
1. Abra configfiles/metadata.xml.
2. En el elemento de recopilación de autenticadores (el ejemplo que se muestra a continuación), configure los siguientes parámetros según sea necesario:
<Entities>
<ExtensionPackages>
<ExtensionPackage name="Authenticators_Sample_BasicUser_ExtensionPackage"
description="Authenticators Sample BasicUser Extension Package"
vendor="ThingWorx"
packageVersion="1.0"
minimumThingWorxVersion="5.1.1">
<JarResources>
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar" description="Authenticators Sample BasicUser JAR file." />
</JarResources>
</ExtensionPackage>
</ExtensionPackages>
<Authenticators>
<Authenticator name="SampleBasicUserAuthenticator"
className="com.thingworx.security.authentication.samples.SampleBasicUserAuthenticator"
description="Sample Authenticator that validates against the Thingworx User"
aspect.isEditableExtensionObject="true">
</Authenticator>
</Authenticators>
</Entities>
a. Nombre del autenticador: se muestra en Composer. Debe ser un nombre único.
b. className: nombre de clase de la implementación que ThingWorx utiliza para crear instancias de la instancia de implementación del autenticador.
c. description: se muestra en Composer.
d. aspect.isEditableExtensionObject: se define en verdadero para que la configuración de prioridad activada se guarde en Composer. Este campo es obligatorio.
3. Configure el nombre de fichero jar del tipo de FileResource (véase a continuación):
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Guarde y cierre el fichero.
Implementación
Para la implementación, siga los pasos que se indican a continuación para el fichero JAR del autenticador adecuado:
1. Derive/amplíe desde la clase CustomAuthenticator.
* 
El parámetro SupportsSession permite el soporte de la sesión entre solicitudes y está definido en verdadero por defecto. Defínalo en false si no desea soportar una sesión entre solicitudes.
2. Implemente un constructor por defecto.
3. Sustituya los métodos del tipo de autenticador según sea necesario para la implementación:
Método
Descripción
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
Permite obtener información de la solicitud de autenticación entrante que se proporciona como el parámetro httpRequest. Para especificar que se puede gestionar la solicitud, el valor devuelto es true; si no es false. Si el valor devuelto es true, el tiempo de ejecución de ThingWorx llamará al método de autenticación (véase a continuación).

//… make SSO call or other algorithm to determine userName
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
// use validateThingworxUser to make sure the user is enabled and a Thingworx user
AuthenticationUtilities.validateThingworxUser(userName);
// Call setCredentials, so the Thingworx platform can provide the correct permissions and access to allowed content
this.setCredentials(userName);
}

// … or if not using SSO, but providing username and password
public void authenticate(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
{
AuthenticationUtilities.validateCredentials(user, password);
this.setCredentials(user, password);
}
En el caso de una estrategia de autenticación que proporciona solo el nombre de usuario (por ejemplo, SSO, donde la autenticación de usuarios se realiza en una aplicación independiente), utilice el primer conjunto de "validate" y "setCredentials", tal como se muestra en la columna izquierda.
En el caso de una estrategia de autenticación que proporciona un nombre de usuario y una contraseña, utilice el segundo conjunto de "validate" y "setCredentials", tal como se muestra en la columna izquierda.
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
devuelve AuthenticatorException
Este método no siempre es necesario. Sin embargo, si se devuelve una excepción del método de autenticación o si se define el señalizador RequiresChallenge en verdadero, se llamará al método issueAuthenticationchallenge.
Priorizaciones del autenticador por defecto
Los autenticadores del sistema tienen las siguientes priorizaciones por defecto. Este rango distribuido permite inyectar extensiones del autenticador en medio de la cadena de procesamiento, si lo desea el usuario. Estos autenticadores de objetos del sistema no se pueden reordenar, volver a priorizar, borrar ni cambiar en modo alguno.
ThingworxBasicAuthenticator: prioridad 100. Permite autenticar el nombre de usuario y la contraseña proporcionados.
ThingworxMobileTokenAuthenticator: prioridad 150. Mobile App Builder Authenticator que valida los tokens móviles de ThingWorx.
* 
Este authenticator está diseñado para una versión futura y actualmente está desactivado.
ThingworxApplicationKeyAuthenticator: prioridad 200. Permite autenticar la clave de aplicación proporcionada.
ThingworxFormAuthenticator: prioridad 300. Permite autenticar a través la conexión mediante formulario.
ThingworxMobileAuthorizationAuthenticator: prioridad 350. Mobile App Builder Authenticator que valida los usuarios o contraseñas de ThingWorx.
* 
Este authenticator está diseñado para una versión futura y actualmente está desactivado.
ThingworxHttpBasicAuthenticator: prioridad 400. Autenticación HTTP básica.
Implementación de un autenticador personalizado en Composer
1. En Composer, pulse en Importar/Exportar>Importar.
2. Localice el fichero <NombreFicheroZipExtensiónAutenticador>.zip.
3. Instale la extensión.
4. En el Explorador, pulse en Autenticadores.
5. Abra el autenticador adecuado.
6. En Información general, pulse en Activado.
* 
Todos los autenticadores están desactivados por defecto.
7. Pulse en Guardar.
Autenticadores en tiempo de ejecución
Es posible acceder a la extensión de autenticador en tiempo de ejecución. Normalmente, el valor inferior se procesa primero. Si hay dos autenticadores con el mismo valor de prioridad y ambos responden con el valor verdadero a la llamada de matchAuthenticationRequest, un efecto de orden no determinista provocará una gestión de la solicitud del autenticador no determinista en tiempo de ejecución. Por este motivo, se sugiere que dos autenticadores personalizados no tengan los mismos valores de prioridad para garantizar un orden de gestión de solicitud conocido. Si un autenticador falla en la gestión de una solicitud, el siguiente autenticador de la cadena tendrá la oportunidad de gestionar la solicitud y así sucesivamente, hasta que se produzca una autenticación válida. Si ningún autenticador personalizado puede gestionar la solicitud, los autenticadores del sistema de ThingWorx procesarán la solicitud y, probablemente, mostrarán un inicio de sesión de formulario para el nombre de usuario y contraseña.
Acceso a autenticadores en tiempo de ejecución
Para acceder a autenticadores en tiempo de ejecución, realice una solicitud al siguiente URL y proporcione los parámetros de consulta o cabecera, o el texto del mensaje que el autenticador personalizado puede recuperar y procesar desde el objeto httpRequest enviado durante los tres métodos de llamada del autenticador personalizado descritos anteriormente.
Server:Port/ThingWorx/Home
<host:puerto>/ThingWorx/Home?YourParameter=something
Vínculos relacionados