Azure CLI で Azure AD アプリケーションを作成して既定のスコープを削除する

Azure CLI でアプリ登録すると既定で user_impersonation っていうスコープが作成されるけど使わないので消したい。

# Azure にログイン
az login

# アプリの新規登録
$app = az ad app create --display-name "DeleteScopeApp"

# アプリケーションIDを取得
$appId = ($app | ConvertFrom-Json).appId

# スコープを取得
$oauth2Permissions = ($app | ConvertFrom-Json).oauth2Permissions

# 既定のスコープを無効に設定する(有効だと削除できないため)
$oauth2Permissions[0].isEnabled = $false

# 変更したオブジェクトを JSON 形式に変換する
$oauth2Permissions = ConvertTo-Json -InputObject @($oauth2Permissions)

# JSON をファイルに出力する
$oauth2Permissions | Out-File -FilePath .\oauth2Permissions.json

# 無効化を実行する
az ad app update --id $appId --set oauth2Permissions=`@oauth2Permissions.json

# 削除を実行する
az ad app update --id $appId --set oauth2Permissions="[]"

# 不要なファイルを削除する
Remove-Item -Path .\oauth2Permissions.json

何故かは良くわからないのだけど設定用の JSON はファイルに書き出さないとうまくいかなかった。公式には以下の記載があるが Windows だとうまくいかない?

###Remove api permissions: disable default exposed scope first
default_scope=$(az ad app show --id $clientid | jq '.oauth2Permissions[0].isEnabled = false' | jq -r '.oauth2Permissions')
az ad app update --id $clientid --set oauth2Permissions="$default_scope"
az ad app update --id $clientid --set oauth2Permissions="[]"

docs.microsoft.com

こちらのサイトを参考にしました。

damienbod.com

これに関しては Azure AD モジュールを使った方がよいのかも。

www.techwatching.dev