0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Azure Bot Service】Operation returned an invalid status code 'Unauthorized'

Last updated at Posted at 2025-03-28

はじめに

起きていたエラー:

Operation returned an invalid status code 'Unauthorized'

Azure Bot Service で Web Chat や Direct Line といった Bot Framework の標準チャンネルを利用したい場合、Azure AD アプリ登録をマルチテナントにする必要があるかもしれません。

この記事では、その理由と、実際に マルチテナント構成でBotリソースを作成・再構築する手順を解説します。

シングルテナントでは標準チャンネルが使えない?

Azure AD アプリ登録を「シングルテナント」にしてしまうと、BotFrameworkの Web Chat / Direct Line などの標準チャンネルでは認証連携ができなくなります
このため、Bot Service 側で正常な通信ができず、401エラーが出たり、Web Chatが使えないなどの問題が起きます。

解決策は?

  • マルチテナント(Multi-tenant)アプリとして再登録
  • Bot リソースとの紐付けを再設定
  • 必要に応じて、Botアプリ側の設定やデプロイ環境を更新

手順:マルチテナント構成でBotを再構築する

以下の手順に従えば、Bot Framework の標準チャンネルを活用できる構成を、一から作り直すことができます。

1. Azure AD アプリを新規作成(マルチテナント)

  1. Azure Portal → Azure Active DirectoryApp registrations → [New registration]
  2. Name: chatbot-qiita(任意の名前)
  3. Supported account types:
    Accounts in any organizational directory and personal Microsoft accounts を選択(マルチテナント)
  4. Redirect URI: 空でもOK(後で不要)
  5. [Register] をクリック

Client Secret を作成

  • [Certificates & secrets] タブ → [New client secret]
  • Description: bot-secret(任意)
  • Expires: 任意期間(24か月など)
  • 作成後、Value をメモ(これが MicrosoftAppPassword

確認しておく値

項目 説明
App (client) ID MicrosoftAppId に相当
Client Secret MicrosoftAppPassword
signInAudience AzureADandPersonalMicrosoftAccount であることを確認

2. Bot リソースを新規作成

  1. Azure Portal → [Create a resource] → Bot Channels Registration または Azure Bot
  2. Bot Handle: chatbot-qiita(任意)
  3. Subscription / Resource Group / Location を指定
  4. 「既存の App ID / Password を使用する」を選択
    • 作成した MicrosoftAppId / MicrosoftAppPassword を入力
  5. [Create] で作成

作成後の確認

  • OverviewやSettingsタブで App ID が正しいか確認
  • Channels タブで Web Chat / Direct Line / Teams などを有効化

3. Bot アプリケーション側の設定を更新

  1. .envや環境変数に以下を設定:

    MicrosoftAppId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
    MicrosoftAppPassword=xxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
  2. Azure Web App などにデプロイしている場合:

    • Azure ポータルの App Service → Configuration → Application settings から設定

4. Web Chat でテスト

  1. Azure Portal → Bot リソース → [Test in Web Chat]
  2. Botと通信できるかテスト
    • 返信があればOK
    • エラー(401など)が出なければ成功

シングルテナントで使いたい場合は?

どうしてもシングルテナントで運用したい場合は、Bot Framework の標準チャンネルを使用しない構成にする必要があります。
たとえば:

  • 自作のチャットUI(React / Vue など)+ REST API通信でBotに接続
  • BotFramework SDKで /api/messages に直接リクエストを送る構成

おわりに

BotFramework の標準チャンネルを利用する場合、マルチテナントでのアプリ登録が前提になります。
既存リソースの設定変更が難しい場合でも、新しくリソースを作り直すことでスムーズに再構築できます。

「自社テナントのみに制限したい」場合も、マルチテナント + AADグループ制御などでカバー可能なので、要件に応じて最適な構成を選んでください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?