アプリ認証に証明書または MSI を使用する
- [アーティクル]
-
-
証明書または MSI ベースの認証を使用して、ボット ID とシークレットの代わりにボット アプリを検証できます。 この認証により、Microsoft Entra IDとボット シークレットの使用に関連するコンプライアンス上の問題が解決されます。
前提条件
次のリソースを使用して、Teams ボット アプリが Azure にデプロイされていることを確認します。
- Azure ボット。
- ボット認証に使用されるシークレットを含む Entra ID。
- Azure App Service、Azure Functionsなど、ボット アプリをホストするリソース。
証明書ベースの認証を使用するようにボット アプリを更新するには:
-
Azure AD で証明書を作成してアップロードする
-
ボット アプリ コードを更新する
-
ボット シークレットを削除する
Azure AD で証明書を作成してアップロードする
ボット認証に証明書を使用するには:
証明書と秘密キーを準備します。
Azure ポータルに移動します。
[アプリの登録] を選択します。
登録済みのアプリを選択します。
左側のウィンドウの [ 管理] で、[ 証明書 & シークレット] を選択します。
[ 証明書] で、[ 証明書のアップロード] を選択します。
[ 証明書のアップロード] ウィンドウが表示されます。
注:
.cer、.pem、.crt のいずれかの種類の証明書 (公開キー) をアップロードします。
準備した証明書をアップロードします。
「説明」と入力します。
[追加] を選択します。
ボット アプリ コードを更新する
次の手順に従って、ボット アプリ コードを更新します。
Visual Studio または Visual Studio Code でボット アプリ プロジェクトを開きます。
コードを更新します。
const credentialsFactory = new ConfigurationServiceClientCredentialFactory({
MicrosoftAppId: config.botId,
CertificatePrivateKey: '{your private key}',
CertificateThumbprint: '{your cert thumbprint}',
MicrosoftAppType: "MultiTenant",
});
const botFrameworkAuthentication = new ConfigurationBotFrameworkAuthentication(
{},
credentialsFactory
);
const adapter = new CloudAdapter(botFrameworkAuthentication);
builder.Services.AddSingleton<ServiceClientCredentialsFactory>((e) => new CertificateServiceClientCredentialsFactory("{your certificate}", "{your entra id}"));
ボットをテストして、操作が更新された認証と一致することを確認してください。
ボット シークレットを削除する
ボット シークレットを削除する前に、ボット アプリで認証に証明書が使用されていることを確認します。
ボット シークレットを削除するには:
Azure ポータルに移動します。
[アプリの登録] を選択します。
登録済みのアプリを選択します。
左側のウィンドウの [ 管理] で、[ 証明書 & シークレット] を選択します。
Entra からシークレットを削除します。
これで、ボット アプリで認証に証明書が使用されるようになりました。
MSI ベースの認証を使用するようにボット アプリを更新するには:
-
Azure AD で MSI 型のボット サービスを作成する
-
MSI 用のボット アプリ コードを更新する
-
ボット シークレットを削除する
注:
Azure Bot サービス ID と型は、作成後に変更できません。
Azure AD で MSI 型のボット サービスを作成する
MSI の種類を使用して新しい Azure Bot サービスを作成するには、次の手順に従います。
Azure ポータルに移動します。
[ホーム] に移動します。
[ + リソースの作成] を選択します。
検索ボックスに「 Azure Bot」と入力します。
Enter キーを 選択 します。
[ Azure Bot] を選択します。
[作成] を選択します。
ボット ハンドルにボット名を入力します。
ドロップダウン リストから [サブスクリプション] を選択します。
ドロップダウン リストから [リソース グループ] を選択します。
既存のリソース グループがない場合は、新しいリソース グループを作成できます。 新しい Azure ボット サービスとマネージド ID を作成するには、次の手順に従います。
- [ 新規作成] を選択します。
- リソース名を入力し、[ OK] を選択します。
- [ 新しいリソース グループの場所 ] ドロップダウン リストから場所を選択します。
[Microsoft アプリ ID] で、[ユーザー割り当てマネージド ID としてアプリの種類] を選択します。
[ 作成の種類] で、[ 新しい Microsoft アプリ ID の作成] を選択します。
または
最初にマネージド ID を手動で作成してから、既存のアプリ登録を使用して Azure Bot を作成できます。
新しい Azure Bot メッセージング エンドポイントとチャネルを、古いサービスのものと一致するように更新します。
リソースをホストしているアプリに移動します。
[ 設定] > [ID] > [ユーザー割り当て] を選択します。
作成したマネージド ID を追加します。
MSI 用のボット アプリ コードを更新する
MSI のボット アプリ コードを更新するには、次の手順に従います。
Visual Studio または Visual Studio Code でボット アプリ プロジェクトを開きます。
コードを更新します。
const credentialsFactory = new ConfigurationServiceClientCredentialFactory({
MicrosoftAppType: 'UserAssignedMsi',
MicrosoftAppId: '{your MSI’s client ID}',
MicrosoftAppTenantId: '{your MSI’s tenant ID}',
});
const botFrameworkAuthentication = new ConfigurationBotFrameworkAuthentication(
{},
credentialsFactory
);
const adapter = new CloudAdapter(botFrameworkAuthentication);
builder.Configuration["MicrosoftAppType"] = "UserAssignedMsi";
builder.Configuration["MicrosoftAppId"] = "{your MSI’s client ID}";
builder.Configuration["MicrosoftAppPassword"] = "{your MSI’s tenant ID}";
builder.Services.AddSingleton<BotFrameworkAuthentication, ConfigurationBotFrameworkAuthentication>();
.env
ファイルのBOT_ID
を更新します。
ボットをテストして、その操作が更新された認証と一致していることを確認してください。
ボット シークレットを削除する
ボット シークレットを削除する前に、ボット アプリで認証に証明書が使用されていることを確認します。
ボット シークレットを削除するには:
Azure ポータルに移動します。
[アプリの登録] を選択します。
登録済みのアプリを選択します。
左側のウィンドウの [ 管理] で、[ 証明書 & シークレット] を選択します。
Entra からシークレットを削除します。
ボット アプリで認証に MSI が使用されるようになりました。
関連項目