Shell脚本中curl读取输入异常:Azure Key Vault密钥获取报400错误
解决Azure Key Vault curl请求400错误(Token截断问题)
问题原因
第二条curl命令中,$ACCESS_TOKEN未被正确引用,当token包含空格或特殊字符时,Shell会将其拆分为多个命令参数,导致Authorization请求头被截断,后续参数混乱,触发400 Bad Request错误。
修正后的命令
ACCESS_TOKEN=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true | jq -r .access_token) CONFIG_SECRET=$(curl 'https://sFlowDeploymentKeys.vault.azure.net/secrets/config?api-version=2016-10-01' -H "Authorization: Bearer '$ACCESS_TOKEN'" --http1.1)
原理说明
通过将$ACCESS_TOKEN用单引号包裹在Authorization头的双引号内,确保Shell将整个token作为一个完整的参数传递,避免因特殊字符或空格导致的参数拆分,保证请求头格式符合Azure Key Vault的要求。
验证方法
执行以下命令确认修正后的请求格式是否正确:
echo curl 'https://sFlowDeploymentKeys.vault.azure.net/secrets/config?api-version=2016-10-01' -H "Authorization: Bearer '$ACCESS_TOKEN'" --http1.1
检查输出中token是否完整包含在Authorization头里,未出现拆分到--http1.1前后的情况。
内容的提问来源于stack exchange,提问作者user13436991
相关产品推荐
相关产品推荐

