使用变量通过Azure CLI获取TOKEN

gstyhher  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(121)

我目前正在尝试通过Github工作流bash步骤获取一个令牌,用于向Azure API进行身份验证。这两个变量的值来自Azure Keyvault,这就是为什么我需要以变量的形式传递它们。
我使用的命令如下:

- run: |

TOKEN=$(curl -X POST \
            -d 'grant_type=client_credentials&client_id=${user}&client_secret=${password}&resource=https%3A%2F%2Fmanagement.azure.com%2F' \
            https://login.microsoftonline.com/${tenant_id}/oauth2/token | jq -r '.access_token')

TOKEN的值始终为空。
如果我尝试相同的命令,但使用值而不是变量${user}和${password},则会创建令牌。

TOKEN=$(curl -X POST \
            -d 'grant_type=client_credentials&client_id=**MYUSER**&client_secret=**MYPASSWORD**&resource=https%3A%2F%2Fmanagement.azure.com%2F' \
            https://login.microsoftonline.com/${tenant_id}/oauth2/token | jq -r '.access_token')

有趣的是,只有两个变量${user}和${password}未被选取,{tenant_id}的变量正常工作。
为什么我不能使用授权类型=客户端凭据&客户端ID=${用户}&客户端密码=${密码}&资源=https%3A%2F%2Fmanagement.azure.com%2F'中的变量
这在Azure Devops管道中有效,但在Github工作流中无效

krcsximq

krcsximq1#

使用双引号而不是单引号,否则不会发生变量替换"grant_type=client_credentials&client_id=${user}&client_secret=${password}&resource=https%3A%2F%2Fmanagement.azure.com%2F"

相关问题