我正在尝试自动更新Azure devops上的补丁到期日期。
我在上遵循MS指南
https://learn.microsoft.com/en-us/azure/devops/organizations/accounts/manage-personal-access-tokens-via-api?view=azure-devops
这可以正常工作,但需要用户手动登录
所以我尝试用powershell 7连接AzAccount命令代替:
$azureAplicationId = "[app_id]"
$azureTenantId = "[tenant_id]"
$azurePass = ConvertTo-SecureString "[app_secret]" -AsPlainText -Force
$psCred = New-Object System.Management.Automation.PSCredential($azureAplicationId,$azurePass)
Connect-AzAccount -Credential $psCred -Tenant $azureTenantId -ServicePrincipal
然后
(Get-AzAccessToken -ResourceUrl "499b84ac-1321-427f-aa17-267ca6975798").Token
我确实得到了不记名令牌,但当我对 Postman 使用它时:
我认为这与Azure上的用户模拟权限似乎只能作为委托权限而不是应用程序权限这一事实有关:
想法?
1条答案
按热度按时间ulydmbyx1#
根据您的情况和您在“401”回复上的错误信息,我这边测试了一下,按照您分享的文档测试,这个用户登录过程是无法绕过的,最后还是要先用您的用户账号登录。
因此,建议您先使用powershell 7 Connect-AzAccount命令直接登录。
下面是Postman中更新PAT的获取令牌脚本示例,您可以检查您的Body以查看它们是否都正确。
1.首先,您应该使用在您的DevOps组织(所有者或PCA)中拥有权限的用户帐户登录,并使用命令
Connect-AzAccount
和命令(Get-AzAccessToken -ResourceUrl "499b84ac-1321-427f-aa17-267ca6975798").Token
获取不记名令牌。2.然后,您可以通过文档'GET'列出所需的主体,如“authorizationId”:https://learn.microsoft.com/en-us/rest/api/azure/devops/tokens/pats/list?view=azure-devops-rest-7.0&tabs=HTTP
3.之后,'PUT'实现了PAT令牌与“Body”的修改如下:
更新PAT响应将如下图所示: