Aspire を用いて Azure のリソースを作成したデモアプリを作成している際に Azure の認証がうまくいかないケースが発生したため共有します。
現象
ローカルで AzureCLI などで認証をしているのに意図したテナント ID ではなく「f8cdef31-a31e-4b4a-93e4-5f571e91255a」が使用される。
原因
Aspire から Azure リソースを利用する際の認証方法としてデフォルトでDefaultAzureCredential
が使用されるようになっていました。
また今回使用された「f8cdef31-a31e-4b4a-93e4-5f571e91255a」について Microsoft 公式の FAQ 上でファーストパーティーアプリのテナント ID だと記載されています。
アプリ ガバナンスは、OAuth を使用して Microsoft Entra ID と Google と Salesforce の認証を行う Microsoft 以外のアプリを追跡します。 Microsoft Entra ID に対する認証を行うアプリの場合、アプリ ガバナンスは、ホーム テナントが Microsoft が所有する "ファースト パーティ アプリ" テナントである Microsoft アプリを識別および除外します (テナント ID: f8cdef31-a31e-4b4a-93e4-5f571e91255a)。
修正方法
appsetting.json
内に下記を設定する。
{
"Azure": {
"CredentialSource": "AzureCli"
}
}
このようにすることで AzureCLI の認証情報が使用されるようになります。
他の認証を指定することも可能で設定値はそれぞれ下記です。
設定値 | 説明 |
---|---|
AzureCli | Azure CLI の認証を利用 |
AzurePowerShell | PowerShell の認証を利用 |
VisualStudio | Visual Studio の認証を利用 |
AzureDeveloperCli | Azure Developer CLI を使用して Microsoft Entra ID の認証を利用 |
InteractiveBrowser | ブラウザから必要情報を入力して認証 |
おわりに
かなり詰まりました。
また調査時は理解できずスルーしていたのですが、あとから見直すと別の方が同じ問題に対応する記事を作成していらっしゃいました。
この記事が皆様のコーディングライフの助けになれば幸いです。
参考