ThingWorx Flow > SDK ThingWorx Flow > CLI de ThingWorx Flow > Création d'authentifications
Création d'authentifications
ThingWorx Flow prend en charge n'importe quel schéma d'authentification. La solution intègre un mécanisme de traitement simplifié pour OAuth qui peut être mis en oeuvre par configuration. Tout autre mode d'authentification relève des authentifications par connexion et doit être codé par le développeur du connecteur lors de l'établissement d'une connexion au service via l'objet de connexion.
La plupart des services nécessitent une authentification sous une forme ou une autre. Vous pouvez ajouter un mécanisme d'authentification à l'aide des commandes add connection et add OAuth. La CLI ThingWorx Flow et le serveur ThingWorx Flow prennent en charge l'authentification OAuth 2.0 et OAuth 1.0.
Les méthodes d'authentification couramment utilisées sont décrites dans la liste suivante :
Authentification de base : schéma d'authentification simplifié intégré au protocole HTTP. Un nom d'utilisateur et un mot de passe doivent être fournis lors des requêtes.
Authentification par clé API : permet d'accéder aux données. Par exemple, ce mécanisme implique l'envoi d'une paire clé/valeur sous forme de paramètre de chaîne de requête ou sous forme d'en-tête.
Authentification OAuth : méthode d'authentification par jeton qui permet l'utilisation des informations de votre compte par un service externe donné sans exposition de votre mot de passe. Par exemple, vous pouvez accéder aux ressources d'un service en vous connectant au compte.
Par exemple, Windchill utilise l'authentification de base ainsi que l'authentification OAuth.
Création d'OAuths
Pour créer une OAuth, procédez comme suit :
1. A l'invite de commande, exécutez les commandes suivantes :
a. cd <user project root directory>
b. flow add oauth <oauth name>
* 
A l'exception du tiret (-), le nom d'une OAuth ne tolère aucun caractère spécial. Par exemple, le nom de votre OAuth peut être connector name-oauth.
Les options suivantes sont disponibles pour la commande OAuth :
Options
Description
Type de données
--version
Affiche le numéro de version.
[booléen]
--help
Affiche l'aide.
[booléen]
--parentDir, -d
Répertoire parent du projet.
[par défaut : "."]
--logLevel, -1
Définit le niveau de consignation.
[par défaut : "info"]
--useV1
Indique que la configuration OAuth 1.0 est utilisée.
[par défaut : faux]
Un nouveau dossier <nom connecteur-nom oauth> est créé dans <projectDir>/auth/oauth/ contenant le fichier config.json.
Par exemple, si vous utilisez une action liée à Gmail dans votre processus, vous devez dans un premier temps vous connecter à votre compte Gmail, puis autoriser le processus ThingWorx Flow à effectuer certaines tâches en votre nom, comme illustré ci-dessous.
Les paramètres d'accès ci-dessus sont définis dans le fichier config.json. Le fichier config.json renseigné se présente comme suit :
{
"_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 est automatiquement enregistré par le serveur de Flow en fonction de la valeur du fichier deploymentConfig.json.
Le tableau suivant fournit une description des champs importants du fichier config.json.
Propriétés du fichier config.json
Propriété
Description
base_url
URL de base. Pour plus d'informations, reportez-vous à la documentation de votre fournisseur d'identité (IdP).
oauth_type
Veillez à ne pas modifier cette propriété.
Par défaut, la CLI génère une configuration OAuth2. Pour générer une configuration OAuth1, utilisez l'option –useV1.
oauth2_params_scope
Etendues définies par l'application et qui déterminent les types d'opérations réalisables sur le système. Le jeton définira des étendues correspondant à l'accès octroyé à l'application par l'utilisateur.
oauth2_auth_url
Génère l'écran des invites de saisie du nom d'utilisateur et du mot de passe pour l'application.
Cette valeur peut être absolue ou relative à l'URL de base.
oauth2_auth_query
Paramètres requis par l'IdP lors de l'envoi d'une requête à l'URL d'authentification.
oauth2_token_url
Utilisée pour demander un jeton d'accès ou un jeton d'actualisation. Cette valeur peut être absolue ou relative à l'URL de base.
oauth2_token_data
Contient les données à envoyer à l'oauth2_token_url.
oauth2_refresh_url
Génère un jeton d'actualisation. Certains IdP utilisent la même URL que l'URL du jeton pour demander un jeton d'actualisation.
oauth2_refresh_data
Contient les données à envoyer à l'oauth2_refresh_url.
oauth2_validate_url
Valide le jeton.
oauth2_validate_headers
En-têtes transmis dans la requête envoyée à l'oauth2_validate_url.
oauth2_validate_method
La méthode HTTP est utilisée pour effectuer la demande de validation.
Le fichier de configuration contient un certain nombre d'informations que ThingWorx Flow utilise pour exécuter diverses opérations OAuth2.
Les valeurs de propriété sont des tableaux de chaînes nécessitant donc des échappements. Les valeurs peuvent être des valeurs constantes, mais vous pouvez également utiliser des substitutions de texte. Les paramètres env_local_params, env_staging_params et env_production_params permettent de faire varier la valeur de divers paramètres en fonction du déploiement.
Les éléments d'information importants dans le fichier config.json sont client_id et client_secret.
Pour plus d'informations sur le déploiement des connecteurs, consultez la section Déploiement des connecteurs.
Les configurations OAuth ne doivent pas contenir d'informations sensibles ou spécifiques au client. Ceci concerne en particulier l'ID client (client_id) et la clé secrète client (client_secret). Les informations sont spécifiées comme suit :
"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}\"}"
],
Si les informations ne sont pas spécifiques à un déploiement, le nom du déploiement, tel que "local" ou "development", n'a pas lieu d'être inclus en préfixe.
Pour obtenir de l'aide sur la création d'applications utilisant les API Google, reportez-vous à l' Aide de la console API. Pour toute autre application, reportez-vous à votre documentation IdP/système.
Pour plus d'informations sur la création d'une configuration OAuth, consultez l' Annexe B.
Configuration d'OAuths pour les connecteurs prêts à l'emploi
ThingWorx Flow intègre un certain nombre de connecteurs prêts à l'emploi qui nécessitent une authentification OAuth pour l'octroi de l'autorisation. La première étape consiste à créer un fichier de chargement OAuth. Vous pouvez choisir d'activer toutes les configurations OAuth ou uniquement certaines d'entre elles. Le fichier de chargement OAuth présente le format suivant :
{
"onedrive": {
"OneDrive": {
"CLIENT_ID": "<client-id-here>"
"CLIENT_SECRET": "<client-secret-here>"
}
}
"trello": {
"Trello": {
"CONSUMER_KEY":"<consumer-key-here>",
"CONSUMER_SECRET":"<consumer-secret-here>"
}
}
}
Dans le fichier ci-dessus, les clés au niveau supérieur donnent le nom des connecteurs. OneDrive est un exemple de configuration OAuth2 et de configuration OAuth1.
Consultez le document pour vous procurer les client-id et client-secret voulus pour chacun des connecteurs. Le nom affiché de la configuration OAuth figure au niveau suivant. Il s'agit du texte affiché dans les listes déroulantes OAuth2 sous la forme Ajouter nouvelle session <nom affiché>.
Utilisez l'outil flow-deploy pour charger vos OAuths sur le système. Si une configuration correspondante (basée sur connecteur et nom affiché) existe déjà, elle est mise à jour ; dans le cas contraire, elle est créée.
Pour plus d'informations sur la configuration d'OAuths pour les autres connecteurs prêts à l'emploi, consultez le Centre d'aide ThingWorx.
Pour plus d'informations, consultez la rubrique Déploiement des connecteurs.
Une fois le déploiement réalisé par l'outil, les nouvelles OAuths sont disponibles.