2

使用 Azure CLI 2.x,我找不到在 Azure AD 门户中公开 API 部分下“添加范围”的方法。

在此处输入图像描述

我所看到的是,如果我在创建应用程序时传递 --identifier-uris,则 APP ID URI 和 Scope 会自动设置:

    `az ad app create --display-name "$appName" --identifier-uris "https://$tenantDomain/$appName" --reply-urls "$replyUrl" --oauth2-allow-implicit-flow true`

在此处输入图像描述

不是我期望的,也不是我想要的

因此,我从 create 命令中删除了 --identifier-urls 并手动添加了我想要的范围。然后我通过清单看到我在 OAuth2Permissions 下寻找的内容,如下所示。我可以用新的 guid 把它放在 manifest.json 中并以某种方式插入吗?

在此处输入图像描述

什么 CLI 命令支持明确支持定义范围?然后添加一个客户端应用程序我需要选择定义的范围,这是如何引用的?

文档非常稀少,IMO。这个参考非常有用,但这里没有谈论添加范围和客户端。https://docs.microsoft.com/en-us/cli/azure/ad?view=azure-cli-latest。非常感谢对样本或文档的任何帮助。

4

2 回答 2

5

来自这篇文章Azure CLI:为公开 OAuth2 权限的 API 创建 Azure AD 应用程序

您可以使用该az ad app update命令(请参阅文档

然后,您可以使用可选参数设置应用程序的属性–set

  1. 创建一个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"
      }
    ]
    
  2. 运行此脚本,它将创建应用程序,禁用现有范围并添加新范围:

    # 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
    
于 2020-06-30T21:49:31.850 回答
2

在上述线程的帮助下,以及大量的试验错误加上一个非常有用的链接,我能够制定 CLI 脚本以使用 Windows 环境添加范围。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"`
于 2020-07-01T21:00:35.793 回答