ThingWorx Modelldefinition in Composer > Sicherheit > Single Sign-On-Authentifizierung > ThingWorx als Ressourcenanbieter konfigurieren, wenn PingFederate der CAS ist
ThingWorx als Ressourcenanbieter konfigurieren, wenn PingFederate der CAS ist
Sie können ThingWorx als Ressourcen-Anbieter konfigurieren, um ThingWorx URI-Anforderungen über das OAuth2-Protokoll zuzulassen.
Dienstanbieter können die Antwort des Ressourcen-Anbieters verwenden, um in ThingWorx gespeicherte Daten zu rendern und anzuzeigen.
ThingWorx als Ressourcen-Anbieter ist dafür verantwortlich, das Zugriffs-Token und die Bereiche für jede Ressourcenanforderung zu validieren.
In den folgenden Abschnitten werden die Konfigurationsschritte beschrieben, die erforderlich sind, um ThingWorx als Ressourcen-Anbieter in ThingWorx zu aktivieren. Sie müssen sich evtl. mit anderen PTC Produktadministratoren und Identitätsanbieter-Administratoren in Ihrer Organisation absprechen, um weitere Anwendungen zu konfigurieren, die für diesen Zweck konfiguriert sind.
Prozessübersicht
Führen Sie diesen Prozess aus, um ThingWorx als Ressourcen-Anbieter zu konfigurieren:
1. Single Sign-On konfigurieren. Dies ist eine Voraussetzung für diesen Prozess.
* 
Es wird dringend empfohlen, SSL als Kommunikationskanal zwischen Dienstanbieter und Ressourcen-Anbieter zu verwenden.
Für einige der Einstellungen, die in diesen Konfigurationsschritten verwendet werden, müssen Sie Werte aus der PingFederate-Installation abrufen.
Datei "resourceServerSettings.json" konfigurieren
1. Erstellen Sie die Datei resourceServerSettings.json im selben Verzeichnis wie sso-settings.json.
Nachfolgend sehen Sie eine Beispielstruktur der Datei resourceServerSettings.json:
{
"ResourceServerSettings": {
"accessTokenServicesSettings": {
"userAuthenticationConverterClassName": "com.ptc.eauth.identity.oauth2.rs.IntrospectionUserAuthenticationConverter",
"userAuthenticationConverterUserNameAttribute": "See information in the table below",
"oauthTokenEndPoint": "https://<pingfed.server>:9031/as/token.oauth2",
"checkTokenEndpointUrl": "https://<pingfed.server>:9031/as/introspect.oauth2",
"clientId": "See information in the table below",
"clientSecret": "See information in the table below",
"chainedGrantType": "password"
},
"globalScopes": "THINGWORX",
"uriScopes": [
{
"uri": "See information in the table below",
"scopes": "See information in the table below",
"method": "See information in the table below"
}
]
}
2. Stellen Sie sicher, dass Sie den Wert jedes Parameters gemäß Ihrer Anforderung bearbeiten. Ihre Implementierung sieht möglicherweise anders aus und hängt von mehreren Faktoren ab, z.B. den Sicherheitsrichtlinien Ihrer Organisation und dem CAS für Ihren Verbund. Verwenden Sie die Informationen in den folgenden Tabellen als Leitfaden, um Werte für die verschiedenen Parameter festzulegen.
ResourceServerSettings.accessTokenServicesSettings-Einstellungen
Parameter
Beschreibung
Wert
userAuthenticationConverterClassName
Internes Dienstprogramm.
com.ptc.eauth.identity.oauth2.rs.IntrospectionUserAuthenticationConverter
userAuthenticationConverterUserNameAttribute
Optional. Definiert den Feldnamen, der user ID enthält. Wenn die Eigenschaft nicht festgelegt ist, lautet der Standardwert username.
oauthTokenEndPoint
Gibt den OAuth-Token-Endpunkt von PingFederate an (siehe Abbildung unten).
https://<PingFed-Server>:<PingFed-Port>/as/token.oauth2
checkTokenEndpointUrl
Gibt den OAuth-Token-Endpunkt von Introspection an (siehe Abbildung unten).
https://<PingFed-Server>:<PingFed-Port>/as/introspect.oauth2
clientId
Gibt die Client-ID für die Validierung von Zugriffs-Token vom Autorisierungsserver an.
clientSecret
Client-Geheimnis.
chainedGrantType
Zur späteren Verwendung vorgesehen.
password
ResourceServerSettings.globalScopes-Einstellungen
Parameter
Beschreibung
Beispiele
globalScopes
Liste der durch Kommas getrennten globalen Bereiche. Schließt den minimalen Satz von Bereichen ein, die für den Zugriff auf eine Ressource erforderlich sind. Wenn dieser Parameter fehlt oder leer ist, wird THINGWORX als globaler Standardbereich festgelegt. Lassen Sie diesen Parameter nicht leer. Wenn kein dedizierter Bereich vorhanden ist, legen Sie THINGWORX als Wert fest.
"globalScopes": "THINGWORX"
"globalScopes": "THINGWORX_APP1,THINGWORX_APP2"
ResourceServerSettings.uriScopes-Einstellungen
Parameter
Beschreibung
Beispiel
uri
URI-Muster. Definiert die Ressource oder Ressourcengruppe, die zusätzliche Bereiche zu den globalen Bereichen erfordert.
/Things/** - control all Things
/Things/Thing1 – control Thing1
scopes
Durch Kommas getrennte Liste mit zusätzlichen Bereichen. Lediglich Benutzer, die Rechte für alle aufgelisteten Bereiche (einschließlich global) besitzen, können die Ressource abrufen.
method
Optional. Definiert die URI-Methode, auf die der Bereich angewendet wird.
* 
Wenn keine Methodeneigenschaft angegeben ist, wird davon ausgegangen, dass der angegebene URI durch den gegebenen Umfang für die gesamte HTTP-Methode geschützt ist.
Mögliche Werte sind alle Methoden, die im REST-Protokoll zulässig sind, wie GET oder POST.
Wenn es Bereiche gibt, die für einen URI definiert sind, müssen die globalen Bereiche sowie die definierten URI-Bereiche für den Zugriff auf diese Ressource gewährt werden. Wenn mehr als eine geltende URI-Regel für die angeforderte Ressource verfügbar ist, müssen allen relevanten Bereichen Rechte für den Zugriff auf diese Ressource gewährt werden. Um Zugriff auf eingeschränkte Ressourcen zu vermeiden, fügen Sie URIscope zu diesen REST-Endpunkten mit einem Bereich hinzu, der nicht auf dem Autorisierungsserver vorhanden ist (z.B. PingFed). Neben dem Bereichsschutz verfügt ThingWorx über eigene benutzerbasierte Berechtigungen, die zusätzlich zu den Bereichen angewendet werden. Beispiel: In einem Fall, in dem Benutzer A eine Ressource mit den richtigen Bereichen anfordert, aber keine Berechtigung hat, schlägt die Anforderung mit einem 403-Fehler fehl.
Beispiele
Das folgende Beispiel ist ein relevantes Muster aus der Konfiguration resourceServerSettings.json:

"globalScopes": "THINGWORX",
"uriScopes": [
{
"uri": "/Things/**",
"scopes": "THINGWORX_THING_READ"
},
{
"uri": "/Things/WriteThing",
"scopes": "THINGWORX_THING_WRITE"
"method": "POST"
}
]
* 
Wurden die erforderlichen Rechte nicht vom Benutzer erteilt, stellt ThingWorx die Ressource in jedem Anwendungsfall in der folgenden Tabelle nicht zur Verfügung.
Anwendungsfälle
URI-Anforderung
Erforderliche Berechtigungen
Hinweise
GET /Thingworx/Mashups/Mashup1
THINGWORX
Die URI-Anforderung stimmt mit keiner uriScopes-Regel überein. THINGWORX globalScope-Regel wird angewendet.
GET /Thingworx/Things/WriteThing
THINGWORX, THINGWORX_THING_READ
THINGWORX globalScope- und erste uriScope-Regel werden angewendet.
POST /Thingworx/Things/WriteThing
THINGWORX, THINGWORX_THING_READ, THINGWORX_THING_WRITE
THINGWORX globalScope-Regel, erste Regel und zweite uriScope-Regel werden angewendet.
PingFederate-Verbindungen erstellen: OAuth-Client für ThingWorx als Ressourcen-Anbieter
Der OAuth-Client ist ein Verbindungspunkt, über den PingFederate Zugriffs-Token für ThingWorx bereitstellen kann. Dienstanbieter verwenden diese Zugriffs-Token, um OAuth-geschützte Ressourcen aus ThingWorx anzufordern.
1. Suchen Sie in PingFederate nach Clients. Öffnen Sie das Suchergebnis Clients-Application > OAuth, und klicken Sie auf Add Client.
2. Geben Sie im Feld CLIENT ID einen Wert ein. Verwenden Sie denselben Wert, den Sie für den Parameter ResourceServerSettings.accessTokenServicesSettings.clientId bei der Konfiguration der Datei resourceServerSettings.json verwendet haben.
3. Geben Sie im Feld NAME einen Wert ein. Dieser wird in der PingFederate-Client-Liste angezeigt.
4. Geben Sie im Feld DESCRIPTION eine Beschreibung ein.
5. Wählen Sie im Abschnitt CLIENT AUTHENTICATION die Option CLIENT SECRET aus, und geben Sie einen Wert für das Client-Geheimnis ein. Verwenden Sie denselben Wert, den Sie für den Parameter ResourceServerSettings.accessTokenServicesSettings.clientSecret bei der Konfiguration der Datei resourceServerSettings.json verwendet haben.
6. Lassen Sie den Abschnitt REDIRECT URIS leer.
7. Wählen Sie im Abschnitt ALLOWED GRANT TYPES die Optionen Resource Owner Password Credentials und Access Token Validation (Client is a Resource Server) aus.
8. Wählen Sie im Abschnitt DEFAULT ACCESS TOKEN MANAGER die Option Default aus.
9. Wählen Sie im Abschnitt PERSISTENT GRANTS MAX LIFETIME die Option Use Global Setting aus.
10. Wählen Sie für den Abschnitt REFRESH TOKEN ROLLING POLICY die Option Roll aus.
11. Klicken Sie auf Save.
Bereichsverwaltung in PingFederate
1. Hängen Sie in PingFederate alle Bereiche an, die in der Datei resourceServerSettings.json auf der Seite Scope Management im Bereich OAuth Settings erwähnt werden, einschließlich globalScopes. Wiederholen Sie die folgenden Schritte für jeden Bereich:
1. Fügen Sie einen Bereich im Feld Scope Value hinzu.
2. Fügen Sie eine Bereichsbeschreibung im Feld Scope Description hinzu.
3. Klicken Sie auf Hinzufügen.
4. Klicken Sie auf Save.
Jedes Mal, wenn ein Satz von Bereichen in der Datei resourceServerSettings.json geändert wird, müssen Sie diese Liste entsprechend aktualisieren. Es wird auch empfohlen, diese Liste zu aktualisieren, bevor Sie die resourceServerSettings.json in ThingWorx erneut laden.
* 
Wenn ein Bereich in der Datei resourceServerSettings.json unter ResourceServerSettings.globalScopes nicht definiert wurde, muss der Bereich THINGWORX hier (in PingFederate) als THINGWORX im standardmäßigen globalen Bereich hinzugefügt werden.
ThingWorx mit der geänderten Datei "resourceServerSettings.json" aktualisieren
Nachdem Sie die Datei resourceServerSettings.json aktualisiert haben, müssen Sie Tomcat neu starten.
Wenn Sie nur Bereiche ändern (sowohl Bereich globalScopes als auch uriScopes), müssen Sie Tomcat nicht neu starten. Führen Sie stattdessen die folgenden Schritte aus:
1. Melden Sie sich bei Composer als Administrator an.
2. Wechseln Sie zu den Authentifikatoren, und öffnen Sie ThingworxSSOAuthenticator.
3. Öffnen Sie "Dienste".
4. Führen Sie den Dienst ReloadResourceProviderScopes aus.
War dies hilfreich?