- Primeros pasos
- La definición de Swagger
- Ejemplos de uso de la API de Orchestrator
- Solicitudes de alertas
- Solicitudes de activos
- Solicitudes de calendario
- Solicitudes de entornos
- Solicitudes de carpetas
- Solicitudes de tareas genéricas
- Solicitudes de trabajos
- Solicitudes de bibliotecas
- Solicitudes de licencia
- Solicitudes de paquetes
- Solicitudes de permisos
- Solicitudes de procesos
- Solicitudes de robots
- Solicitudes de roles
- Solicitudes de horarios
- Solicitudes de configuración
- Solicitudes de tareas
- Solicitudes de catálogos de tareas
- Solicitudes de formularios de tareas
- Solicitudes de tenants
- Solicitudes de transacciones
- Solicitudes de usuario
- Solicitudes de Webhooks
- API de gestión de plataformas
Utilizar OAuth para aplicaciones externas
Estas instrucciones están destinadas a desarrolladores que mantienen la integración entre los productos de UiPath y las aplicaciones externas en un entorno con una instalación local de Orchestrator o una instalación autohospedada de Orchestrator.
Las instrucciones de esta página son para realizar solicitudes a los puntos finales de Identity Server mediante programación .
Si usas Postman o una herramienta similar para realizar solicitudes a los puntos finales de esta página, debes usar:
- el tipo de contenido
application/x-www-form-urlencoded
- la sintaxis de solicitud adecuada para este tipo de contenido, que puede ser distinta de la sintaxis de los ejemplos de esta página.
Antes de comenzar:
- La aplicación externa ya debe estar registrada en aplicaciones externas por un administrador del sistema.
- Obtén los datos de registro del administrador del sistema.
Después de registrar la aplicación externa, debes implementar el mecanismo de autorización adecuado para la aplicación externa, con el tipo de concesión apropiado para el ámbito permitido, de modo que la aplicación externa pueda recuperar un token de acceso.
Qué tipo de concesión de autorización utilizar:
Tipo de aplicación |
Ámbito |
Tipo de concesión requerida |
---|---|---|
Confidencial |
Usuario |
Código de autorización (instrucciones) |
Confidencial |
Aplicación |
Credenciales de cliente (instrucciones) |
no confidenciales |
Usuario |
Código de autorización con PKCE (instrucciones) |
Si a una aplicación confidencial se le concedió tanto el ámbito de usuario como el de aplicación, debes implementar ambos tipos de concesión.
Cuando el nombre del ámbito es el mismo tanto en el ámbito de usuario como en el de aplicación, como en el caso de Orchestrator, el tipo de concesión que se utiliza determina si el recurso se llama en el ámbito de usuario o en el de aplicación.
El servidor de autorización para acceder a los recursos de UiPath es UiPath Identity Server, que soporta el marco OAuth 2.0.
Utiliza este tipo de concesión cuando la aplicación registrada es del tipo confidencial y la solicitud es de ámbito de usuario.
Con este tipo de concesión, el flujo es el siguiente:
Ahora la aplicación puede utilizar el token de acceso para acceder a los recursos del usuario hasta que el token expire (una hora). Para más información, consulta la sección Uso del token de acceso y Obtención de un token de actualización.
Utiliza este tipo de concesión cuando la aplicación registrada es del tipo confidencial y la solicitud es de ámbito de usuario.
El flujo es el mismo que cuando se utiliza el código de autorización, excepto que en la solicitud de autorización hay que incluir los siguientes parámetros de consulta de la solicitud:
code_challenge_method
, que debe serS256
code_challenge
una cadena criptográficamente aleatoria derivada del verificador de código, utilizada para conectar la solicitud de autorización con la solicitud de token.
Debe utilizar un algoritmo verificador de código para generar el desafío de código. También puedes crear el tuyo propio, siempre que cumpla con el estándar 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
, es necesario incluir code_verifier
(la cadena original utilizada para generar code_challenge
) en el cuerpo de la solicitud.
{
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 respuesta incluye un token de acceso que la aplicación puede utilizar para acceder a los recursos del usuario hasta que el token caduque (una hora). Para más información, consulta la sección Uso del token de acceso y Obtención de un token de actualización.
client_id
y client_secret
al punto de conexión del Identity Server: {BaseURL}/identity/connect/token
.
{
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}"
}
Cuando la aplicación tiene un token de acceso, puede utilizarse para acceder a los recursos permitidos, limitados a los ámbitos seleccionados, hasta que el token caduque (una hora).
A continuación se muestra un ejemplo de solicitud a la API odata/Machines que utiliza un token de acceso en la cabecera Authorization, donde el token de acceso contiene el ámbito OR.Machines en la solicitud de ámbito.
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
para obtener información sobre las API disponibles.
Los tokens de acceso caducan en una hora. La aplicación externa puede obtener un nuevo token de acceso sin la interacción del usuario intercambiando un token de actualización por él.
Los tokens de actualización también son válidos para un solo uso y caducan a los 60 días.
offline_access
en el parámetro scope
de la solicitud de autorización para que el código de autorización pueda ser utilizado en una solicitud de token para obtener un token de actualización.
Para obtener un token de actualización, envía una solicitud POST con el código de autorización al punto de conexión del token.
{BaseURL}/identity/connect/token
.
La solicitud devuelve un nuevo token de acceso y un token de actualización:
{
"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
del token utilizando el tipo de concesión refresh_token
.
{
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 respuesta devuelve un nuevo token de acceso y un nuevo token de actualización.
El token de actualización existente ya no es válido después de su uso, así que asegúrate de utilizar el nuevo token de actualización que has recibido.
401 Unauthorized
, abra su archivo UiPath.Orchestrator.dll.config y compruebe que puede encontrar la siguiente línea:
[add key="IdentityServer.OAuth.Enabled" value="true"/]
<appSettings>
y luego reinicia Orchestrator para que se aplique el cambio.
application/x-www-form-urlencoded
para cualquier petición a los puntos de conexión del Identity Server. Esto no es necesario si las solicitudes se realizan de forma programada.
{BaseURL}/identity/.well-known/openid-configuration
{BaseURL}/identity/connect/authorize
{BaseURL}/identity/connect/token