我有一个场景,我的管道应该使用额外的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: []
如图所示尝试:但得到相同的错误:
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
我还想将其自动化作为 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