agents
latest
false
重要 :
このコンテンツの一部は機械翻訳によって処理されており、完全な翻訳を保証するものではありません。 新しいコンテンツの翻訳は、およそ 1 ~ 2 週間で公開されます。
UiPath logo, featuring letters U and I in white

Agents ガイド

最終更新日時 2026年2月24日

匿名アクセスの設定

概要

匿名アクセスを使用すると、UiPath アカウントを持たないユーザー向けに会話型エージェントを埋め込むことができます。これは、顧客向けアプリケーション、パブリック ポータル、およびユーザーが UiPath の認証を必要とせずにエージェントと対話できるようにするシナリオで便利です。

匿名アクセスには以下が必要です。

  1. UiPath の [管理] で設定された機密の外部アプリケーション
  2. 認証を処理するために組織によってホストされたトークン エンドポイント
  3. 認証パラメーターが設定された埋め込みエージェントの URL
警告:

機密アプリのスコープの外部アプリでは、ユーザー認証なしで匿名アクセスが許可されます。意図しないデータ アクセスを防止するため、権限は慎重に設定してください。悪用を減らすため、匿名エージェントは、独自のポータルまたはログインの背後に配置することを強くお勧めします。

対象ユーザー: Automation Cloud アカウントなしで会話型エージェントにアクセスする必要があるユーザー。

前提条件

開始する前に、以下があることを確認してください。

  • Orchestrator にパブリッシュ済みの会話型エージェント
  • UiPath 管理ポータルへの組織管理者アクセス
  • サーバーレス関数または API エンドポイントをホストするインフラストラクチャ (AWS Lambda、Azure Functions、Google Cloud Functions など)

手順 1: 外部アプリケーションを作成する

  1. UiPath のホームページから [管理] に移動します。
  2. [外部アプリケーション] を選択します。
  3. [アプリケーションを追加] をクリックします。
  4. アプリケーションの詳細を入力します。
    • アプリケーション名: アプリケーションにわかりやすい名前を付けます。
    • アプリケーションの種類: [機密アプリケーション] を選択します。
  5. 以下のスコープをアプリケーション スコープとして追加します。
APIスコープ
Orchestrator API アクセスOR.Jobs
Orchestrator API アクセスOR.Execution
Orchestrator API アクセスOR.Users
Orchestrator API アクセスOR.Folders
トレース API アクセスTraces.Api
会話型エージェントConversationalAgents
  1. [追加] をクリックします (このクライアントにはリダイレクト URL は必要ありません)。
  2. ポップアップにアプリ IDアプリ シークレットが表示されます。
重要:

アプリ シークレットをコピーして安全に保管します。このウィンドウを閉じると、再度表示することはできなくなります。トークン エンドポイントを作成するときに必要になります。

注:

スコープをアプリケーション スコープではなくユーザー スコープとして追加すると、チャット アプリでユーザーのサインインが要求され、匿名アクセスの目的を果たせません。

手順 2: 外部アプリケーションの権限を設定する

外部アプリケーションを作成したら、匿名エージェントがアクセスできるリソースを制御するための権限を設定します。

テナント レベルのアクセス権を割り当てる

  1. Orchestrator に移動します。
  2. 左上の [テナント] を選択します。
  3. ツールバーから [アクセス権を管理] を選択します。
  4. [外部アプリ] を選択します。
  5. [外部アプリを割り当て] を選択します。
  6. 作成した外部アプリを検索して選択します。
  7. [追加のロール] で、必要なロールを選択します。
    • 最低限必要なロール: Automation User
    • その他のロールは、ユース ケースに必要な場合にのみ追加します。
  8. [割り当て] を選択します。

フォルダー レベルのアクセス権を割り当てる

  1. Orchestrator でフォルダーに移動します。
  2. エージェントがアクセスする必要のあるフォルダーごとに、以下を行います。
    1. フォルダーを選択します。
    2. [アカウント/グループ/外部アプリを割り当て] を選択します。
    3. ドロップダウンから外部アプリを選択します。
    4. 必要なロールを割り当てます。
    5. [割り当て] を選択します。
注:

外部アプリは、そのアプリが明示的な権限を持たないリソースに対しては制限されます。会話型エージェントに必要なすべてのコンテキスト、ツール、リソースにアプリがアクセスできることを確認してください。

手順 3: トークン エンドポイントを作成する

埋め込みの会話型エージェントはクライアント シークレットを安全に保存できないため、トークン エンドポイントが必要です。トークン エンドポイントは、クライアント資格情報を使用して UiPath で認証を行い、埋め込みエージェントにアクセス トークンを返します。

トークン エンドポイントには、以下の理由でサーバーレス アーキテクチャをお勧めします。

  • コストが低い: たとえば、AWS Lambda の場合、3,000,000 応答/月の料金は約 0.40 米ドルです。
  • メンテナンスが最小限: 管理すべきサーバーはありません。
  • スケーリングが容易: トラフィックのスパイクに自動的に対応します。

セキュリティに関する考慮事項

警告:

クライアント シークレットは非常に機密性が高いものです。誤って公開してしまった場合は、直ちにそのシークレットを削除し、[外部アプリケーション] 設定で新しいシークレットを生成してください。

トークン エンドポイントの実装を確認します。

  • クライアント シークレットを安全に保存する (環境変数、Secrets Manager)
  • 要求のオリジンを検証して未認可のアクセスを防止する
  • すべての通信に HTTPS を使用する

実装例

次の JavaScript コードは、ご使用のサーバーレス プラットフォームに合わせて変更できます。応答本文で {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' }
    };
  }
}

環境変数

サーバーレス プラットフォームで以下の環境変数を設定します。

変数説明
CLIENT_ID手順 1 のアプリ ID
CLIENT_SECRET手順 1 のアプリ シークレット

環境変数の正確な設定方法は、ご使用のホスティング プラットフォームによって異なります。

許可されたオリジンを設定する

ALLOWED_ORIGINS 配列は、未認可のソースからのトークン要求を拒否することによってセキュリティを提供します。このリストを、以下を含むように設定します。

  • https://cloud.uipath.com/* (埋め込みエージェントに必要)
  • https://staging.uipath.com (ステージング環境からの要求を許可する必要がある場合)
  • アプリケーションのドメイン (ローカルで、または他の環境からテストする場合)

手順 4: 匿名アクセスを持つエージェントを埋め込む

トークン エンドポイントを設定したら、次の 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>

匿名アクセス URL パラメーター

パラメーターRequired説明
agentIdはいパブリッシュ済みのエージェントのリリース ID です。
externalAuthはい匿名アクセスを有効化するには true に設定します。
authEndpointはいトークン エンドポイントの URL です。
externalUserIdはいユーザーの一意の識別子です (以下の注を参照)。
注:

externalUserId は、ユーザーが定義および維持する値です。これにより、ユーザーのチャット履歴を分離および取得します。チャット履歴を維持する必要がある場合は意味のあるユーザー ID を使用します。チャット履歴を保持する必要がない場合はランダムな GUID を使用します。

埋め込み URL の例

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

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>
注:

externalAuth=true パラメーターが指定されていない場合、埋め込みエージェントは、匿名アクセスではなく標準のサインイン リダイレクト フローを使用します。

トラブルシューティング

トークン エンドポイントが 403 を返す

  • ALLOWED_ORIGINS のリストに正しいドメインが含まれていることを確認します。
  • 要求のオリジン ヘッダーが正しく送信されていることを確認します。
  • エンドポイントを直接テストして、問題を切り分けます。

トークン要求が認証エラーで失敗する

  • CLIENT_ID 環境変数と CLIENT_SECRET 環境変数が正しく設定されていることを確認します。
  • UiPath の [管理] で、外部アプリケーションが現在もアクティブであることを確認します。
  • コード内のトークン エンドポイント URL が正しい UiPath 環境を指していることを確認します。

エージェントがリソースにアクセスできない

  • 外部アプリケーションに割り当てられているロールを Orchestrator で確認します。
  • 必要なすべてのフォルダーに対してフォルダー レベルの権限が構成されていることを確認します。
  • 外部アプリに追加したスコープが、必要な API アクセスに一致していることを確認します。

チャット履歴が保持されない

  • 同じユーザーに対して一貫した externalUserId を使用していることを確認します。
  • ユーザー ID が埋め込み URL 内で正しく渡されていることを確認します。

次のステップ

このページは役に立ちましたか?

サポートを受ける
RPA について学ぶ - オートメーション コース
UiPath コミュニティ フォーラム
Uipath Logo
信頼とセキュリティ
© 2005-2026 UiPath. All rights reserved.