如何使用 Azure CLI (az ad app) 创建范围
How to create scope using Azure CLI (az ad app)
使用 Azure CLI 2.x,我找不到在 Azure AD 门户中公开 API 部分下“添加范围”的方法。
我看到的是,如果我在创建应用程序时传递 --identifier-uris,应用程序 ID URI 和范围会自动设置:
`az ad app create --display-name "$appName" --identifier-uris "https://$tenantDomain/$appName" --reply-urls "$replyUrl" --oauth2-allow-implicit-flow true`
不是我所期望的,也不是我想要的
因此,我从创建命令中删除了 --identifier-urls 并手动添加了我想要的范围。然后我通过清单看到我在 OAuth2Permissions 下寻找的内容,如下所示。我可以用新的 guid 将其放入 manifest.json 并以某种方式插入吗?
什么CLI命令支持显式支持定义一个Scope?
然后添加一个客户端应用程序,我需要 select 定义的范围,这是如何引用的?
文档非常稀疏,IMO。这个参考非常有用,但这里没有任何内容谈论添加范围和客户端。 https://docs.microsoft.com/en-us/cli/azure/ad?view=azure-cli-latest。非常感谢对示例或文档的任何帮助。
来自这篇文章Azure CLI: Create an Azure AD application for an API that exposes OAuth2 Permissions
您可以使用az ad app update
命令(see documentation)
然后您可以使用可选参数 –set
设置应用程序的 属性
创建一个包含权限的oauth2-permissions.json
:
[
{
"adminConsentDescription": "Access CP Debug Desc",
"adminConsentDisplayName": "Access CP Debug",
"id": "85b8f1a0-0733-47dd-9af4-cb7221dbcb73",
"isEnabled": true,
"type": "Admin",
"userConsentDescription": null,
"userConsentDisplayName": null,
"value": "Access"
}
]
运行 这个脚本,它将创建应用程序,禁用现有范围并添加新范围:
# Create the app registration
APP_REG=$(az ad app create --display-name myapi --identifier-uris https://myapi)
# Get the app id
APP_ID=$(echo $APP_REG | jq -r '.appId')
# disable default exposed scope
DEFAULT_SCOPE=$(az ad app show --id $APP_ID | jq '.oauth2Permissions[0].isEnabled = false' | jq -r '.oauth2Permissions')
az ad app update --id $APP_ID --set oauth2Permissions="$DEFAULT_SCOPE"
# Create new scopes from file 'oath2-permissions'
az ad app update --id $APP_ID --set oauth2Permissions=@oauth2-permissions.json
在上述线程的帮助下,以及大量试错和 pretty useful link,我能够使用 windows 环境编写 CLI 脚本来添加范围。 PowerShell 对 windows 上的 'jq' 不满意,必须删除反引号的使用才能使事情正常进行。现在我需要解决使用 CLI 添加 preAuthorizedApplication 的问题。
$userAccessScopeApi = '{
"lang": null,
"origin": "Application",
"adminConsentDescription": "Access CP Debug desc",
"adminConsentDisplayName": "Access CP Debug",
"id": "--- replaced in scripts ---",
"isEnabled": true,
"type": "Admin",
"userConsentDescription": null,
"userConsentDisplayName": null,
"value": "Access"
}' | ConvertTo-Json | ConvertFrom-Json
`
Write-Host " - 1 read oauth2permissions"
#(az ad app show --id $appid)
$appjson = (az ad app list --display-name $appName)
$app = $appjson | ConvertFrom-Json
$oauth2Permissions = $app.oauth2Permissions
$oauth2Permissions[0].isEnabled = 'false'
$oauth2Permissionsjson = ConvertTo-Json -InputObject @($oauth2Permissions)
Write-Host " - 2 disable oauth2Permission in Azure App Registration"
$oauth2Permissionsjson | Out-File -FilePath .\oauth2Permissionsold.json
az ad app update --id $appId --set oauth2Permissions=@oauth2Permissionsold.json
Write-Host " - 3 delete the default oauth2Permission"
az ad app update --id $appId --set oauth2Permissions='[]'
Write-Host " - 4 add the new scope required add the new oauth2Permissions values"
$oauth2PermissionsApiNew = $userAccessScopeApi | ConvertFrom-Json
$oauth2PermissionsApiNew[0].id = New-Guid
$oauth2PermissionsApiNew = ConvertTo-Json -InputObject @($oauth2PermissionsApiNew)
# Write-Host "new oauth2permissions : " + $oauth2PermissionsApiNew"
$oauth2PermissionsApiNew | Out-File -FilePath .\oauth2Permissionsnew.json
az ad app update --id $appId --set oauth2Permissions=@oauth2Permissionsnew.json
Write-Host " - Updated scopes (oauth2Permissions) for App Registration: $appId"`
使用 Azure CLI 2.x,我找不到在 Azure AD 门户中公开 API 部分下“添加范围”的方法。
我看到的是,如果我在创建应用程序时传递 --identifier-uris,应用程序 ID URI 和范围会自动设置:
`az ad app create --display-name "$appName" --identifier-uris "https://$tenantDomain/$appName" --reply-urls "$replyUrl" --oauth2-allow-implicit-flow true`
不是我所期望的,也不是我想要的
因此,我从创建命令中删除了 --identifier-urls 并手动添加了我想要的范围。然后我通过清单看到我在 OAuth2Permissions 下寻找的内容,如下所示。我可以用新的 guid 将其放入 manifest.json 并以某种方式插入吗?
什么CLI命令支持显式支持定义一个Scope? 然后添加一个客户端应用程序,我需要 select 定义的范围,这是如何引用的?
文档非常稀疏,IMO。这个参考非常有用,但这里没有任何内容谈论添加范围和客户端。 https://docs.microsoft.com/en-us/cli/azure/ad?view=azure-cli-latest。非常感谢对示例或文档的任何帮助。
来自这篇文章Azure CLI: Create an Azure AD application for an API that exposes OAuth2 Permissions
您可以使用az ad app update
命令(see documentation)
然后您可以使用可选参数 –set
创建一个包含权限的
oauth2-permissions.json
:[ { "adminConsentDescription": "Access CP Debug Desc", "adminConsentDisplayName": "Access CP Debug", "id": "85b8f1a0-0733-47dd-9af4-cb7221dbcb73", "isEnabled": true, "type": "Admin", "userConsentDescription": null, "userConsentDisplayName": null, "value": "Access" } ]
运行 这个脚本,它将创建应用程序,禁用现有范围并添加新范围:
# Create the app registration APP_REG=$(az ad app create --display-name myapi --identifier-uris https://myapi) # Get the app id APP_ID=$(echo $APP_REG | jq -r '.appId') # disable default exposed scope DEFAULT_SCOPE=$(az ad app show --id $APP_ID | jq '.oauth2Permissions[0].isEnabled = false' | jq -r '.oauth2Permissions') az ad app update --id $APP_ID --set oauth2Permissions="$DEFAULT_SCOPE" # Create new scopes from file 'oath2-permissions' az ad app update --id $APP_ID --set oauth2Permissions=@oauth2-permissions.json
在上述线程的帮助下,以及大量试错和 pretty useful link,我能够使用 windows 环境编写 CLI 脚本来添加范围。 PowerShell 对 windows 上的 'jq' 不满意,必须删除反引号的使用才能使事情正常进行。现在我需要解决使用 CLI 添加 preAuthorizedApplication 的问题。
$userAccessScopeApi = '{
"lang": null,
"origin": "Application",
"adminConsentDescription": "Access CP Debug desc",
"adminConsentDisplayName": "Access CP Debug",
"id": "--- replaced in scripts ---",
"isEnabled": true,
"type": "Admin",
"userConsentDescription": null,
"userConsentDisplayName": null,
"value": "Access"
}' | ConvertTo-Json | ConvertFrom-Json
`
Write-Host " - 1 read oauth2permissions"
#(az ad app show --id $appid)
$appjson = (az ad app list --display-name $appName)
$app = $appjson | ConvertFrom-Json
$oauth2Permissions = $app.oauth2Permissions
$oauth2Permissions[0].isEnabled = 'false'
$oauth2Permissionsjson = ConvertTo-Json -InputObject @($oauth2Permissions)
Write-Host " - 2 disable oauth2Permission in Azure App Registration"
$oauth2Permissionsjson | Out-File -FilePath .\oauth2Permissionsold.json
az ad app update --id $appId --set oauth2Permissions=@oauth2Permissionsold.json
Write-Host " - 3 delete the default oauth2Permission"
az ad app update --id $appId --set oauth2Permissions='[]'
Write-Host " - 4 add the new scope required add the new oauth2Permissions values"
$oauth2PermissionsApiNew = $userAccessScopeApi | ConvertFrom-Json
$oauth2PermissionsApiNew[0].id = New-Guid
$oauth2PermissionsApiNew = ConvertTo-Json -InputObject @($oauth2PermissionsApiNew)
# Write-Host "new oauth2permissions : " + $oauth2PermissionsApiNew"
$oauth2PermissionsApiNew | Out-File -FilePath .\oauth2Permissionsnew.json
az ad app update --id $appId --set oauth2Permissions=@oauth2Permissionsnew.json
Write-Host " - Updated scopes (oauth2Permissions) for App Registration: $appId"`