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())