- Démarrage
- Lisez-moi
- À propos d'OData et des références
- URL d'Orchestrator
- Références d'API
- Ressources logiques et métadonnées
- Opérations disponibles
- Fichiers énumérés (Enumerated Files)
- Authentification
- Création des requêtes d'API
- Accèder aux ressources UiPath à l'aide d'applications externes
- Autorisations par point de terminaison
- Codes de réponse
- Points de terminaison de vérification de l'état
- Définition Swagger
- Exemples d'utilisation de l'API Orchestrator
- Demandes d'alertes
- Requêtes relatives aux actifs
- Requêtes de calendriers
- Requêtes relatives aux environnements
- Requêtes de dossiers
- Requêtes de tâches génériques
- Requêtes relatives aux tâches
- Requêtes relatives aux bibliothèques
- Requêtes relatives aux licences
- Requêtes relatives aux paquets (Packages Requests)
- Requêtes relatives aux autorisations
- Demandes d'espaces de travail personnels
- Requêtes relatives aux processus
- Demandes d'éléments de la file d'attente
- Requêtes relatives aux Robots
- Requêtes relatives aux rôles (Roles Requests)
- Requêtes relatives aux planifications
- Requêtes relatives aux paramètres
- Requêtes de tâches
- Demandes de catalogues de tâches
- Demandes de formulaires de tâches
- Requêtes relatives aux locataires
- Requêtes relatives aux transactions
- Requêtes relatives aux utilisateurs
- Requêtes relatives aux Webhooks
- API de gestion de plate-forme
Accèder aux ressources UiPath à l'aide d'applications externes
Ces instructions sont destinées aux développeurs qui maintiennent l'intégration entre les produits UiPath et les applications externes dans un environnement avec une installation Orchestrator locale ou une installation Orchestrator auto-hébergée.
Avant de commencer :
- L'application externe doit déjà être enregistrée dans Applications externes ( External Applications) par l'administrateur de l'organisation.
- Obtenez les détails d'enregistrement auprès de l'administrateur de l'organisation.
Une fois l'application externe enregistrée, vous devez implémenter le mécanisme d'autorisation approprié pour l'application externe, avec le type d'accord approprié pour l'étendue autorisée, afin que l'application externe puisse récupérer un jeton d'accès.
Quel type d'accord d'autorisation utiliser :
Type de demande (Application Type) |
Portée |
Type d'accord requis |
---|---|---|
confidentiel |
Utilisateur (User) |
Code d'autorisation (instructions) |
confidentiel |
Application |
Identifiants du client (Client credentials) (instructions) |
non confidentiel |
Utilisateur (User) |
Code d'autorisation avec PKCE (instructions) |
Si une application confidentielle s'est vu accorder à la fois des étendues d'utilisateur et d'application, vous devez implémenter les deux types d'accord.
Lorsque le nom de l'étendue est le même dans l'étendue de l'utilisateur et de l'application, comme dans le cas d'Orchestrator, le type d'octroi que vous utilisez détermine si la ressource est appelée dans l'étendue de l'utilisateur ou dans l'étendue de l'application.
Le serveur d'autorisation pour accéder aux ressources UiPath est UiPath Identity Server, qui prend en charge l'infrastructure OAuth 2.0.
Utilisez ce type d'accord lorsque l'application enregistrée est de type confidentiel et que la demande concerne l' étendue de l'utilisateur.
Avec ce type d'accord, le flux est le suivant :
L'application peut désormais utiliser le jeton d'accès pour accéder aux ressources utilisateur jusqu'à l'expiration du jeton (une heure). Voir Utilisation du jeton d'accès et Obtention d'un jeton de réactualisation pour plus d'informations.
Utilisez ce type d'accord si l'application enregistrée est de type non confidentielle et que la demande concerne l'étendue de l'utilisateur.
Le flux est le même que lors de l'utilisation du code d'autorisation, sauf que dans la demande d'autorisation, vous devez inclure les paramètres de requête de demande suivants :
code_challenge_method
, qui doit êtreS256
code_challenge
, une string à la cryptographie aléatoire dérivée de code_verifier, utilisée pour connecter la demande d'autorisation à la demande de jeton.
Vous devez utiliser un algorithme de vérification de code pour générer le défi de code. Vous pouvez également créer le vôtre, à condition qu'il soit conforme à la norme rfc7636.
{BaseURL}/identity/connect/authorize?
response_type=code
&client_id={app_id}
&scope={scopes}
&redirect_uri={redirect_url}
&code_challenge={cryptographically-random string from code_verifier}
&code_challenge_method=S256
{BaseURL}/identity/connect/authorize?
response_type=code
&client_id={app_id}
&scope={scopes}
&redirect_uri={redirect_url}
&code_challenge={cryptographically-random string from code_verifier}
&code_challenge_method=S256
{BaseURL}/identity/connect/token
, vous devez inclure code_verifier
(la chaîne d'origine utilisée pour générer code_challenge
) dans le corps de la demande.
application/x-www-form-urlencoded
.
{
grant_type: "authorization_code"
code: "{authorization_code}"
redirect_uri: "{redirect_url}"
client_id: "{app_id}"
code_verifier: "{code_verifier}"
}
{
grant_type: "authorization_code"
code: "{authorization_code}"
redirect_uri: "{redirect_url}"
client_id: "{app_id}"
code_verifier: "{code_verifier}"
}
La réponse comprend un jeton d'accès que l'application peut utiliser pour accéder aux ressources utilisateur jusqu'à l'expiration du jeton (une heure). Voir Utilisation du jeton d'accès et Obtention d'un jeton de réactualisation pour plus d'informations.
client_id
et le client_secret
au point de terminaison du jeton Identity Server : {BaseURL}/identity/connect/token
.
application/x-www-form-urlencoded
.
{
grant_type: "client_credentials"
client_id: "{app_id}"
client_secret: "{app_secret}"
scope: "{scopes}"
}
{
grant_type: "client_credentials"
client_id: "{app_id}"
client_secret: "{app_secret}"
scope: "{scopes}"
}
Une fois que l'application dispose d'un jeton d'accès, elle peut utiliser le jeton pour accéder aux ressources autorisées, limitées aux étendues sélectionnées, jusqu'à l'expiration du jeton (une heure).
Voici un exemple de demande à l'API OData/Machines qui utilise un jeton d'accès dans l'en-tête d'autorisation, où le jeton d'accès contient l'étendue OR.Machines dans la demande d'étendue.
curl -X GET "{OrchestratorURL}/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"l
curl -X GET "{OrchestratorURL}/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"l
{OrchestratorURL}/swagger/index.html
pour plus d'informations sur les API disponibles.
Les jetons d'accès expirent dans une heure. L'application externe peut obtenir un nouveau jeton d'accès sans interaction de l'utilisateur en lui échangeant un jeton de réactualisation.
Les jetons de réactualisation sont également valables pour une seule utilisation et ils expirent après 60 jours.
offline_access
dans le paramètre scope
de la demande d'autorisation afin que le code d'autorisation puisse être utilisé dans une demande de jeton pour obtenir un jeton de réactualisation.
Pour obtenir un jeton de réactualisation, envoyez une demande POST avec le code d'autorisation au point de terminaison du jeton
{BaseURL}/identity/connect/token
.
application/x-www-form-urlencoded
.
La requête renvoie un nouveau jeton d'accès et un jeton de réactualisation :
{
"access_token": "{access_token}",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "{refresh_token}",
"scope": "OR.Machines OR.Robots offline_access"
}
{
"access_token": "{access_token}",
"expires_in": 3600,
"token_type": "Bearer",
"refresh_token": "{refresh_token}",
"scope": "OR.Machines OR.Robots offline_access"
}
{BaseURL}/identity/connect/token
à l'aide du type d'accord refresh_token
.
application/x-www-form-urlencoded
.
{
grant_type: "refresh_token"
client_id: "{app_id}"
client_secret: "{app_secret}"
refresh_token: "{existing_refresh_token}"
}
{
grant_type: "refresh_token"
client_id: "{app_id}"
client_secret: "{app_secret}"
refresh_token: "{existing_refresh_token}"
}
La réponse renvoie un nouveau jeton d'accès et un nouveau jeton de réactualisation.
Le jeton de réactualisation existant n'est plus valide après utilisation, alors assurez-vous d'utiliser le nouveau jeton de réactualisation que vous avez reçu.
application/x-www-form-urlencoded
pour toutes les demandes faites aux points de terminaison d'Identity Server. Si vous effectuez des demandes par programmation, cela n'est pas nécessaire.
{BaseURL}/identity/.well-known/openid-configuration
{BaseURL}/identity/connect/authorize
{BaseURL}/identity/connect/token