Azure 如何调用api设置密钥Vault密钥的过期日期
我正在调用keyvault API来设置新的机密,实际上它工作得很好,这意味着机密显示正确,除非过期日期不在那里Azure 如何调用api设置密钥Vault密钥的过期日期,azure,powershell,azure-keyvault,Azure,Powershell,Azure Keyvault,我正在调用keyvault API来设置新的机密,实际上它工作得很好,这意味着机密显示正确,除非过期日期不在那里 $expiryDate = ((Get-Date).AddMonths(3)).ToFileTimeUtc() $body = @{ "value" = $KeyValue "contentType" = $KeyType "exp" = $expiryDate } |
$expiryDate = ((Get-Date).AddMonths(3)).ToFileTimeUtc()
$body = @{
"value" = $KeyValue
"contentType" = $KeyType
"exp" = $expiryDate
} | ConvertTo-Json
$params = @{
"Uri" = "https://$($KeyVaultName).vault.azure.net/secrets/$($KeyName)?api-version=7.0"
"Method" = "Put"
"Headers" = @{
'Authorization' = $Authorization
"Accept" = "application/json"
"Content-Type" = "application/json"
}
"Body" = $body
}
从中我唯一能想到的是它需要一个整数,而我不确定Get Date是否返回一个整数
在当前的解决方案中,我尝试使用ToFileTimeUtc将其转换为整数
在那之前,我只是尝试了到通用时间,但两者都不起作用。
同样,密钥库上显示了该秘密,但似乎没有设置过期日期:
如前所述,我希望继续使用RESTAPI调用,而不是使用azAzure CLI。解决方案:
# UNIX Epoch is January 1st, 1970 at 12:00 AM
$unixEpoch = Get-Date -Date "01/01/1970"
$expiryDate = ((Get-Date).AddMonths(3)).ToUniversalTime()
$unixExpiryDate = (New-TimeSpan -Start $unixEpoch -End
$expiryDate).TotalSeconds
$attributes = @{
"exp" = $unixExpiryDate
}
$body = @{
"value" = $KeyValue
"contentType" = $KeyType
"attributes" = $attributes
} | ConvertTo-Json
解决方案包含两个部分:
看起来你需要@MathiasR.Jessen首先感谢你的评论!我试图在powershell脚本中直接传递1620821776作为一个值,它应该是指向2021年5月的时间(以秒为单位)(这就是我试图通过脚本实现的目标)。但是没有任何东西…@MathiasR.Jessen解决方案在我的嵌套json中是错误的,但是如果没有您的评论,我无论如何也不会这样做:)非常感谢!那太好了,不客气!用答案发布答案:-)