- Introdução
- Autenticação
- Aplicativos externos (OAuth)
- Chaves de API
- ROPC (não recomendado)
- Escopos e permissões
- APIs de gestão de plataforma
Aplicativos externos (OAuth)
These instructions are intended for developers who maintain the integration between UiPath® products and external applications using the UiPath® functionality based on the OAuth framework.
Antes de você começar:
- O aplicativo externo já deve ter sido registrado por um Administratorsda organização.
- Obtenha os detalhes do registro do administrador da organização.
Após o aplicativo externo ser registrado, você deve implementar o mecanismo de autorização adequado para o aplicativo externo, com um tipo adequado de concessão para o escopo registrado, para que o aplicativo externo possa recuperar um token de acesso.
Qual tipo de concessão de autorização usar:
Tipo de Aplicativo |
Escopo |
Tipo de concessão necessário |
---|---|---|
Confidencial |
Usuário |
Authorization Code |
Confidencial |
Aplicativo |
Client Credentials |
não confidencial |
Usuário |
Código de autorização com o PKCE |
Se um aplicativo confidential foi concedido tanto para usuários quanto para aplicativos, você deve implementar ambos os tipos de concessão.
Quando o nome de escopo é o mesmo tanto sob o escopo do usuário quanto o do aplicativo, como no caso do Orchestrator, o tipo de concessão que você usa determina se o recurso é chamado sob o escopo do usuário ou do aplicativo.
The authorization server for accessing UiPath® resources is the UiPath® Identity Server, which supports the OAuth 2.0 framework.
OR.Default
, que permite que o aplicativo verifique as atribuições feitas no Orchestrator, nos níveis da pasta e do tenant. Então, o aplicativo poderá acessar os recursos aos quais recebeu acesso nesses tenants e pastas.
Por exemplo, você quer que um aplicativo externo visualize trabalhos e máquinas em todos os tenants na organização. Ao aproveitar a funcionalidade de acesso granular, você também pode configurar o aplicativo para visualizar filas em uma pasta.
OR.Jobs.Read, OR.Machines.Read, OR.Default
. Isso concede a seu app permissões para Visualizar trabalhos e máquinas em todos os tenants na organização, e também para Visualizar filas na pasta, desde que o app externo tenha sido atribuído a ela e tenha concedido as permissões necessárias por meio de uma função.
Use esse tipo de concessão quando o aplicativo registrado for do tipo confidencial e a solicitação for para o escopo do usuário.
Com esse tipo de concessão, o fluxo é o seguinte:
Agora, o aplicativo pode usar o token de acesso para acessar recursos de usuário até que o token expire (uma hora).
Use esse tipo de concessão se o aplicativo registrado for do tipo não confidencial e a solicitação for para escopo do usuário.
O fluxo é o mesmo ao usar o código de autorização, exceto que na solicitação de autorização é preciso incluir os seguintes parâmetros de consulta de solicitação:
-
code_challenge_method
, que deve serS256
-
code_challenge
, uma cadeia criptográfica aleatória derivada do code_verifier, usada para conectar a solicitação de autorização à solicitação de token.
Você deve usar um algoritmo verificador de código para gerar o desafio do código. Você também pode criar o seu próprio, desde que esteja em conformidade com o padrão rfc7636 .
https://{yourDomain}/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://{yourDomain}/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://{yourDomain}/identity_/connect/token
, você precisa incluir code_verifier
(uma cadeia original usada para gerar code_challenge
) no corpo da solicitação.
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}"
}
A resposta inclui um token de acesso que o aplicativo pode usar para acessar recursos de usuários até que o token expire (uma hora). Consulte Usando o Token de Acesso e Obtenção de um token de atualização para mais informações.
client_id
e o client_secret
para o endpoint do token do Identity Server:
https://{yourDomain}/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}"
}
Depois que o aplicativo tiver um token de acesso, ele pode usar o token para acessar recursos permitidos, limitado aos escopos selecionados, até que o token expire (uma hora).
Aqui está um exemplo de solicitação para a API odata/Machines que usa um token de acesso no cabeçalho de autorização, onde o token de acesso contém o escopo OR.Machines na declaração do escopo.
curl -X GET "https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"
curl -X GET "https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/odata/Machines"
-H "Authorization: Bearer {access_token}" -H "accept: application/json"
https://{yourDomain}/{organizationName}/{tenantName}/orchestrator_/swagger/index.html
para obter informações sobre as API disponíveis.
Os tokens de acesso expiram em uma hora. O aplicativo externo pode obter um novo token de acesso sem interação do usuário trocando um token de atualização por ele. Tanto os aplicativos externos confidenciais quanto os não confidenciais podem solicitar um token de atualização.
Os tokens de atualização também são válidos para um único uso e eles expiram após 60 dias.
offline_access
no parâmetro scope
da solicitação de autorização para que o código de autorização possa ser usado em uma solicitação de token para obter um token de atualização.
Envie uma solicitação POST com o código de autorização para o endpoint do token
https://{yourDomain}/identity_/connect/token
.
application/x-www-form-urlencoded
.
A solicitação devolve um novo token de acesso e um token de atualização:
{
"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://{yourDomain}/identity_/connect/token
usando o tipo de concessão 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
do corpo da solicitação.
A resposta devolve um novo token de acesso e um novo token de atualização.
O token de atualização existente não é mais válido após o uso, portanto, certifique-se de usar o novo token de atualização que você recebeu.
application/x-www-form-urlencoded
para qualquer solicitação para os endpoints do Identity Server. Se você estiver fazendo solicitações programáticas, isso não será necessário.
Camada do servidor de identidade | Endpoint | Description |
---|---|---|
Discovery | https://{yourDomain}/identity_/.well-known/openid-configuration | Use este endpoint para recuperar metadados sobre sua instância do Identity Server. |
Autorização | https://{yourDomain}/identity_/connect/authorize | Use este terminal para solicitar tokens ou códigos de autorização por meio do navegador. Este processo inclui autenticação do usuário final e, opcionalmente, consentimento. |
Token | https://{yourDomain}/identity_/connect/token | Use esse ponto de extremidade para solicitar tokens de forma programática.
Observe que, para esse endpoint, o tipo de conteúdo deve ser
application/x-www-form-urlencoded .
|
- Usando os diferentes tipos de concessões
- Acesso fino
- Authorization Code
- Código de autorização com o PKCE
- Client Credentials
- Usando o Token de Acesso
- Obtendo um token de atualização
- Obtendo um token de atualização
- Obtendo um novo token de atualização e um novo token de acesso
- UiPath® Identity Server Endpoints