Définition du modèle ThingWorx dans Composer > Sécurité > Authentificateurs > Authentificateurs de connexion > Configuration d'un exemple d'extension d'authentificateur
Configuration d'un exemple d'extension d'authentificateur
Suivez la procédure ci-après pour élaborer et créer un manifeste d'extension, puis pour mettre en oeuvre votre algorithme de stratégie d'authentification dans les méthodes de rappel des extensions Authentificateur. Pour en savoir plus sur la création d'extensions personnalisées dans ThingWorx, consultez la rubrique ThingWorx Extensibilité.
Construction
Vous pouvez recourir à des outils de construction tels que Ant ou Gradle. Dans le script de construction, vous devez compiler la classe Java qui implémente les rappels de méthode d'authentificateur (abordées ultérieurement). Veillez à effectuer la compilation en tenant compte des bibliothèques ThingWorx-Extension-SDK-x.x.x (fichiers jar) qui sont compatibles avec la version ThingWorx-Platform-x.x.x que vous utilisez à l'exécution. Pensez également à inclure le fichier metadata.xml utilisé pour enregistrer l'extension d'authentificateur avec ThingWorx lorsque votre fichier zip d'extension est importé.
Création d'un manifeste
1. Ouvrez configfiles/metadata.xml.
2. Dans l'élément de collection d'authentificateurs (exemple illustré ci-dessous), configurez les paramètres suivants selon les besoins :
<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. Authenticator name : affiché dans Composer. Doit être un nom unique.
b. className : nom de classe de l'implémentation utilisée par ThingWorx pour instancier l'instance d'implémentation de l'authentificateur.
c. description : affichée dans Composer.
d. aspect.isEditableExtensionObject : propriété définie sur "vrai" pour permettre l'enregistrement dans Composer des paramètres de priorité activés. Cela est nécessaire.
3. Configurez le nom du fichier jar type FileResource (voir ci-dessous) :
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Enregistrez et fermez le fichier.
Implémentation
Pour l'implémentation, procédez comme suit pour le fichier JAR d'authentificateur approprié :
1. Dérivez/étendez la classe CustomAuthenticator.
* 
Le paramètre SupportsSession permet la prise en charge d'une session entre les requêtes et prend la valeur "vrai" par défaut. Définissez-le sur false si vous ne souhaitez pas prendre en charge une session entre deux requêtes.
2. Implémentez un constructeur par défaut.
3. Ecrasez les méthodes de type d'authentificateur selon les besoins de votre implémentation :
Méthode
Description
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
Vous permet d'obtenir des informations sur la requête d'authentification entrante fournie avec le paramètre httpRequest. Pour spécifier que vous pouvez gérer la requête, renvoyez true ; sinon, false. Si la valeur de retour est true, le runtime ThingWorx appellera la méthode d'authentification (voir ci-dessous).

//… 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);
}
Dans le cas d'une stratégie d'authentification qui fournit uniquement le nom d'utilisateur (authentification SSO, par exemple, où l'authentification de l'utilisateur est effectuée dans une application séparée), utilisez le premier jeu de "validate" et "setCredentials", comme illustré dans la colonne de gauche.
Dans le cas d'une stratégie d'authentification qui fournit un nom d'utilisateur et un mot de passe, utilisez le second jeu de "validate" et "setCredentials", comme illustré dans la colonne de gauche.
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
génère une AuthenticatorException
Cette méthode n'est pas toujours nécessaire. Toutefois, si une exception est générée à partir de la méthode d'authentification ou si vous définissez le marqueur RequiresChallenge sur "vrai", la méthode issueAuthenticationchallenge sera appelée.
Valeurs de priorité par défaut des authentificateurs
Les priorités par défaut définies pour les authentificateurs système sont les suivantes. Cette plage distribuée permet d'injecter au besoin des extensions d'authentificateur dans la chaîne de traitement en les intercalant. Ces authentificateurs d'objet système ne peuvent en aucun cas être réordonnés, repriorisés, supprimés ou modifiés.
ThingworxBasicAuthenticator : priorité 100. Authentifie le nom d'utilisateur et le mot de passe fournis.
ThingworxMobileTokenAuthenticator : priorité 150. Authentificateur Mobile App Builder dont la validation est adossée à des jetons mobiles ThingWorx.
* 
Cet authentificateur est prévu pour une version ultérieure, et est actuellement désactivé.
ThingworxApplicationKeyAuthenticator : priorité 200. Authentification de la clé d'application fournie.
ThingworxFormAuthenticator : priorité 300. Authentification via une connexion par formulaire.
ThingworxMobileAuthorizationAuthenticator : priorité 350. Authentificateur Mobile App Builder dont la validation s'effectue sur la base des noms d'utilisateur/mots de passe ThingWorx.
* 
Cet authentificateur est prévu pour une version ultérieure, et est actuellement désactivé.
ThingworxHttpBasicAuthenticator : priorité 400. Authentification HTTP de base.
Déploiement d'un authentificateur personnalisé dans Composer
1. Dans Composer, cliquez sur Importer/Exporter>Importer.
2. Localisez le fichier <YourAuthenticatorExtensionZipName>.zip.
3. Installez l'extension.
4. Dans l'Explorateur, cliquez sur Authentificateurs.
5. Ouvrez l'authentificateur approprié.
6. Dans Informations générales, cliquez sur Activé.
* 
Tous les authentificateurs sont désactivés par défaut.
7. Cliquez sur Enregistrer.
Authentificateurs lors de l'exécution
L'extension d'authentificateur est accessible lors de l'exécution. En général, la valeur la plus faible est traitée en premier. S'il existe deux authentificateurs avec la même valeur de priorité et que les deux répondent "vrai" au rappel matchAuthenticationRequest, alors un effet d'ordre non-déterministe entraînera un traitement non déterministe de la requête d'authentification au moment de l'exécution. Pour cette raison, il est recommandé que deux authentificateurs personnalisés n'aient pas les mêmes valeurs de priorité, afin de préserver un ordre connu de traitement des requêtes. Si un authentificateur ne parvient pas à traiter une requête, l'authentificateur suivant dans la chaîne sera sollicité pour traiter la requête et ainsi de suite jusqu'à ce qu'une authentification valide ait lieu. Si aucun authentificateur personnalisé ne peut gérer la requête, les authentificateurs système ThingWorx la traiteront et proposeront probablement un écran de connexion demandant le nom de l'utilisateur et son mot de passe.
Accès aux authentificateurs lors de l'exécution
Pour accéder aux authentificateurs lors de l'exécution, adressez une requête à l'URL ci-après, et fournissez les paramètres d'interrogation ou d'en-tête ou encore le corps du message que l'authentificateur personnalisé peut récupérer et traiter à partir de l'objet httpRequest au cours des trois méthodes de rappel d'authentificateur personnalisé évoquées précédemment.
Server:Port/ThingWorx/Home
<host:port>/ThingWorx/Home?YourParameter=something
Rubriques connexes