ThingWorx Modelldefinition in Composer > Sicherheit > Authentifikatoren > Anmelde-Authentifikatoren > Beispielkonfiguration für Authentifikatorerweiterung
Beispielkonfiguration für Authentifikatorerweiterung
Verwenden Sie die Schritte unten, um einen Build zu definieren, ein Erweiterungsmanifest zu erstellen und Ihren Authentifizierungsstrategie-Algorithmus in den Callback-Methoden für die Authentifikatorerweiterung zu implementieren. Weitere Informationen zum Erstellen benutzerdefinierter Erweiterungen in ThingWorx finden Sie unter ThingWorx Erweiterbarkeit.
Building
Build-Tools wie Ant oder Gradle können verwendet werden. In Ihrem Build-Skript müssen Sie die Java-Klasse kompilieren, die die Authentifikatormethoden-Callbacks implementiert (wird später erörtert). Kompilieren Sie anhand der Bibliotheken (JAR-Dateien) des Typs Thingworx-Extension-SDK-x.x.x, die mit der Version von Thingworx-Platform-x.x.x kompatibel sind, die Sie zur Laufzeit verwenden. Denken Sie daran, auch die Datei metadata.xml einzuschließen, die verwendet wird, um Ihre Authentifikatorerweiterung mit ThingWorx zu registrieren, wenn die Zip mit der Erweiterung importiert wird.
Manifeste erstellen
1. Öffnen Sie configfiles/metadata.xml.
2. Konfigurieren Sie im Authenticators-Sammlungselement (Beispiel unten) die folgenden Parameter nach Bedarf:
<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 – Wird in Composer angezeigt. Muss ein eindeutiger Name sein.
b. className – Klassenname der Implementierung, der von ThingWorx verwendet wird, um die Authentifikator-Implementierungsinstanz zu instanziieren.
c. description – Wird in Composer angezeigt.
d. aspect.isEditableExtensionObject – Auf "true" festlegen, um das Speichern aktivierter Prioritätseinstellungen in Composer zuzulassen. Dies ist erforderlich.
3. Konfigurieren Sie den Dateinamen mit FileResource type = JAR (siehe unten):
<FileResource type="JAR" file="auth-sample-basicuser-extension.jar"
description="Authenticators Sample BasicUser JAR file." /> name of jar file
4. Speichern und schließen Sie die Datei.
Implementierung
Befolgen Sie zur Implementierung die Schritte unten für die entsprechende Authentifikator-JAR-Datei:
1. Leiten Sie von der CustomAuthenticator-Klasse ab bzw. erweitern Sie von dieser Klasse.
* 
Der SupportsSession-Parameter ermöglicht Sitzungsunterstützung zwischen Anforderungen und ist standardmäßig auf "true" festgelegt. Legen Sie ihn auf false fest, wenn Sie keine Sitzung zwischen Anforderungen unterstützen möchten.
2. Implementieren Sie einen Standardkonstruktor.
3. Überschreiben Sie Authentifikatortyp-Methoden nach Bedarf für Ihre Implementierung:
Methode
Beschreibung
public boolean matchesAuthRequest(HttpServletRequest httpRequest)
throws AuthenticatorException,
Ermöglicht es Ihnen, Informationen aus der eingehenden Authentifizierungsanforderung abzurufen, die als httpRequest-Parameter bereitgestellt wird. Um anzugeben, dass Sie die Anforderung verarbeiten können, geben Sie true zurück oder andernfalls false. Wenn der Rückgabewert true ist, wird zur ThingWorx Laufzeit die Authentifizierungsmethode aufgerufen (siehe unten).

//… 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);
}
Im Fall einer Authentifizierungsstrategie, die nur Benutzernamen bereitstellt (z.B. SSO, wobei die Benutzerauthentifizierung in einer separaten Anwendung erfolgt), verwenden Sie den ersten Satz von "validate" und "setCredentials", wie in der linken Spalte dargestellt.
Im Fall einer Authentifizierungsstrategie, die einen Benutzernamen und ein Passwort bereitstellt, verwenden Sie den zweiten Satz von "validate" und "setCredentials", wie in der linken Spalte gezeigt.
public void issueAuthenticationChallenge(HttpServletRequest httpRequest, HttpServletResponse httpResponse)
gibt AuthenticatorException aus
Diese Methode ist nicht immer erforderlich. Wenn jedoch eine Ausnahme von der Authentifizierungsmethode ausgegeben wird oder wenn Sie das RequiresChallenge-Flag auf "true" festlegen, wird die Methode "issueAuthenticationchallenge" aufgerufen.
Standardmäßige Authentifikatorpriorisierungen
Die Systemauthentifikatoren haben die folgenden Standardpriorisierungen. Dieser verteilte Bereich ermöglicht das Einfügen von Authentifikatorerweiterungen in die Verarbeitungskette, wenn gewünscht. Diese Systemobjektauthentifikatoren können nicht umgeordnet, neu priorisiert, gelöscht oder geändert werden.
ThingworxBasicAuthenticator – Priorität 100. Authentifiziert den bereitgestellten Benutzernamen und das bereitgestellte Passwort.
ThingworxMobileTokenAuthenticator – Priorität 150. Mobile App Builder Authenticator, der anhand von mobilen ThingWorx Token validiert.
* 
Dieser Authentifikator ist für eine zukünftige Version gedacht und derzeit deaktiviert.
ThingworxApplicationKeyAuthenticator – Priorität 200. Authentifiziert den bereitgestellten Anwendungsschlüssel.
ThingworxFormAuthenticator – Priorität 300. Authentifiziert über Formularanmeldung.
ThingworxMobileAuthorizationAuthenticator – Priorität 350. Mobile App Builder Authenticator, der anhand von ThingWorx Benutzern/Passwörtern validiert.
* 
Dieser Authentifikator ist für eine zukünftige Version gedacht und derzeit deaktiviert.
ThingworxHttpBasicAuthenticator – Priorität 400. Einfache HTTP-Authentifizierung.
Benutzerdefinierte Authentifikatoren in Composer bereitstellen
1. Klicken Sie in Composer auf Importieren/Exportieren>Importieren.
2. Suchen Sie <Name der Zip Ihrer Authentifikatorerweiterung>.zip.
3. Installieren Sie die Erweiterung.
4. Klicken Sie im Explorer auf Authentifikatoren.
5. Öffnen Sie den entsprechenden Authentifikator.
6. Klicken Sie bei Allgemeine Informationen auf Aktiviert.
* 
Alle Authentifikatoren sind standardmäßig deaktiviert.
7. Klicken Sie auf Speichern.
Authentifikatoren zur Laufzeit
Auf die Authentifikatorerweiterung kann zur Laufzeit zugegriffen werden. Im Allgemeinen wird der niedrigste Wert zuerst verarbeitet. Wenn zwei Authentifikatoren mit demselben Prioritätswert vorhanden sind und beide mit "true" auf das matchAuthenticationRequest-Callback antworten, führt ein nicht deterministischer Reihenfolgeneffekt zu einer nicht deterministischen Verarbeitung der Authentifikatoranforderung zur Laufzeit. Aus diesem Grund wird empfohlen, dass zwei benutzerdefinierte Authentifikatoren nicht dieselben Prioritätswerte haben, um eine bekannte Anforderungsverarbeitungsreihenfolge sicherzustellen. Wenn ein Authentifikator eine Anforderung nicht verarbeiten kann, kann der nächste Authentifikator in der Kette die Anforderung verarbeiten usw., bis eine gültige Authentifizierung erfolgt. Wenn kein benutzerdefinierter Authentifikator die Anforderung verarbeiten kann, verarbeiten die ThingWorx Systemauthentifikatoren die Anforderung und zeigen wahrscheinlich eine Formularanmeldung mit Benutzername und Passwort an.
Auf Authentifikatoren zur Laufzeit zugreifen
Um zur Laufzeit auf Authentifikatoren zuzugreifen, nehmen Sie eine Anforderung an folgende URL vor. Geben Sie die Abfrage- oder Kopfzeilenparameter oder Nachricht an, die der benutzerdefinierte Authentifikator vom weitergeleiteten HTTP-Anforderungsobjekt während der drei benutzerdefinierten Authentifikator-Callback-Methoden abrufen und verarbeiten kann, die zuvor erläutert wurden.
Server:Port/Thingworx/Home
<Host:Port>/Thingworx/Home?YourParameter=something
Verwandte Links
War dies hilfreich?