IR-Brain Azure認証構成メモ

対象: IR-Brain / Azure認証・機密情報管理・OpenAI接続 / 更新メモ用途

1. 全体概要

IR-Brain は Microsoft Entra ID でユーザー認証し、アプリから Managed Identity で Key Vault と Azure OpenAI に接続する構成を採用している。秘密情報は Key Vault で一元管理し、アプリコードに固定値を持たせない。

User
  ↓
Microsoft Entra ID Login
  ↓
Blazor Server (App Service)
  ↓
Managed Identity
  ↓
Key Vault
  ↓
Azure OpenAI

2. 今回採用した認証方式

必須設定

  • AZUREAD_CLIENT_ID
  • AZUREAD_CLIENT_SECRET

任意設定

  • AZUREAD_TENANT_ID
  • Instance: https://login.microsoftonline.com/

3. App Registration 設定内容

項目 設定値
アプリ名 ir-brain
Supported account types 任意の Entra ID テナント + 個人 Microsoft アカウント
Platform type Web
Redirect URI (本番) https://ir-brain-hkgxf7engvcbdcah.eastasia-01.azurewebsites.net/signin-oidc
Redirect URI (ローカル) https://localhost:5001/signin-oidc

注意点

4. Key Vault の役割

5. 現在登録している Secret

Secret 名 用途
AZUREAD-CLIENT-ID Microsoft ログインの Client ID
AZUREAD-CLIENT-SECRET Microsoft ログインの Client Secret
AZURE-OPENAI-API-KEY Azure OpenAI APIキー

補足: Key Vault の Secret 名の -- は .NET 設定で : に変換される。

Stripe--SecretKey  =>  Stripe:SecretKey

6. Managed Identity 設定

対象 ロール 用途
Key Vault Key Vault Secrets User Secret 読み取り
Azure OpenAI Cognitive Services OpenAI User OpenAI 推論利用

7. Azure OpenAI の設定

例: gpt-4o-mini

8. App Service 側の構成

9. よくあるハマりポイント

症状・ミス 確認ポイント
redirect_uri 不一致App Registration の URI と実アクセス URL を完全一致させる
/signin-oidc 付け忘れOIDC の callback path を URL 末尾に含める
App Registration と実アクセスURLの不一致本番 URL / ローカル URL を個別登録する
Key Vault の権限不足Managed Identity に Key Vault Secrets User があるか確認
RBAC反映待ちロール付与後は数分待って再試行する
SQLite の保存先が不正HOME/data 配下に置く
OpenAI で deployment name 未使用実デプロイ名(例: gpt-4o-mini)を指定する
App Service に Publish していないローカル実行と Azure 実行を混同しない
Static Web Apps と App Service を混同本プロジェクトは App Service 前提の設定で統一する
500.30Program.cs / DI / DB / 認証初期化の例外ログを確認する

10. 今後追加予定の Secret

Secret 名 用途メモ
Stripe--SecretKeyStripe 秘密鍵
Stripe--WebhookSecretWebhook 検証用シークレット
RESEND-API-KEYメール送信 APIキー
ADMIN-PASSWORD管理者用パスワード
ConnectionStrings--Default.NET 接続文字列 (ConnectionStrings:Default)
ADMIN-EMAIL管理者通知先メールアドレス

11. 確認手順

ローカル確認

  • App Registration に https://localhost:5001/signin-oidc を追加
  • Microsoft ログインを実行して callback 成否を確認
  • Azure CLI ログイン / Visual Studio 認証状態を確認

Azure 確認

  • App Service に Publish
  • Entra ID ログイン確認
  • Key Vault Secret 読み取り確認
  • Azure OpenAI 接続確認
  • App Service Log Stream 確認

12. サンプルコード

Program.cs の考え方

var clientId = builder.Configuration["AZUREAD-CLIENT-ID"];
var clientSecret = builder.Configuration["AZUREAD-CLIENT-SECRET"];
var tenantId = builder.Configuration["AZUREAD_TENANT_ID"] ?? "common";

メモ: 実装では null/空文字チェックと起動時ログ出力を加えると障害切り分けが早い。