我有下面的代码来分别获取服务总线和队列的授权ID
$auth_Ids = (Get-AzServiceBusAuthorizationRule -ResourceGroupName $ResourceGroupName -NamespaceName $NamespaceName).Id
$auth_Id = ($auth_Ids[1] | Out-String)
运行上述命令为我提供服务总线 SAS 策略授权 ID
/subscriptions/XXX/resourcegroups/YYY/providers/Microsoft.ServiceBus/namespaces/YYY-asb/authorizationrules/SASPolicy
现在获取队列身份验证ID
$qauth_Id = (Get-AzServiceBusAuthorizationRule -ResourceGroupName $ResourceGroupName -NamespaceName $NamespaceName -QueueName $QueueName).Id
运行上述命令为我提供了 QUEUE SAS 策略授权 ID
/subscriptions/XXX/resourcegroups/YYY/providers/Microsoft.ServiceBus/namespaces/YYY-asb/queues/qname/authorizationrules/Policy
auth_ids 之间的唯一区别是
queues/qname/
现在,当我调用
New-AzServiceBusAuthorizationRuleSASToken
生成 SAS 令牌时,使用队列 auth_id 的调用可以正常工作。
这有效(队列中的 qauth_id)
$sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $qauth_Id -KeyType $PolicyName -ExpiryTime $endtime).SharedAccessSignature
这不是(来自服务总线的 auth_id)
$sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $auth_Id -KeyType $PolicyName -ExpiryTime $endtime).SharedAccessSignature
解析值时遇到意外字符:<. Path '', line | 0, position 0.
我不确定如何将 SAS 令牌获取到服务总线本身而不是队列/主题。 我是否必须在每个队列或主题上创建 SAS 策略才能获取 SAS 令牌,或者服务总线级别的 SAS 策略就足够了?
解析值时遇到意外字符:<. Path '', line | 0, position 0.
错误可能是您在
AuthorizationruleId
命令中传递了 New-AzServiceBusAuthorizationRuleSASToken
格式不正确。
首先,我使用以下命令尝试了 AuthorizationruleId:
$auth_Ids = (Get-AzServiceBusAuthorizationRule -ResourceGroupName xxxx -NamespaceName xxxxx.Id
$auth_Id = ($auth_Ids[1])
$auth_Id
输出:
/subscriptions/xxxxxx/resourcegroups/xxxxxx/providers/Microsoft.ServiceBus/namespaces/sxxxxxx/authorizationrules/saspolicy
现在我尝试使用以下命令使用上面的
SAS
创建一个auth_Id
令牌
命令:
$StartTime = Get-Date
$EndTime = $StartTime.AddHours(2.0)
$sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $auth_Id -KeyType saspolicy -ExpiryTime $EndTime).SharedAccessSignature
$sastoken
输出:
sr=xxxxx.servicebus.windows.net%2f&sig=%2fl5%2f0Xl9ZAgQ1X1tm98Pb47rqFSP0wJ%2fWBlLrxh9ubA%3d&se=1698853532&skn=saspolicy
总产量:
PS /home/xxxx> $auth_Ids = (Get-AzServiceBusAuthorizationRule -ResourceGroupName xxxx -NamespaceName xxxx).Id
PS /home/xxxx> $auth_Id = ($auth_Ids[1])
PS /home/xxxx> $auth_Id
/subscriptions/xxxx/resourcegroups/xxxxx/providers/Microsoft.ServiceBus/namespaces/xxxxx/authorizationrules/saspolicy
PS /home/xxxx> $StartTime = Get-Date
PS /home/xxxx> $EndTime = $StartTime.AddHours(2.0)
PS /home/xxxx> $sastoken = (New-AzServiceBusAuthorizationRuleSASToken -AuthorizationRuleId $auth_Id -KeyType saspolicy -ExpiryTime $EndTime).SharedAccessSignature
PS /home/xxxx> $sastoken
sr=sxxxxx.servicebus.windows.net%2f&sig=%2fl5%2f0xxxxxxxx7rqFSP0wJ%2fWBlLrxh9ubA%3d&se=1698853532&skn=saspolicy
PS /home/xxxx>
上述命令在命名空间级别执行并创建
SAS
令牌。
参考:
新-AzServiceBusAuthorizationRuleSASToken (Az.ServiceBus) |微软学习