次の方法で共有


JavaScript エージェントで認証を構成する

JavaScript SDK では、ターゲット チャネルにアクティビティを送信するために JWT トークンを取得するために AuthenticationProvider が必要です。 詳細情報

パッケージ @microsoft/agents-hosting は、MSAL に基づく既定の認証プロバイダーを提供します。このプロバイダーは、次の種類の資格情報に対して構成できます。

  • SingleTenant/MultiTenant
  • クライアント シークレット
  • クライアント証明書
  • ユーザー割り当てのマネージドアイデンティティ
  • フェデレーション ID 資格情報

MultiTenant では、Azure Bot インスタンスをマルチテナントとして構成し、EntraID アプリの登録を 任意の組織ディレクトリ (Microsoft Entra ID テナント - マルチテナント) のアカウントとして構成する必要があり、 クライアント シークレット または クライアント証明書のみをサポートします。 詳細については、単一アプリとマルチテナント アプリに関するページを参照してください。

各認証の種類の環境変数

この構成は、実行時に、ヘルパー関数 loadAuthConfigFromEnv(): AuthConfigurationを使用して環境変数から取得されます。 CloudAdapter インスタンスは、AuthConfigurationで初期化する必要があります。

指定された変数に基づいて、認証の種類は次のように推論されます。

クライアント シークレットを持つシングル テナント

tenantId={tenant-id-guid}
clientId={app-id-guid}
clientSecret={app-registration-secret}

これは、ローカル開発に推奨される構成です。

クライアント証明書を使用したシングル テナント

tenantId={tenant-id-guid}
clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

キー ファイルではパスワードを使用しないでください。

ユーザー割り当てマネージド ID を持つシングル テナント

tenantId={tenant-id-guid}
clientId={app-id-guid}

これは、運用環境のシナリオで推奨される構成です。 詳細については、 Azure リソースのマネージド ID に関するページを参照してください。

エージェントは、マネージド ID をサポートするすべての Azure サービスで実行する必要があります。 マネージド ID をサポートする Azure サービスを確認するには、 Azure リソースのマネージド ID に関するページを参照してください。 マネージド ID は、EntraID で構成されたものと一致する必要があります。 詳細については、「 マネージド ID を構成する方法」を参照してください。

フェデレーション ID 資格情報を持つシングル テナント

tenantId={tenant-id-guid}
clientId={app-id-guid}
FICClientId={client-id-of-the-FIC}

詳細については、「 フェデレーション ID 資格情報を使用した認証」を参照してください。

ClientSecret を使用したマルチ テナント

clientId={app-id-guid}
clientSecret={app-registration-secret}

クライアント証明書を使用したマルチ テナント

clientId={app-id-guid}
certPemFile={path-to-pem-file}
certKeyFile={path-to-key-file}

Azure Bot Framework SDK との互換性を戻す

Azure Bot Framework SDK と同じ形式を使用して構成を読み込むには、別のヘルパー関数 loadBotAuthConfigFromEnv(): AuthConfigurationを提供します。

MicrosoftAppTenantId={tenant-id-guid}
MicrosoftAppId={app-id-guid}
MicrosoftAppPassword={app-registration-secret}

カスタム認証プロバイダー

カスタマイズされた認証プロバイダーを必要とするユーザーは、インターフェイスを実装できます。

export interface AuthProvider {
  getAccessToken: (authConfig: AuthConfiguration, scope: string) => Promise<string>
}

例として、AuthProviderを使用して@azure/identityを実装してみましょう。

import { EnvironmentCredential } from "@azure/identity"
import { AuthProvider, AuthConfiguration } from "@microsoft/agents-bot-hosting"
class DevTokenProvider implements AuthProvider {
  async getAccessToken(authConfig: AuthConfiguration): Promise<string> {
    const id = new EnvironmentCredential()
    const tokenResponse = await id.getToken("https://api.botframework.com/.default")
    return tokenResponse.token
  }

を使用して CloudAdapter をインスタンス化するには DevTokenProvider

const adapter = new CloudAdapter(authConfig, new DevTokenProvider())