認証の種類Authentication types

適用対象: SDK v4APPLIES TO: SDK v4

Bot Framework では、 ボット認証ユーザー認証 の2つの広範な認証カテゴリが存在します。In the Bot Framework, two broad authentication categories exist: bot authentication and user authentication. 各には、セキュリティで保護されたリソースへのアクセスを許可する トークン が関連付けられています。Each has an associated token to allow access to secured resources. 次の図は、bot とユーザー認証の両方に関係する要素を示しています。The following figure shows the elements involved in both bot and user authentication.

bot framework 認証コンテキスト

この図の場合:In this figure:

  • Host platform は bot ホスティングプラットフォームです。Host Platform is the bot hosting platform. Azure または選択した任意のホストプラットフォームを指定できます。It can be Azure or any host platform you chose.
  • Bot Connector サービス は、bot とチャネル間の通信を容易にします。Bot Connector Service facilitates communication between a bot and a channel. チャネルから受信したメッセージをアクティビティオブジェクトに変換し、bot のメッセージングエンドポイントに送信します。It converts messages received from channels into activity objects, and send them to the bot's messaging endpoint. 同様に、bot から受信したアクティビティオブジェクトをチャネルが認識するメッセージに変換し、チャネルに送信します。Likewise, it converts activity objects received from the bot into messages understood by the channel and sends them to the channel.
  • Bot アダプターBot Adapter. これは、既定の Bot Framework アダプターです。This is the default Bot Framework adapter. 次のタスクを実行します。It performs these tasks:
    • JSON ペイロードをオブジェクトに変換します。Converts the JSON payload into an object. この時点では、Bot Connector サービスにより、既にアクティビティオブジェクトになっています。At this point, it is already an activity object, thanks to the Bot Connector Service.
    • ターンコンテキストを作成し、アクティビティオブジェクトを追加します。Creates a turn context and adds the activity object to it.
    • ミドルウェアを実行します (存在する場合)。Runs middleware, if any.
    • ボットにターンコンテキストを転送します。Forwards the turn context to the bot.

注意

カスタムチャネルアダプターを使用すると、アダプター自体は Bot コネクタサービスと既定のボットアダプターが実行するタスクを実行します。When a custom channel adapter is used, the adapter itself performs the tasks that the Bot Connector Service and the default Bot Adapter do. また、関連する web フック API の認証メカニズムも提供します。Also, it provides the authentication mechanism for the related web hook API. 例については、「 余裕期間アダプターを使用して bot を余裕期間に接続する」を参照してください。For an example, see Connect a bot to Slack using the Slack adapter.

ボット認証Bot authentication

Bot は、その Microsoft appidmicrosoft apppassword によって識別されます。この id は、bot の設定ファイル ( appsettings.json (.net)、 .env (JavaScript)、 config.py (Python))、または Azure Key Vault 内で保持されます。A bot is identified by its MicrosoftAppID and MicrosoftAppPassword, which are kept within the bot's settings files (appsettings.json (.NET), .env (JavaScript), config.py (Python)) or in Azure Key Vault. 詳細については、「 Microsoft appid」と「Microsoft Apppassword」を参照してください。For more information, see MicrosoftAppID and MicrosoftAppPassword.

Bot チャンネルの登録 などによって Azure portal に bot を登録すると、Azure によって ACTIVE DIRECTORY (AD) 登録アプリケーションが作成されます。When you register a bot in the Azure portal, for example via the Bot Channels Registration, Azure creates an Active Directory (AD) registration application. Bot Framework CLI を使用する場合は、AD 登録を作成する手順を明示的に実行する必要があります。If you use the Bot Framework CLI, you must specifically perform a step to create the AD registration. この登録には、アプリケーション ID ( MicrosoftAppID ) とクライアントシークレット () が含まれてい MicrosoftAppPassword ます。This registration has an application ID (MicrosoftAppID) and client secret (MicrosoftAppPassword). Azure では、これらの値を使用して、セキュリティで保護されたリソースに bot がアクセスできる トークン を生成します。Azure uses these values to generate a token with which the bot can access secure resources.

チャネルが bot Connector サービスを介して bot に要求を送信すると、要求の Authorization ヘッダートークン が指定されます。When a channel sends a request to a bot, via the Bot Connector service, it specifies a token in the Authorization header of the request. Bot は、トークンの信頼性を確認することによって、Bot Connector サービスからの呼び出しを認証します。The bot authenticates calls from the Bot Connector service by verifying the authenticity of the token.

Bot が Bot Connector サービス を介してチャネルに要求を送信する場合、要求の Authorization ヘッダートークン を指定する必要があります。When the bot sends a request to a channel via the Bot Connector service, it must specify the token in the Authorization header of the request. すべての要求には、要求を承認するために Bot Connector サービスによって検証されるアクセストークンが含まれている必要があります。All requests must include the access token which is verified by the Bot Connector service to authorize the request.

説明する操作は、Bot Framework SDK によって自動的に実行されます。The operations described are automatically performed by the Bot Framework SDK.

詳細については、bot connector サービスから bot への要求を認証 し、bot から bot connector サービスへの要求を認証する方法に関する REST API のドキュメントを参照してください。For more details, see the REST API documentation on how to authenticate requests from the Bot Connector service to your bot and authenticate requests from your bot to the Bot Connector service.

チャンネルChannels

通常、チャネルはボット コネクタサービス を介して bot と通信します。Typically, channels communicate with a bot via the Bot Connector service. これは、以前の認証原則が一般的に適用されることを意味します。This means that the previous authentication principles generally apply. 特定のチャネルの特性を確認することもできます。You may want to notice characteristics of specific channels.

Direct LineDirect Line

標準でサポートされているチャネルに加えて、クライアントアプリケーションは、直接ラインチャネルを使用して bot と通信できます。Besides the standard supported channels, a client application can communicate with a bot using the Direct Line channel.

クライアントアプリケーションは、Azure portal の [ダイレクトラインチャネル] 構成ページから取得した シークレット を使用するか、実行時に取得された トークン を使用して、ダイレクトライン (バージョン 3.0) への要求を認証します。The client application authenticates requests to Direct Line (version 3.0) either by using a secret obtained from the Direct Line channel configuration page in the Azure portal or, better, by using a token obtained at runtime. シークレットまたはトークンは、各要求の Authorization ヘッダーで指定されます。The secret or token are specified in the Authorization header of each request.

重要

Web チャットで Azure Bot Service 認証を使用する場合、注意する必要がある重要なセキュリティの考慮事項がいくつかあります。When you use Azure Bot Service authentication with Web Chat there are some important security considerations you must keep in mind. 詳細については、REST 認証に関する記事の「セキュリティに関する考慮事項」セクションを参照してください。For more information, see the security considerations section in the REST authentication article.

詳細については、「シークレットを非表示にする」、「 トークンのシークレットを交換する」、および「埋め込みを生成する」を参照してください。For more information, see Keep your secret hidden, exchange your secret for a token, and generate the embed.

Web チャットWeb Chat

Web チャットには、 チャネルコントロール の2つの実装があります。The Web Chat has two implementations: the channel and the control.

  • Bot を Azure に登録すると、Web チャットチャネルは bot のテストを許可するように自動的に構成されます。When you register a bot with Azure, the Web Chat channel is automatically configured to allow testing of the bot.

    bot web chat テスト..

    詳細については、「 Web チャットにボットを接続する」を参照してください。For more information, see Connect a bot to Web Chat.

  • ダイレクトラインチャネルと共に Web チャットコントロールを使用して、クライアントアプリケーションのボットにアクセスできます。You can use a Web Chat control with the Direct Line channel to provide access to a bot in a client application. コントロールの詳細については、「 Bot Framework Web Chat」を参照してください。For more information about the control, see Bot Framework Web Chat.

スキルSkills

スキルとスキルのコンシューマーは、それぞれ独自のアプリ ID とパスワードを持つ2つの独立したボットです。A skill and a skill consumer are two distinct bots, each with their own app ID and password.

  • コンシューマーは、ユーザーアクティビティをスキルに転送し、スキルの応答をユーザーに転送できます。The consumer can forward user activities to a skill and forward the skill's responses to the user.
  • スキルを向上させるために、スキルコンシューマーはチャネルとして機能します。To the skill, the skill consumer acts as a channel. コンシューマーには、スキルがアクティビティを送信するサービス URL として機能するスキルホストエンドポイントがあります。The consumer has a skill host endpoint that acts as the service URL that the skill sends activities to.
  • スキルの詳細については、「 スキルの概要」を参照してください。For more information about skills, see the skills overview.

サービス レベルの認証は、Bot Connector サービスで管理されます。Service-level authentication is managed by the Bot Connector service. このフレームワークでは、ベアラー トークンとボット アプリケーション ID を使用して各ボットの ID が検証されます。The framework uses bearer tokens and bot application IDs to verify the identity of each bot.

重要

これには、有効なアプリケーション資格情報を取得するために、すべてのボット (スキルの消費者とそれが使用するすべてのスキル) が必要です。This requires all bots (the skill consumer and any skills it consumes) to have valid application credentials.

要求検証Claims validation

この基本レベルの認証に加えて、 要求検証コントロール を、スキルとスキルコンシューマーの認証構成に追加する必要があります。In addition to this basic level of authentication, you must add a claims validator to the authentication configuration of the skill and the skill consumer. 要求は認証ヘッダーの後に評価されます。The claims are evaluated after the authentication header. これにより、各 bot は、アクティビティを受け入れる他のボットを制限できます。This allows each bot to restrict which other bots it will accept activities from.

要求の検証の例については、「 スキルを実装 し、 スキルコンシューマーを実装する方法」を参照してください。For sample claims validation, see how to implement a skill and implement a skill consumer.

Bot Framework エミュレーターBot Framework Emulator

Bot Framework エミュレーターには、独自の認証フローと独自のトークンがあります。The Bot Framework Emulator has its own authentication flow and its own tokens. エミュレーターには、独自のチャネルと組み込みのサーバーがあります。The Emulator has its own channel and a built-in server.

ユーザー認証User authentication

Bot は、ユーザーに代わって、セキュリティで保護されたオンラインリソースにアクセスする必要がある場合があります。At times a bot must access secured online resources on behalf of the user. そのためには、bot を承認する必要があります。To do that the bot must be authorized. これは、電子メールのチェック、フライトの状態の確認、注文の送信などの特定の操作を実行するために、bot は Microsoft Graph、GitHub、または会社の REST サービスなどの外部サービスを呼び出す必要があるためです。This is because to perform certain operations such as checking email, checking on flight status, or placing an order, the bot needs to call an external service such as Microsoft Graph, GitHub, or a company's REST service. OAuth は、ユーザーを認証し、bot を承認するために使用されます。OAuth is used to authenticate the user and authorize the bot.

注意

Bot がユーザーのリソースにアクセスするには、2つのマクロステップが関係しています。Two macro-steps are involved for a bot to access a user's resources.

  1. [認証] :Authentication. ユーザーの id を検証するプロセス。The process of verifying the user's identity.
  2. 承認Authorization. Bot がユーザーのリソースにアクセスできるかどうかを確認するプロセス。The process of verifying that the bot can access the user's resources.

最初の手順が成功した場合は、ユーザーの資格情報に基づくトークンが発行されます。If the first step is successful then a token based on the user's credentials is issued. 2番目の手順では、bot はトークンを使用してユーザーのリソースにアクセスします。In the second step, the bot uses the token to access the user's resources.

詳細については、「 ユーザー認証」を参照してください。For more information, see User authentication.

ID プロバイダーIdentity providers

ID プロバイダーは、ユーザー ID またはクライアント ID を認証し、使用可能なセキュリティ トークンを発行します。An identity provider authenticates user or client identities and issues consumable security tokens. ユーザー認証をサービスとして提供します。It provides user authentication as a service. Web アプリケーションなどのクライアント アプリケーションは、信頼できる ID プロバイダーに認証を委任します。Client applications, such as web applications, delegate authentication to a trusted identity provider.

Bot は、信頼できる id プロバイダーを使用して次のことを行うことができます。A bot can use a trusted identity provider to:

  • シングルサインオン (SSO) 機能を有効にして、セキュリティで保護された複数のリソースにアクセスできるようにします。Enable single sign-on (SSO) features, allowing it to access multiple secured resources.
  • ユーザーの代わりにクラウドコンピューティングリソースに接続して、ユーザーの再認証を減らすことができます。Connect to cloud computing resources on behalf of a user, decreasing the need for users to re-authenticate.

注意

Bot 認証 中に発行されたトークンは、ユーザー認証 中に発行されたトークンと同じではありません。The token issued during Bot authentication is not the same token issued during User authentication. 1つ目は、ボット、チャネル、および最終的にクライアントアプリケーション間のセキュリティで保護された通信を確立するために使用されます。The first is used to establish secure communication between a bot, channels and, ultimately, client applications. 2つ目は、ユーザーに代わってセキュリティで保護されたリソースにアクセスするボットを承認するために使用されます。The second is used to authorize the bot to access secured resource on behalf of the user.

チャネルでは、ユーザーがチャネルにサインインできるように、独自の個別のユーザー認証が提供されていることに注意してください。Notice that channels provide their own, separate user authentication to let a user sign in to the channel.

Bot が id プロバイダーを使用してユーザーの代わりにリソースにアクセスする方法の詳細については、「 id プロバイダー 」を参照してください。See Identity providers for more about how bots can use identity providers to access resources on behalf of a user.