次の方法で共有

AzureCLIでEntraIDのエンタープライズアプリケーションのSAML設定がうまくいかない

森田 大介 0 評価のポイント
2025-02-08T13:11:45.1+00:00

エンタープライズアプリケーションのSAMLの設定をAzureCLIで自動化したいと考えています。
そのためにまず既存のエンタープライズアプリケーションに対して、AzurePortalにて手動でSAMLの設定を行い、正しく認証ができることを確認したうえで、そのエンドポイント(下記2点)の値の変化を観察しました。

az rest --method GET --url "https://graph.microsoft.com/v1.0/applications/$applicationId"
az rest --method GET --uri "https://graph.microsoft.com/v1.0/servicePrincipals/$objectID"

変化点を記録し、新しく別のエンタープライズアプリケーションを作成して、同じ個所をAzureCLIのRESTでPatchで変更してみました。
しかし、テストしてみると認証はできません。漏れなく変更したにも関わらずです。

この状態でAzurePortalにログインし、「シングル サインオンモードの変更」でSAMLの設定をいったん無効化したあと、もう一度有効化し、識別子 (エンティティ ID)、応答URLに元と同じ値をいれると、AzurePortal上のテストで正しく認証できるようになります。

おそらく上記のエンドポイント以外にも変更すべき点があると思うのですが、どのエンドポイントを変更すべきでしょうか?
もしくはAzureCLIのみでSAMLの設定を変更することは仕様上不可なのでしょうか?

なお設定変更のスクリプト例は以下のとおりです。

#制限解除
az rest --method PATCH --url "https://graph.microsoft.com/v1.0/applications/$applicationId" `
--headers "{'Content-Type':'application/json'}" `
--body "{'servicePrincipalLockConfiguration': {'isEnabled': false,'allProperties': false}}"

# エンタープライズアプリケーションのオブジェクトIDを取得
$objectID  = az ad sp list --display-name $enterpriseApplicationDisplayName --query "[0].id" --output tsv
Write-Host $objectID 

# 認証方式をsamlに設定
az rest --method PATCH `
--uri "https://graph.microsoft.com/v1.0/servicePrincipals/$objectID" `
--headers "{'Content-Type':'application/json'}" `
--body "{preferredSingleSignOnMode:'saml'}"

# 識別子(エンティティID)identifierUris
az rest --method PATCH `
--uri "https://graph.microsoft.com/v1.0/applications/$applicationId/" `
--headers "{'Content-Type':'application/json'}" `
--body "{'identifierUris':['$Url']}"
# :
#以下、他のポイントについてもPATCHで変更
Azure
Azure

Microsoft が管理する世界のデータ センター ネットワークを介してアプリケーションとサービスを構築、配置、および管理するインフラストラクチャおよびクラウド コンピューティング プラットフォーム。


お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "おすすめ" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。