更新 Azure AD 应用程序注册的 Web 重定向 uri

问题描述 投票:0回答:2

我有一个场景,我的管道应该使用额外的redirectUrl 更新应用程序注册。 我已成功使用以下内容提取当前的 web.redirectUris:

 existing_urls=$(az ad app show --id '<client-id>' --query "[web.redirectUris]" --output tsv)

我想实现这样的目标

existing_urls=$(az ad app show --id '<client-id>' --query "[web.redirectUris]" --output tsv)
az ad app update --id '<client-id>' --web-redirect-uris "$existing_urls https://hostname.com/newCallback"

我尝试以两种方式更新 web.redirectUris,但当我传递多个重定向 URI 时,这两种方式都失败了。

尝试1

az ad app update --id '<client-id>' --web-redirect-uris "https://hostname.com/callbackx https://hostname.com/callbacky"

One or more properties contains invalid values.

但是,当只有一个 uri 时,效果很好

az ad app update --id '<client-id>' --web-redirect-uris "https://hostname.com/callbackx"

尝试2 无论传递的redirectUris 数量如何,此操作都会失败

az ad app update --id '<client-id>' --set "web.redirectUris=['https://hostname.com/callbackx', 'https://hostname.com/callbacky']"

Couldn't find 'web' in ''. Available options: []
azure-active-directory azure-cli azure-ad-graph-api
2个回答
1
投票

如图所示尝试:但得到相同的错误:

az ad app show --id 1e7bxxx7830

existing_urls=$(az ad app show --id 1e7b8fxxxx830 --query "[web.redirectUris]")

az ad app update --id 1e7xxx0a7830 --web-redirect-uris "$existing_urls https://hostname.com/newCallback"

$updated_urls="$existing_urls https://hostname.com/newCallback"

az ad app update --id 1e7b8xxx0a7830  --set "web.redirectUris='$updated_urls'"

az ad app update --id 1e7b8fxxxd0a7830  --set "web.redirectUris='$updated_urls'"

错误:

Couldn't find 'web' in ''. Available options: []

以下命令对我在 azure cli 中更新多个重定向 URL 的作用:

az ad app update --id '1e7bxxxa7830' --web-redirect-uris "https://hostname.com/callback"  "https://jwt.ms" "https://myexampleapp.com"

此处 --id 是

clientId
.

因此,将命令与所需的网址指定为 az 广告应用更新 --id '1e7bxxxa7830' --web-redirect-uris "

<url1>
" "
<url2>
" "
<url3>
"

az ad app show --id 1e7b8xxxx830


0
投票

我还想将其自动化作为 DevOps 管道的一部分,因此可以使用以下 bash 脚本来实现此操作:

#!/bin/bash
new_uri="<your_new_redirect_uri>" # or take from parameter with $1
client_id="<your_client_id>"

# Get string array of existing redirect URIs
existing_redirect_uris=$(az ad app show --id $client_id --query "[web.redirectUris]" --output tsv)
echo $existing_redirect_uris

# Check if the new URI is already in the list
if [[ $existing_redirect_uris == *$new_uri* ]]; then
    echo "The URI $new_uri is already in the list"
else
    echo "Adding the URI $new_uri to the list"
    az ad app update --id $client_id --web-redirect-uris $existing_redirect_uris $new_uri
fi

以及其他从列表中删除重定向 URI 的脚本:

#!/bin/bash
remove_uri="<remove_redirect_uri>" # or take from parameter with $1
client_id="<your_client_id>"

# Get list of existing redirect URIs and already remove selected with sed from that list
remaining_redirect_uris=$(az ad app show --id $client_id --query "[web.redirectUris]" --output tsv | sed "s|$remove_uri||g")
echo $remaining_redirect_uris
az ad app update --id $client_id --web-redirect-uris $remaining_redirect_uris
© www.soinside.com 2019 - 2024. All rights reserved.