如何确定当前用户的存储密钥或描述符

时间:2019-10-24 14:02:46

标签: azure-devops azure-devops-rest-api

许多Azure DevOps API在引用用户时都将存储密钥作为输入。该存储密钥是您所在组织中用户的唯一标识符。我似乎无法弄清楚如何确定当前登录用户的存储密钥。

我知道我可以调用Get Profile API并指定Me作为ID,但这通常会返回有关当前用户的信息-与特定组织无关。
< br /> List Users API可用于获取组织中所有用户的列表,但我不希望搜索结果以获取已登录的用户。而且Get User api需要一个用户描述符,并且似乎不允许我指定Me来获取当前用户。

所以我要如何获取存储空间当前用户的密钥(甚至描述符)?

1 个答案:

答案 0 :(得分:0)

Get Profile API得到的descriptor,它只能代表用户自己。换句话说,将访问服务器dev.azure.com的身份(不是org,仅由服务器标识)。因此到达这里的descriptor由于无法识别而无法用于组织。

此外,对于Get User apiList User api,它们都是组织级别的,这意味着其查询结果将是整个组织的查询结果。而且我们没有为Azure Devops rest api提供filter功能。

因此,如果要通过在API URL中指定一位用户来filter,很遗憾,很抱歉,在使用Azure Devops rest api时不支持此操作。您必须遵循文档中显示的限制URL格式。


作为解决方法,您可以在此处使用powershell脚本来实现过滤器。

您可以在Azure devops管道中执行脚本:

$url = 'https://vssps.dev.azure.com/{org}/_apis/graph/users?api-version=5.0-preview.1';
$response = Invoke-RestMethod -Uri $url -Headers @{Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN"} -Method Get
$results = $response.value | Where {$_.displayname -eq "{your account name}"} #|
Write-Host "results = $($results | ConvertTo-Json -Depth 100)"
Write-Host $results.desciptor

或者在本地的Powershell ISE中运行它,它将比上一个更方便:

enter image description here

然后,您可以将desciptor存储到一个参数中,并在Storage Keys - Get API中使用它。