UiPath Documentation
agents
latest
false
Importante :
A localização de um conteúdo recém-publicado pode levar de 1 a 2 semanas para ficar disponível.
UiPath logo, featuring letters U and I in white

Guia do Usuário de Agentes

Última atualização 23 de abr de 2026

Configuração de acesso anônimo

Visão geral

O acesso anônimo permite que você incorpore agentes de conversa para usuários que não têm contas da UiPath. Isso é útil para aplicativos voltados para o cliente, portais públicos ou qualquer cenário em que você queira que os usuários interajam com seu agente sem exigir a autenticação da UiPath.

O acesso anônimo exige:

  1. Um aplicativo externo confidencial configurado no UiPath Admin
  2. Um ponto de extremidade do token hospedado por sua organização para lidar com a autenticação
  3. Uma URL de agente incorporado configurada com os parâmetros de autenticação
AVISO:

Apps externos confidenciais com escopo de aplicativos permitem acesso anônimo sem autenticação do usuário. Configurar permissões cuidadosamente para evitar o acesso não intencional a dados. Recomendamos fortemente a colocação de agentes anônimos por trás do seu próprio portal ou login para mitigar abusos.

Usuários pretendidos: usuários que precisam acessar agentes de conversa sem uma conta do Automation Cloud.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • Um agente de conversa publicado no Orchestrator.
  • Acesso de administrador da organização ao portal de administração da UiPath.
  • Infraestrutura para hospedar uma função sem servidor ou ponto de extremidade de API (por exemplo, AWS Lambda, Azure Functions, Google Cloud Functions).

Etapa 1: crie o aplicativo externo

  1. Na página inicial da UiPath, navegue até Administrador.
  2. Selecione Apps Externos.
  3. Selecione Adicionar aplicativo.
  4. Preencha os detalhes do aplicativo:
    • Nome do aplicativo: dê ao aplicativo um nome que o desceva.
    • Tipo de aplicativo: selecione Aplicativo confidencial.
  5. Adicione os seguintes escopos como escopos de aplicativo:
APIEscopo
Acesso à API do OrchestratorOR.Jobs
Acesso à API do OrchestratorOR.Execution
Acesso à API do OrchestratorOR.Users
Acesso à API do OrchestratorOR.Folders
Acesso à API do TracesTraces.Api
Agentes de conversaConversationalAgents
  1. Clique em Adicionar (uma URL de redirecionamento não é necessária para este cliente).
  2. Um pop-up exibe o ID do aplicativo e o Segredo do aplicativo.
Importante:

Copie o segredo do aplicativo e armazene-o com segurança. Você não poderá visualizá-lo novamente após fechar essa janela e precisará dele ao criar o ponto de extremidade do token.

Observação:

Adicionar quaisquer escopos como escopos de usuário em vez de escopos de aplicativos faz com que o aplicativo de chat solicite o login do usuário, destruindo a finalidade do acesso anônimo.

Etapa 2: configurar permissões de aplicativos externos

Após criar o aplicativo externo, configure suas permissões para controlar quais recursos o agente anônimo pode acessar.

Atribuir acesso no nível do tenant

  1. Navegue para o Orchestrator.
  2. Selecione Tenant no canto superior esquerdo.
  3. Selecione Gerenciar acesso na barra de ferramentas.
  4. Selecione Apps externos.
  5. Selecione Atribuir aplicativo externo.
  6. Pesquise e selecione o aplicativo externo que você criou.
  7. Em Funções adicionais, selecione as funções necessárias:
    • Mínimo necessário: Automation User.
    • Acrescente funções adicionais apenas conforme necessário para seu caso de uso.
  8. Selecione Atribuir.

Atribuir acesso no nível da pasta

  1. Navegue até Pastas no Orchestrator.
  2. Para cada pasta, o agente precisa de acesso a:
    1. Selecione a pasta.
    2. Selecione Atribuir aplicativo de conta/grupo/externo.
    3. Selecione seu aplicativo externo no menu suspenso.
    4. Atribua as funções necessárias.
    5. Selecione Atribuir.
Observação:

O aplicativo externo é restrito a quaisquer recursos para os quais ele não tenha permissões explícitas. Certifique-se de que o aplicativo tenha acesso a todos os contextos, ferramentas e recursos de que o agente de conversa precisa.

Etapa 3: criar um ponto de extremidade do token

Um ponto de extremidade do token é necessário porque o agente de conversa incorporado não pode armazenar segredos do cliente com segurança.Seu ponto de extremidade do token autentica-se com a UiPath usando as credenciais do cliente e retorna um token de acesso ao agente incorporado.

Recomendamos uma arquitetura sem servidor para o ponto de extremidade do token:

  • Baixo custo: por exemplo, o preço do AWS Lambda para 3.000.000 respostas/mês é de aproximadamente USD 0,40.
  • Manutenção mínima: sem servidores para gerenciar.
  • Dimensionamento fácil: lida com picos de tráfego automaticamente.

Considerações de segurança

AVISO:

O segredo do cliente é altamente confidencial.Se ele for exposto involuntariamente, exclua imediatamente o segredo e gere um novo nas configurações do Aplicativo externo.

Certifique-se de que a implementação do seu ponto de extremidade do token:

  • Armazena o segredo do cliente com segurança (variáveis de ambiente, gerente de segredos)
  • Valida solicitações de origens para evitar acesso não autorizado
  • Usa HTTPS para todas as comunicações

Exemplo de implementação

O seguinte código JavaScript pode ser adaptado para sua plataforma sem servidor. O corpo da resposta deve retornar {access_token: <token>}:

// Whitelist: Configure allowed origins for your deployment
const ALLOWED_ORIGINS = [
  'https://cloud.uipath.com/*',
  // Add your application domains here
];

function matchesOriginPattern(origin, pattern) {
  try {
    const originUrl = new URL(origin);
    const originBase = `${originUrl.protocol}//${originUrl.host}`;

    if (pattern.includes('*')) {
      const regexPattern = pattern
        .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
        .replace(/\*/g, '.*');
      const regex = new RegExp(`^${regexPattern}$`);
      return regex.test(originBase);
    } else {
      return originBase.startsWith(pattern);
    }
  } catch (e) {
    return false;
  }
}

function checkOrigin(req) {
  const origin = req.headers.origin || req.headers.referer;

  if (!origin) {
    const host = req.headers.host;
    if (host && (host.includes('localhost') || host.includes('127.0.0.1'))) {
      return true;
    }
    return false;
  }

  return ALLOWED_ORIGINS.some(pattern => matchesOriginPattern(origin, pattern));
}

async function getClientAccessToken() {
  const clientId = process.env.CLIENT_ID;
  const clientSecret = process.env.CLIENT_SECRET;
  const scope = 'OR.Default ConversationalAgents Traces.Api';

  const params = new URLSearchParams({
    grant_type: 'client_credentials',
    client_id: clientId,
    client_secret: clientSecret,
    scope: scope
  });

  const response = await fetch('https://cloud.uipath.com/identity_/connect/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: params.toString()
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Token request failed: ${response.status} ${errorText}`);
  }

  const data = await response.json();
  return data.access_token;
}

export async function token(context, req) {
  if (!checkOrigin(req)) {
    context.res = {
      status: 403,
      headers: { 'Content-Type': 'application/json' },
      body: { error: 'Origin not allowed' }
    };
    return;
  }

  try {
    const accessToken = await getClientAccessToken();
    context.res = {
      status: 200,
      headers: { 'Content-Type': 'application/json' },
      body: { access_token: accessToken }
    };
  } catch (error) {
    console.error('Error fetching access token:', error);
    context.res = {
      status: 500,
      headers: { 'Content-Type': 'application/json' },
      body: { error: 'Failed to fetch access token' }
    };
  }
}
// Whitelist: Configure allowed origins for your deployment
const ALLOWED_ORIGINS = [
  'https://cloud.uipath.com/*',
  // Add your application domains here
];

function matchesOriginPattern(origin, pattern) {
  try {
    const originUrl = new URL(origin);
    const originBase = `${originUrl.protocol}//${originUrl.host}`;

    if (pattern.includes('*')) {
      const regexPattern = pattern
        .replace(/[.+?^${}()|[\]\\]/g, '\\$&')
        .replace(/\*/g, '.*');
      const regex = new RegExp(`^${regexPattern}$`);
      return regex.test(originBase);
    } else {
      return originBase.startsWith(pattern);
    }
  } catch (e) {
    return false;
  }
}

function checkOrigin(req) {
  const origin = req.headers.origin || req.headers.referer;

  if (!origin) {
    const host = req.headers.host;
    if (host && (host.includes('localhost') || host.includes('127.0.0.1'))) {
      return true;
    }
    return false;
  }

  return ALLOWED_ORIGINS.some(pattern => matchesOriginPattern(origin, pattern));
}

async function getClientAccessToken() {
  const clientId = process.env.CLIENT_ID;
  const clientSecret = process.env.CLIENT_SECRET;
  const scope = 'OR.Default ConversationalAgents Traces.Api';

  const params = new URLSearchParams({
    grant_type: 'client_credentials',
    client_id: clientId,
    client_secret: clientSecret,
    scope: scope
  });

  const response = await fetch('https://cloud.uipath.com/identity_/connect/token', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/x-www-form-urlencoded',
    },
    body: params.toString()
  });

  if (!response.ok) {
    const errorText = await response.text();
    throw new Error(`Token request failed: ${response.status} ${errorText}`);
  }

  const data = await response.json();
  return data.access_token;
}

export async function token(context, req) {
  if (!checkOrigin(req)) {
    context.res = {
      status: 403,
      headers: { 'Content-Type': 'application/json' },
      body: { error: 'Origin not allowed' }
    };
    return;
  }

  try {
    const accessToken = await getClientAccessToken();
    context.res = {
      status: 200,
      headers: { 'Content-Type': 'application/json' },
      body: { access_token: accessToken }
    };
  } catch (error) {
    console.error('Error fetching access token:', error);
    context.res = {
      status: 500,
      headers: { 'Content-Type': 'application/json' },
      body: { error: 'Failed to fetch access token' }
    };
  }
}

Variáveis de Ambiente

Configure as seguintes variáveis de ambiente em sua plataforma sem servidor:

VariávelDescription
CLIENT_IDO ID do aplicativo da etapa 1
CLIENT_SECRETO segredo do aplicativo da etapa 1

O método exato para definir variáveis de ambiente depende da sua plataforma de hospedagem.

Configuração de origens permitidas

A Array ALLOWED_ORIGINS fornece segurança rejeitando solicitações de token de fontes não autorizadas. Configure essa lista para incluir:

  • https://cloud.uipath.com/* (necessário para o agente incorporado)
  • https://staging.uipath.com se você precisar permitir solicitações de um ambiente de preparação
  • Os domínios do seu aplicativo se estiver sendo testado localmente ou de outros ambientes

Etapa 4: incorporar o agente com acesso anônimo

Com o ponto de extremidade do token configurado, incorpore o agente de conversa usando o seguinte formato de URL:

https://<cloud_env>.uipath.com/<organization>/<tenant>/autopilotforeveryone_/conversational-agents/?agentId=<agent_id>&externalAuth=true&authEndpoint=<token_endpoint_url>&externalUserId=<user_id>
https://<cloud_env>.uipath.com/<organization>/<tenant>/autopilotforeveryone_/conversational-agents/?agentId=<agent_id>&externalAuth=true&authEndpoint=<token_endpoint_url>&externalUserId=<user_id>

Parâmetros de URL de acesso anônimo

ParâmetroRequiredDescription
agentIdSimO ID de versão do agente publicado
externalAuthSimDefina como true para habilitar o acesso anônimo
authEndpointSimURL do ponto de extremidade do seu token
externalUserIdSimIdentificador exclusivo para o usuário (consulte a nota abaixo)
Observação:

O externalUserId é um valor que você define e mantém. Ele separa e recupera o histórico de chat do usuário. Use um ID de usuário significativo se você precisar manter o histórico do chat ou um GUID aleatório se a persistência do histórico do chat não for necessária.

Exemplo de URL incorporado

https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123
https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123

Exemplo de HTML

<iframe
  src="https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123"
  width="400"
  height="600"
  frameborder="0"
  allow="clipboard-write"
></iframe>
<iframe
  src="https://<cloud_env>.uipath.com/myorg/mytenant/autopilotforeveryone_/conversational-agents/?agentId=12345&externalAuth=true&authEndpoint=https://my-api.example.com/token&externalUserId=user-abc-123"
  width="400"
  height="600"
  frameborder="0"
  allow="clipboard-write"
></iframe>
Observação:

Se o parâmetro externalAuth=true estiver ausente, o agente incorporado usará o fluxo de redirecionamento de login padrão em vez de acesso anônimo.

Solução de problemas

O ponto de extremidade do token retorna 403

  • Verifique se sua lista ALLOWED_ORIGINS inclui os domínios corretos.
  • Verifique se o cabeçalho de origem da solicitar está sendo enviado corretamente.
  • Teste o ponto de extremidade diretamente para isolar o problema.

A solicitação de token falha com erro de autenticação

  • Verifique se as variáveis CLIENT_ID e CLIENT_SECRET de ambiente estão definidas corretamente.
  • Confirme que o aplicativo externo ainda está ativo no UiPath Admin.
  • Verifique se o URL do ponto de extremidade do token no código aponta para o ambiente UiPath correto.

O agente não pode acessar recursos

  • Revise as funções atribuídas ao aplicativo externo no Orchestrator.
  • Verifique se as permissões no nível da pasta estão configuradas para todas as pastas necessárias.
  • Verifique se os escopos adicionados ao aplicativo externo correspondem ao acesso à API necessário.

Histórico do chat não persiste

  • Certifique-se de estar usando um externalUserId consistente para o mesmo usuário.
  • Verifique se o ID do usuário está sendo passado corretamente no URL integrado.

Próximas Etapas

Esta página foi útil?

Conectar

Precisa de ajuda? Suporte

Quer aprender? Academia UiPath

Tem perguntas? Fórum do UiPath

Fique por dentro das novidades