Definizione del modello ThingWorx in Composer > Protezione > Autenticatori > Autenticatori di accesso > Configurazione di un'estensione dell'autenticatore di esempio
Configurazione di un'estensione dell'autenticatore di esempio
Attenersi alle procedure riportate di seguito per completare le attività di creazione, creare un manifest di estensione e implementare l'algoritmo per la strategia di autenticazione nei metodi di callback dell'estensione dell'autenticatore. Per ulteriori informazioni sulla creazione di estensioni personalizzate in ThingWorx, fare riferimento a Estendibilità di ThingWorx.
Creazione
È possibile utilizzare strumenti di creazione come Ant o Gradle. Nello script di creazione è necessario compilare la classe Java che implementa i callback del metodo dell'autenticatore (illustrati in seguito). Assicurarsi di eseguire la compilazione conformemente alle librerie Thingworx-Extension-SDK-x.x.x (file JAR) compatibili con la versione di Thingworx-Platform-x.x.x utilizzata in fase di esecuzione. Ricordarsi di includere anche il file metadata.xml utilizzato per registrare l'estensione dell'autenticatore in ThingWorx durante l'importazione del file ZIP dell'estensione.
Creazione di un manifest
1. Aprire il file configfiles/metadata.xml.
2. Nell'elemento di raccolta degli autenticatori (esempio riportato di seguito) configurare i parametri seguenti in base alle necessità:
<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 - Visualizzato in Composer. Deve essere un nome univoco.
b. className - Nome della classe dell'implementazione utilizzata da ThingWorx per creare l'istanza di implementazione dell'autenticatore.
c. description - Visualizzato in Composer.
d. aspect.isEditableExtensionObject - Impostare su true per consentire il salvataggio in Composer delle impostazioni di priorità attivate. Questo passo è obbligatorio.
3. Configurare il nome del file JAR del tipo FileResource (vedere di seguito):
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Salvare e chiudere il file.
Implementazione
Per l'implementazione, attenersi alla procedura descritta di seguito per il file JAR dell'autenticatore appropriato.
1. Derivare/estendere dalla classe CustomAuthenticator.
* 
Il parametro SupportsSession consente il supporto delle sessioni tra le richieste ed è impostato su true per default. Impostarlo su false se non si desidera supportare una sessione tra le richieste.
2. Implementare un costruttore di default.
3. Sostituire i metodi del tipo di autenticatore, in base a quanto necessario per l'implementazione.
Metodo
Descrizione
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
Consente di ottenere informazioni dalla richiesta di autenticazione in entrata fornita come parametro httpRequest. Per specificare che si è in grado di gestire la richiesta, restituire true. In caso contrario, false. Se il valore restituito è true, il runtime di ThingWorx chiama il metodo di autenticazione (vedere di seguito).

//… 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);
}
In caso di strategia di autenticazione che fornisce solo il nome utente (come ad esempio SSO, in cui l'autenticazione utente viene eseguita in un'applicazione separata), utilizzare il primo insieme di "validate" e "setCredentials" riportato nella colonna di sinistra.
In caso di strategia di autenticazione che fornisce nome utente e password, utilizzare il secondo insieme di "validate" e "setCredentials" riportato nella colonna di sinistra.
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
genera AuthenticatorException
Questo metodo non è sempre necessario. Se tuttavia viene generata un'eccezione dal metodo di autenticazione o se il flag RequiresChallenge è impostato su true, viene richiamato il metodo issueAuthenticationchallenge.
Priorità di default dell'autenticatore
Gli autenticatori di sistema presentano le priorità di default descritte di seguito. Se necessario, questo intervallo distribuito consente di inserire le estensioni dell'autenticatore nella catena di elaborazione. Questi autenticatori degli oggetti di sistema non possono essere riordinati, eliminati o modificati in alcun modo, né è possibile modificarne la priorità.
ThingworxBasicAuthenticator - Priorità 100. Autentica il nome utente e la password forniti.
ThingworxMobileTokenAuthenticator - Priorità 150. Mobile App Builder Authenticator che esegue la convalida rispetto a token mobili ThingWorx.
* 
Questo autenticatore è destinato a una release successiva ed è attualmente disattivato.
ThingworxApplicationKeyAuthenticator - Priorità 200. Autentica la chiave di accesso fornita.
ThingworxFormAuthenticator - Priorità 300. Esegue l'autenticazione tramite accesso basato su modulo.
ThingworxMobileAuthorizationAuthenticator - Priorità 350. Mobile App Builder Authenticator che esegue la convalida rispetto a utente/password di ThingWorx.
* 
Questo autenticatore è destinato a una release successiva ed è attualmente disattivato.
ThingworxHttpBasicAuthenticator - Priorità 400. Autenticazione HTTP di base.
Distribuzione di un autenticatore personalizzato in Composer
1. In Composer fare clic su Importazione/Esportazione>Importazione.
2. Individuare il file <NomeZipEstensioneAutenticatore>.zip.
3. Installare l'estensione.
4. Nel Navigatore fare clic su Autenticatori.
5. Aprire l'autenticatore appropriato.
6. In Informazioni generali fare clic su Attivato.
* 
Tutti gli autenticatori sono disattivati per default.
7. Fare clic su Salva.
Autenticatori in fase di esecuzione
L'estensione dell'autenticatore è accessibile in fase di esecuzione. Generalmente il valore più basso viene elaborato per primo. Se sono presenti due autenticatori con lo stesso valore di priorità ed entrambi rispondono true al callback matchAuthenticationRequest, l'effetto di un ordine non deterministico causa una gestione non deterministica della richiesta dell'autenticatore in fase di esecuzione. Per questo motivo, si consiglia si evitare che due autenticatori personalizzati abbiano gli stessi valori di priorità, al fine di garantire un ordine di gestione della richiesta noto. Se un autenticatore non riesce a gestire una richiesta, viene data la possibilità di gestirla all'autenticatore successivo della catena e così via fino al raggiungimento di un'autenticazione valida. Se nessun autenticatore personalizzato è in grado di gestire la richiesta, gli autenticatori di sistema di ThingWorx elaborano la richiesta e visualizzano probabilmente un accesso basato su modulo per nome utente e password.
Accesso agli autenticatori in fase di esecuzione
Per accedere agli autenticatori in fase di esecuzione, eseguire una richiesta all'URL riportato di seguito e specificare l'interrogazione, i parametri dell'intestazione o il corpo del messaggio che l'autenticatore personalizzato può recuperare ed elaborare dall'oggetto httpRequest inoltrato durante i tre metodi di callback dell'autenticatore personalizzato illustrati in precedenza.
Server:Port/Thingworx/Home
<host:porta>/Thingworx/Home?Parametro=valore
Link correlati