Creazione di autenticazioni
ThingWorx Flow è in grado di gestire qualsiasi schema di autenticazione. È dotato di un meccanismo di gestione più semplice per OAuth che può essere impostato tramite configurazione. Qualsiasi altra autenticazione rientra nella classificazione della connessione e deve essere codificata dallo sviluppatore del connettore durante la creazione di una connessione con il servizio attraverso l'oggetto connessione.
La maggior parte dei servizi richiede una qualche forma di autenticazione. È possibile aggiungere un meccanismo di autenticazione utilizzando i comandi di aggiunta connessione e di aggiunta OAuth. L'interfaccia della riga di comando di ThingWorx Flow e il server ThingWorx Flow supportano l'autenticazione OAuth 2.0 e OAuth 1.0.
I metodi di autenticazione comunemente utilizzati sono descritti nell'elenco che segue.
• Autenticazione di base - Si tratta di uno schema di autenticazione semplice integrato nel protocollo HTTP. Richiede che vengano specificati il nome utente e la password quando si effettua una richiesta.
• Autenticazione mediante chiave API - Consente di accedere ai dati. Ad esempio, questo meccanismo comporta l'invio di una coppia chiave-valore come parametro di stringa di interrogazione o come intestazione.
• Autenticazione OAuth - Si tratta di un metodo di autenticazione basato su token che consente l'utilizzo delle informazioni dell'account da parte di qualsiasi servizio esterno senza esporre la password. È possibile, ad esempio, accedere alle risorse di un servizio accedendo all'account.
Ad esempio, Windchill utilizza l'autenticazione di base e OAuth.
Creazione di OAuth
Per creare un elemento OAuth, attenersi alla procedura descritta di seguito.
1. Dal prompt dei comandi, eseguire i comandi seguenti:
a. cd <user project root directory>
b. flow add oauth <oauth name>
|
Il nome OAuth non può contenere caratteri speciali ad eccezione dei trattini (-). Ad esempio, il nome OAuth può essere nome connettore-nome oauth.
|
Per il comando OAuth sono disponibili le opzioni seguenti:
Opzioni
|
Descrizione
|
Tipo di dati
|
--version
|
Visualizza il numero di versione.
|
[booleano]
|
--help
|
Visualizza la guida.
|
[booleano]
|
--parentDir, -d
|
Directory padre del progetto.
|
[default: "."]
|
--logLevel, -1
|
Imposta il livello di registrazione.
|
[default: "info"]
|
--useV1
|
Indica che viene utilizzata la configurazione OAuth versione 1.
|
[default: false]
|
Viene creata una nuova cartella <nome connettore-nome oauth> in <DirProgetto>/auth/oauth/ contenente il file config.json.
Se ad esempio si utilizza un'azione correlata a Gmail nel workflow, è necessario innanzitutto eseguire l'accesso all'account Gmail e quindi autorizzare il workflow di ThingWorx Flow a eseguire determinati task automaticamente come mostrato nella figura che segue:
I parametri di accesso mostrati nella figura precedente sono impostati nel file config.json. Il file config.json completato si presenta come mostrato di seguito:
{
"_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 viene archiviato automaticamente dal server ThingWorx Flow in base al valore presente nel file deploymentConfig.json. |
La tabella descrive i vari campi importanti e il significato del file config.json.
Proprietà del file config.json
Proprietà | Descrizione |
---|
base_url | URL di base. Per ulteriori informazioni, fare riferimento la documentazione del provider di identificativi (IdP). |
oauth_type | Non modificare questa proprietà. Per default, l'interfaccia della riga di comando genera la configurazione OAuth2. Per generare una configurazione OAuth1, utilizzare l'opzione –useV1. |
oauth2_params_scope | Ambiti definiti dall'applicazione. Questa proprietà determina il tipo di operazioni che possono essere eseguite sul sistema. Il token ha ambiti per cui l'utente concede l'accesso all'applicazione. |
oauth2_auth_url | Genera la schermata per i prompt di nome utente e password per l'applicazione. Questo valore può essere assoluto o relativo rispetto all'URL di base. |
oauth2_auth_query | Parametri richiesti dall'IdP durante una richiesta all'URL di autenticazione. |
oauth2_token_url | Utilizzata per richiedere un token di accesso o di aggiornamento. Questo valore può essere un URL assoluto o relativo rispetto all'URL di base. |
oauth2_token_data | Contiene i dati che devono essere inviati a oauth2_token_url. |
oauth2_refresh_url | Genera un token di aggiornamento. Alcuni IdP utilizzano lo stesso URL come URL del token per richiedere un token di aggiornamento. |
oauth2_refresh_data | Contiene i dati che devono essere inviati a oauth2_refresh_url. |
oauth2_validate_url | Convalida un token. |
oauth2_validate_headers | Intestazioni inviate nella richiesta a oauth2_validate_url. |
oauth2_validate_method | Il metodo HTTP viene utilizzato per effettuare la richiesta di convalida. |
Il file di configurazione contiene informazioni che ThingWorx Flow utilizza per eseguire varie operazioni OAuth2.
I valori di proprietà sono matrici di stringhe e quindi richiedono l'escape. I valori possono essere valori costanti o si può utilizzare la sostituzione del testo. env_local_params, env_staging_params e env_production_params consentono di variare il valore di vari parametri in base alla distribuzione.
Le informazioni importanti nel file config.json sono client_id e client_secret.
Per informazioni sulla distribuzione dei connettori, fare riferimento alla sezione relativa alla
distribuzione.
È consigliabile che le configurazioni OAuth non contengano informazioni sensibili o specifiche del tenant. Le informazioni includono client_id e client_secret. Le informazioni sono specificate come indicato di seguito:
"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}\"}"
],
Se le informazioni non sono specifiche di una distribuzione, non devono essere precedute dal nome della distribuzione, ad esempio locale o sviluppo.
Per informazioni sulla creazione di applicazioni che utilizzano le API Google, fare riferimento all'
API Console Help. Per qualsiasi altra applicazione, fare riferimento alla documentazione del sistema dell'IdP.
Per ulteriori informazioni sulla creazione della configurazione OAuth, fare riferimento all'
Appendice B.
Configurazione di OAuth per connettori predefiniti
ThingWorx Flow viene fornito con una serie di connettori che richiedono OAuth per eseguire l'autorizzazione. Il primo passo consiste nel creare un file di caricamento OAuth. Si può scegliere di attivare tutte le configurazioni OAuth o solo alcune. Il file di caricamento OAuth si presenta nel formato seguente:
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
Nel file precedente, le chiavi al livello superiore sono i nomi dei connettori. Un esempio di configurazione OAuth2 e configurazione OAuth1 è OneDrive.
Fare riferimento al
documento per acquisire i parametri
client-id e
client-secret per ognuno dei connettori. Il nome visualizzato della configurazione OAuth è al livello successivo. È il testo che viene visualizzato negli elenchi a discesa di OAuth2 come Aggiungi nuovo accesso <nome visualizzato>.
Utilizzare lo strumento flow-deploy per caricare le configurazioni OAuth nel sistema. Se esiste già una configurazione corrispondente basata su connettore e nome visualizzato, viene aggiornata o ne viene creata una nuova.
Per informazioni sulla configurazione di OAuth per altri connettori predefiniti, fare riferimento all'Help Center di ThingWorx.
Dopo che lo strumento ha completato la distribuzione, le nuove configurazioni OAuth sono disponibili.