- Démarrage
- Authentification
- Applications externes (OAuth)
- Clés API
- ROPC (non recommandé)
- Étendues et autorisations
- API de gestion de plate-forme
Applications externes (OAuth)
Ces instructions sont destinées aux développeurs qui gèrent l'intégration entre les produits UiPath et les applications externes à l'aide de la fonctionnalité UiPath basée sur l'infrastructure OAuth.
Avant de commencer :
- L'application externe doit déjà être enregistrée par un administrateur de l'organisation.
- Obtenez les détails d'enregistrement auprès de l'administrateur de l'organisation.
Les applications externes à la plate-forme UiPath peuvent se voir accorder l’accès aux ressources UiPath sans avoir à partager les informations d’identification de l’utilisateur. À l’aide de l’infrastructure OAuth, les administrateurs de l’organisation peuvent déléguer l’autorisation à des applications externes. Une fois enregistrées, ces applications peuvent effectuer des appels d’API vers les applications UiPath ou les ressources que vous incluez dans l’étendue de l’enregistrement.
En tant qu'administrateur, pour définir les étendues d'applications externes :
-
au niveau de l'organisation (Admin > Applications externes > OAuth), vous lui attribuez des autorisations telles que
OR.Machines.Read
- cela permet d'accorder un accès en lecture aux machines de tous les locataires de l'organisation.
-
au niveau du locataire (Orchestrator > Locataire > Gérer l'accès) ou du dossier (Orchestrator > Dossier > Paramètres > Gérer l'accès) - vous ajoutez l'application au locataire ou au dossier souhaité en lui attribuant un rôle. Cette action permet de configurer des étendues plus précises.
Par exemple, si une application est ajoutée dans le dossier Finance du locataire EMEA avec l'autorisationAssets.View
, elle obtient les autorisations de consultation des ressources du locataire EMEA dans le dossier Finance.
Pour que les développeurs puissent utiliser ces applications externes, ils doivent indiquer des étendues spécifiques dans la requête.
En fonction des autorisations avec lesquelles une application externe a été enregistrée, les développeurs doivent indiquer des étendues spécifiques pour les utiliser. Il existe trois options :
-
Une autorisation spécifique, telle que
OR.Machines.View
, pour consulter toutes les machines de l'organisation. -
Une combinaison entre une autorisation spécifique et
OR.Default
, par exempleOR.Machines.View
+OR.Default
, pour demander à consulter les machines sur toute l'organisation et rechercher des autorisations granulaires dans des locataires et des dossiers spécifiques. -
OR.Default
uniquement, pour demander exclusivement des autorisations granulaires dans des locataires et des dossiers spécifiques.
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 |
confidentiel |
Application |
Informations d’identification du client |
non confidentiel |
Utilisateur (User) |
Code d'autorisation avec PKCE |
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.
OR.Default
, qui permet à l'application de vérifier les affectations effectuées dans Orchestrator, aux niveaux du locataire et du dossier. L'application peut ensuite accéder aux ressources auxquelles l'accès lui a été accordé dans ces locataires et dossiers.
Par exemple, vous souhaitez qu'une application externe affiche les tâches et les machines de tous les locataires de l'organisation. En tirant parti de la fonctionnalité accès affiné, vous pouvez également configurer l'application pour qu'elle affiche les files d'attente dans un dossier.
OR.Jobs.Read, OR.Machines.Read, OR.Default
. Cela accorde à votre application les autorisations Afficher (View) sur les tâches et les machines pour tous les locataires de l'organisation, ainsi que les autorisations Afficher (View) sur les files d'attente dans le dossier, sous réserve que l'application externe lui ait été attribuée et que les autorisations requises aient été accordées à cette application externe via un rôle.
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).
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, mais dans la demande d'autorisation, vous devez inclure les paramètres de requête 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 .
https://cloud.uipath.com/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
https://cloud.uipath.com/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
https://cloud.uipath.com/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 :
https://cloud.uipath.com/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 "https://cloud.uipath.com/{organizationName}/{tenantName}/orchestrator_/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"
curl -X GET "https://cloud.uipath.com/{organizationName}/{tenantName}/orchestrator_/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"
https://cloud.uipath.com/{organizationName}/{tenantName}/orchestrator_/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 applications externes confidentielles et non confidentielles peuvent demander toutes deux un jeton d'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 afin d'obtenir un jeton de réactualisation.
Envoyer une requête POST avec le code d'autorisation au point de terminaison du jeton
https://cloud.uipath.com/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"
}
https://cloud.uipath.com/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}"
}
client_secret
du corps de la demande.
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.
Couche Identity Server | Endpoint | Description |
---|---|---|
Découverte |
https://cloud.uipath.com/identity_/.well-known/openid-configuration
| Utilisez ce point de terminaison pour récupérer des métadonnées sur votre instance d'Identity Server. |
Autorisation |
https://cloud.uipath.com/identity_/connect/authorize
| Utilisez ce point de terminaison pour demander des jetons ou des codes d'autorisation via le navigateur. Ce processus comprend l'authentification de l'utilisateur final et éventuellement le consentement. |
Jeton |
https://cloud.uipath.com/identity_/connect/token
| Utilisez ce point de terminaison pour demander des jetons par programmation.
Veuillez noter que pour ce point de terminaison, le type de contenu doit être
application/x-www-form-urlencoded .
|
- Vue d'ensemble (Overview)
- Accès précis
- Utilisation des différents types d'accord
- Accès précis
- Code d'autorisation
- Code d'autorisation avec PKCE
- Client Credentials
- Utilisation du jeton d'accès
- Obtention d'un jeton de réactualisation
- Obtenir un jeton d'actualisation
- Obtenir un nouveau jeton de réactualisation et un nouveau jeton d'accès
- Points de terminaison du serveur d'identité UiPath