認証のタイプ

この記事の対象: SDK v4

Bot Framework には、ボット認証ユーザー認証という 2 つの幅広い認証カテゴリがあります。 それぞれに、セキュリティ保護されたリソースへのアクセスを許可するトークンが関連付けられています。 次の図は、ボットとユーザー認証の双方に関連する要素を示しています。

Diagram illustrating the difference between the token for a bot and the token for a user.

この図の要素は以下のとおりです。

  • ホスト プラットフォーム は、ボット ホスティング プラットフォームです。 Azure または任意のホスト プラットフォームを選択できます。
  • Bot Connector Service は、ボットとチャンネルとの間の通信を支援します。 チャンネルから受信したメッセージをアクティビティ オブジェクトに変換してから、ボットのメッセージング エンドポイントに送信します。 同様に、ボットから受信したアクティビティ オブジェクトをチャンネルが理解できるメッセージに変換してから、チャンネルに送信します。
  • Bot Adapter は既定の Bot Framework アダプターです。 それでは次のことが行われます。
    • JSON ペイロードをアクティビティ オブジェクトに変換します。
    • ターン コンテキストを作成し、これをアクティビティ オブジェクトを追加します。
    • ミドルウェア (存在する場合) を実行します。
    • ターン コンテキストをボットに転送します。

Note

カスタム チャンネル アダプターを使用すると、アダプター自体は Bot Connector Service と既定の Bot Adapter が行うタスクを実行します。 また、関連する Web フック API の認証メカニズムも提供します。 例えば、Slack アダプターを使用してボットを Slack に接続するを参照してください。

ボット認証

ボットは、ボットの設定ファイル (appsettings.json (.NET)、.env(JavaScript) 、config.py(Python))、あるいはシークレットまたはキー マネージャー内に保持される MicrosoftAppIDMicrosoftAppPassword によって識別されます。 詳細については、MicrosoftAppID と MicrosoftAppPassword を参照してください。

Azure portal でボットを登録すると、Azure によって Microsoft Entra ID 登録アプリケーションが作成されます。 Bot Framework CLI を使用する場合は、特にMicrosoft Entra ID 登録を作成する手順を実施する必要があります。 この登録には、アプリケーション ID (MicrosoftAppID) とクライアント シークレット (MicrosoftAppPassword) があります。 Azure では、これらの値を使用して、ボットがセキュリティで保護されたリソースにアクセスできるトークンを作成します。

チャンネルから Bot Connector service を介してボットに要求が送信されるときは、トークンが要求の承認ヘッダーで指定されます。 トークンの認証を検証することにより、Bot Connector service からの呼び出しをボットで認証します。

ボットから Bot Connector service を介してチャンネルに要求が送信されるときは、要求の承認ヘッダーにトークン指定する必要があります。 すべての要求には、要求を承認するために Bot Connector service によって検証される、アクセス トークンが含まれている必要があります。

説明されている操作は、Bot Framework SDK によって自動的に実行されます。

詳細については、Bot Connector service からボットへの要求を認証しボットから Bot Connector service への要求を認証する方法に関する REST API ドキュメントを参照してください。

チャンネル

通常、チャンネルは、Bot Connector service を介してボットと通信するので、全般に、以前の認証原則が適用されます。 一部のチャンネルと機能には、固有の認証に関する考慮事項があります。

Direct Line

クライアント アプリケーションは、標準でサポートされているチャンネルに加えて、Direct Line チャンネルを使用してボットと通信することができます。

クライアント アプリケーションの Direct Line (バージョン 3.0) への要求は、Azure portal の Direct Line チャンネル構成ページから取得するシークレットを使用するか、可能であれば、実行時に取得するトークンを使用して認証できます。 シークレットまたはトークンは、各要求の Authorization ヘッダーで指定されます。

重要

Web チャットで Azure AI Bot Service 認証を使用する場合、注意する必要がある重要なセキュリティの考慮事項がいくつかあります。 詳細については、REST 認証に関する記事の「セキュリティに関する考慮事項」セクションを参照してください。

詳細については、シークレットを非表示にしておき、シークレットをトークンと交換し、埋め込みを生成するを参照してください。

Web チャット

Web チャットには、チャンネルコントロールという、2 つの実装があります。

  • Azure を使用してボットを登録すると、Web チャット チャンネルが自動的に構成されて、ボットをテストできるようになります。 詳細については、「ボットをWeb チャットに接続する」を参照してください。
  • Direct Line チャンネルで Web チャット コントロールを使用すれば、クライアント アプリケーション内のボットにアクセスできます。 コントロールの詳細については、Bot Framework Web チャットに関するページを参照してください。

スキル

スキルとスキル コンシューマーは、それぞれ独自のアプリ ID とパスワードを持つ 2 つの異なるボットです。

  • コンシューマーは、ユーザー アクティビティをスキルに転送し、スキルの応答をユーザーに転送できます。
  • スキルに対して、スキル コンシューマーはチャンネルとして機能します。 コンシューマーには、スキルがアクティビティを送信するサービス URL として機能するスキル ホスト エンドポイントがあります。
  • スキルに関する詳細については、スキルの概要についてのページを参照してください。

サービス レベルの認証は、Bot Connector service で管理されます。 このフレームワークでは、ベアラー トークンとボット アプリケーション ID を使用して各ボットの ID が検証されます。

重要

これには、すべてのボット (スキル コンシューマーおよびそれが消費するスキル) に有効なアプリケーション認証情報が設定されている必要があります。

要求検証

この基本的なレベルの認証に加えて、要求検証コントロールをスキルとスキル コンシューマーの認証構成に追加する必要があります。 要求は認証ヘッダーの後に評価されます。 このプロセスにより、各ボットは、アクティビティを受け入れる他のボットを制限できます。

要求検証コントロールのサンプルについては、スキルを実装しスキル コンシューマーを実装する方法を参照してください。

Bot Framework エミュレーター

Bot Framework Emulator には、独自の認証フローと独自のトークンがあります。 この Emulator には、独自のチャンネルとビルトイン サーバーがあります。

ユーザー認証

場合によっては、ユーザーに代わって、ボットがセキュリティで保護されたオンライン リソースにアクセスする必要があります。 これを行うには、ボットを承認する必要があります。 これは、ある操作 (メールの確認、フライト状況の確認、発注など) を実行するために、ボットが、Microsoft Graph や GitHub、組織の REST サービスなど、外部サービスを呼び出す必要があるからです。 OAuth は、ユーザーを認証し、ボットを承認するために使用されます。

Note

ボットがユーザーのリソースにアクセスするには、2 つのマクロステップが関係します。

  1. [認証] 。 ユーザー ID を検証するプロセスです。
  2. 承認。 ボットがユーザーのリソースにアクセスできることを確認するプロセス。

最初の手順に成功した場合は、ユーザーの認証情報に基づくトークンが発行されます。 2 番目の手順では、ボットはトークンを使用してユーザーのリソースにアクセスします。

詳細については、「ユーザー認証」を参照してください。

ID プロバイダー

ID プロバイダーは、ユーザー ID またはクライアント ID を認証し、使用可能なセキュリティ トークンを発行します。 ユーザー認証をサービスとして提供します。 Web アプリケーションなどのクライアント アプリケーションは、信頼できる ID プロバイダーに認証を委任します。

ボットは、信頼できる ID プロバイダーを使用して次のことができます。

  • シングル サインオン (SSO) 機能を有効にして、セキュリティで保護された複数のリソースにアクセスできます。
  • ユーザーに代わってクラウド コンピューティング リソースに接続すれば、ユーザーが再認証する必要が減ります。

Note

ボット認証中に発行されたトークンは、ユーザー認証中に発行されたトークンと同じではありません。 1 つ目は、ボット、チャンネル、最終的には、クライアント アプリケーション間のセキュリティで保護された通信を確立するために使用されます。 2 つ目は、ユーザーに代わってセキュリティで保護されたリソースにアクセスするボットを承認するために使用されます。

ユーザーがチャンネルにサインインできるように、チャンネルは独自の個別のユーザー認証を提供することに注意してください。

ユーザーの代わりにボットが ID プロバイダーを使用してリソースにアクセスする方法の詳細については、ID プロバイダーを参照してください。