ThingWorx Flow kann jedes beliebige Authentifizierungsschema verarbeiten. Es verfügt über einen einfacheren Verarbeitungsmechanismus für OAuth, der durch Konfiguration eingerichtet werden kann. Jede andere Authentifizierung fällt unter der Verbindungsklassifikation und muss vom Konnektor-Entwickler beim Herstellen einer Verbindung mit dem Dienst über das Verbindungsobjekt codiert werden.
Die meisten Dienste erfordern irgendeine Form von Authentifizierung. Sie können einen Authentifizierungsmechanismus mithilfe der Befehle "add connection" und "add OAuth" hinzufügen. Die ThingWorx Flow Befehlszeilenschnittstelle und der ThingWorx Flow Server unterstützen OAuth 2.0- und OAuth 1.0-Authentifizierung.
In der folgenden Liste werden häufig verwendete Authentifizierungsmethoden beschrieben:
Beispielsweise verwendet Windchill sowohl die Basisauthentifizierung als auch die OAuth-basierte Authentifizierung.
Gehen Sie wie folgt vor, um eine OAuth zu erstellen:
1. Führen Sie in der Eingabeaufforderung die folgenden Befehle aus:
a. cd <user project root directory>
b. flow add oauth <oauth name>
| Der OAuth-Name darf keine Sonderzeichen mit Ausnahme von Bindestrichen (-) enthalten. Beispielsweise kann Ihr Name "Konnektorname-OAuthName" lauten. |
Die folgenden Optionen sind für den OAuth-Befehl verfügbar:
Optionen | Beschreibung | Datentyp |
---|
--version | Zeigt die Versionsnummer an. | [Boolean] |
--help | Zeigt die Hilfe an. | [Boolean] |
--parentDir, -d | Das Elternverzeichnis für das Projekt. | [Standardwert: "."] |
--logLevel, -1 | Legt die Protokollebene fest. | [Standardwert: "info"] |
--useV1 | Gibt an, dass die OAuth 1.0-Konfiguration verwendet wird. | [Standardwert: false] |
Ein neuer Ordner namens <Konnektorname-OAuthName> wird im Ordner <Projektverzeichnis>/auth/oauth/ erstellt, in dem die Datei config.json enthalten ist.
Wenn Sie beispielsweise eine zu Gmail gehörige Aktion in Ihrem Workflow verwenden, müssen Sie sich zunächst bei Ihrem Gmail-Konto anmelden und dann den ThingWorx Flow Workflow autorisieren, bestimmte Aufgaben in Ihrem Namen auszuführen.
Die in der Abbildung oben dargestellten Zugriffsparameter werden in der Datei config.json festgelegt. Die vollständige Datei config.json sieht folgendermaßen aus:
{
"_id": "56a0df8552199d8d51e0280d",
"created_at": "2017-04-11T14:08:59.858Z",
"updated_at": "2017-04-11T14:08:59.858Z",
"uid": "oau652869757c50d1cfbd1061",
"category": "Google",
"name": "google_gmail",
"title": "Gmail",
"icon": "google-mail",
"__v": 0,
"version": "v1",
"oauth2_params_other": [
"{\"access_type\":\"offline\"}"
],
"oauth2_params_scope": [
"{\"https://www.googleapis.com/auth/gmail.labels\":\"Manage mailbox labels\"}",
"{\"https://www.googleapis.com/auth/gmail.insert\":\"Insert mail into your mailbox\"}",
"{\"https://www.googleapis.com/auth/gmail.modify\":\"All read/write operations except immediate, permanent deletion of threads and messages, bypassing Trash.\"}",
"{\"https://www.googleapis.com/auth/gmail.readonly\":\"Read all resources and their metadata—no write operations.\"}",
"{\"https://www.googleapis.com/auth/gmail.compose\":\"Create, read, update, and delete drafts. Send messages and drafts.\"}",
"{\"https://www.googleapis.com/auth/gmail.send\":\"Send email on your behalf\"}"
],
"oauth2_validate_method": "GET",
"oauth2_validate_headers": [
"{\"Authorization\":\"Bearer {access_token}\"}",
"{\"Content-Type\":\"application/json\"}"
],
"oauth2_validate_url": "https://www.googleapis.com/gmail/v1/users/me/labels",
"oauth2_refresh_data": [
"{\"grant_type\":\"refresh_token\"}",
"{\"refresh_token\":\"{refresh_token}\"}"
],
"oauth2_refresh_url": "/token",
"oauth2_token_data": [
"{\"grant_type\":\"authorization_code\"}"
],
"oauth2_token_url": "/token",
"oauth2_auth_query": [
"{\"response_type\":\"code\"}",
"{\"approval_prompt\":\"force\"}",
"{\"access_type\":\"{access_type}\"}"
],
"oauth2_auth_url": "/auth",
"oauth2_no_state": false,
"env_production_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{production.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{production.CLIENT_SECRET}}}\"}"
],
"env_pre_prod_params": [
"{\"client_id\":\"{{{pre_prod.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{pre_prod.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_staging_params": [
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}",
"{\"client_id\":\"{{{staging.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{staging.CLIENT_SECRET}}}\"}"
],
"env_development_params": [
"{\"client_id\":\"{{{development.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{development.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_local_params": [
"{\"client_id\":\"{{{local.CLIENT_ID}}}\"}",
"{\"client_secret\":\"{{{local.CLIENT_SECRET}}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"base_url": "https://accounts.google.com/o/oauth2",
"oauth_type": "OAuth2",
"development_phase": "gold",
"advanced_enabled": true,
"express_enabled": true,
"deleted_at": null,
"published": true
}
| OAUTH_ENDPOINT_OAUTH_RETURN wird automatisch vom Flow Server archiviert, basierend auf dem Wert in der Datei deploymentConfig.json. |
In der Tabelle sind die verschiedenen wichtigen Felder und deren Bedeutung von der Datei config.json aufgeführt.
Eigenschaften in der Datei config.json
Eigenschaft | Beschreibung |
---|
base_url | Basis-URL. Weitere Informationen finden Sie in der Dokumentation des Identitätsanbieters (IdP). |
oauth_type | Bearbeiten Sie diese Eigenschaft nicht. Standardmäßig generiert die Befehlszeilenschnittstelle die OAuth2-Konfiguration. Um eine OAuth1-Konfiguration zu generieren, verwenden Sie die Option –useV1. |
oauth2_params_scope | Von der Anwendung definierte Umfänge; bestimmt, welche Operationen im System ausgeführt werden können. Das Token enthält Umfänge, für die der Benutzer der Anwendung Zugriff gewährt. |
oauth2_auth_url | Generiert den Bildschirm mit der Eingabeaufforderung für Benutzername und Passwort für die Anwendung. Dieser Wert kann absolut oder relativ zur Basis-URL sein. |
oauth2_auth_query | Parameter, die der IdP für das Stellen einer Anfrage an die Authentifizierungs-URL vorschreibt. |
oauth2_token_url | Verwendet, um ein Zugriffstoken oder Aktualisierungs-Token anzufordern. Dieser Wert kann eine absolute URL oder eine URL relativ zur Basis-URL sein. |
oauth2_token_data | Enthält die Daten, die an die oauth2_token_url gesendet werden müssen. |
oauth2_refresh_url | Generiert ein Aktualisierungs-Token. Einige IdPs verwenden die gleiche URL wie die Token-URL für das Anfordern eines Aktualisierung-Tokens. |
oauth2_refresh_data | Enthält die Daten, die an die oauth2_refresh_url gesendet werden müssen. |
oauth2_validate_url | Validiert ein Token |
oauth2_validate_headers | Kopfzeilen, die in der Anfrage an die oauth2_validate_url gesendet werden. |
oauth2_validate_method | HTTP-Methode, die für das Stellen der Validierungsanfrage verwendet wird. |
Die Konfigurationsdatei enthält Informationen, die ThingWorx Flow verwendet, um verschiedene OAuth2-Operationen auszuführen.
Die Eigenschaftswerte sind Arrays von Zeichenfolgen sind und benötigen daher Escape. Die Werte können konstante Werte sein, oder Sie können die Textersetzung nutzen. env_local_params, env_staging_params und env_production_params ermöglichen es, den Wert der verschiedenen Parameter basierend auf der Bereitstellung zu variieren.
Die wichtigen Informationen in der Datei config.json sind client_id und client_secret.
Informationen zur Bereitstellung der Konnektoren finden Sie im Abschnitt
Bereitstellung.
OAuth-Konfigurationen sollten keine sensiblen Informationen oder Tenant-spezifischen Informationen enthalten. Sie enthalten Client-ID (client_id) und Client-Verschlüsselungswort (client_secret). Die Informationen werden wie folgt angegeben:
"env_pre_prod_params": [
"{\"client_id\":\"{{pre_prod.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{pre_prod.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_staging_params": [],
"env_development_params": [
"{\"client_id\":\"{{development.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{development.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
"env_local_params": [
"{\"client_id\":\"{{local.CLIENT_ID}}\"}",
"{\"client_secret\":\"{{local.CLIENT_SECRET}}\"}",
"{\"redirect_uri\":\"{OAUTH_ENDPOINT_OAUTH_RETURN}\"}"
],
Wenn die Informationen nicht für eine Bereitstellung spezifisch sind, sollte diesen kein Bereitstellungsname wie "local" oder "development" vorangestellt werden.
Hilfe zum Erstellen von Anwendungen, die die Google-APIs verwenden, finden Sie in der
API-Konsolen-Hilfe. Informationen zu anderen Anwendungen finden Sie in der IdP- oder System-Dokumentation.
Weitere Informationen zum Erstellen der OAuth-Konfiguration finden Sie im
Tutorial B.
Im Lieferumfang von ThingWorx Flow sind einige Konnektoren enthalten, die OAuth für die Autorisierung erfordern. Der erste Schritt besteht darin, eine OAuth-Load-Datei zu erstellen. Sie können wählen, ob alle oder nur einige der OAuth-Konfigurationen aktiviert werden sollen. Die OAuth-Load-Datei hat das folgenden Format:
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
In der Datei oben sind die Schlüssel auf der obersten Ebene die Namen von Konnektoren. Ein Beispiel für eine OAuth2-Konfiguration und OAuth1-Konfiguration ist OneDrive.
Im
Dokument können Sie
client-id und
client-secret für jede der Konnektoren erlangen. Der Anzeigename der OAuth-Konfiguration befindet sich auf der nächsten Ebene. Dies ist der Text, der in OAuth2-Dropdown-Menüs als "<Anzeigename>-Anmeldung hinzufügen" angezeigt wird.
Verwenden Sie das Tool flow-deploy, um die OAuths in das System zu laden. Wenn eine übereinstimmende Konfiguration basierend auf Konnektor- und Anzeigename gefunden wird, wird diese aktualisiert; ansonsten wird eine neue erstellt.
Informationen zum Konfigurieren von OAuth für die anderen standardmäßige Konnektoren finden Sie im ThingWorx Hilfe-Center.
Weitere Informationen finden Sie im Thema
Konnektoren bereitstellen.
Nachdem das Tool die Bereitstellung erfolgreich abgeschlossen hat, sind die neuen OAuths verfügbar.