查找回购分支令牌

时间:2019-07-26 19:31:38

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

使用存储库的安全性API时,将使用从分支的“人工”名称派生的字母数字标识符来引用各个分支。

此标识符是令牌的最后一部分。例如,在master分支中,标识符始终为6d0061007300740065007200。这不是后端系统分配的GUID,而是计算值

我已经阅读了API文档,但找不到任何方法来查找此标识符。

只是想知道我是缺少什么还是在错误的地方找东西?有人知道是否有找到该信息的地方吗?

2 个答案:

答案 0 :(得分:1)

这是用PowerShell编写的粗略函数,但可以将分支名称转换为必需的十六进制代码。

Function get-AzDoBranchTokenFromName {  
    <#
    .SYNOPSIS
    Convert branch name to token

    .DESCRIPTION
    Azure DevOps Services security stores Access Control Lists and other items
    for Branches using a alphanumeric identifier derived from the text name of
    the branch.  This function will convert the name, like "master", into the 
    appropriate string, like 6d0061007300740065007200

    .PARAMETER branchName
    The human name of the git repository branch

    .EXAMPLE
    get-AzDoBranchTokenFromName -branchName "master"

    .NOTES
    The fun part is trying to go backwards (from hex to string).  Need to 
    work on that yet. 
    #>

    param(  
        # The sting you wish to Convert
        [Parameter(Mandatory=$true)]
        [string]
        $branchName   
    )
    # convert a string to an array of bytes    
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($branchName)    
    # create a new variable twice as long as $bytes
    $Hex = [System.Text.StringBuilder]::new($Bytes.Length * 2)    
    # take each byte, format it as two hex characters and shove it into $Hex
    ForEach ($byte in $bytes) {      
        if ($byte -eq 47) {
            #Write-Output "YATZEE!!!!"
            $Hex.Append("/") | Out-Null
        }else{
        $Hex.AppendFormat("{0:x2}", $byte) | Out-Null    
        }
    }
    # convert $Hex back to a string    
    $Hex.ToString()
}

答案 1 :(得分:0)

  

此标识符是令牌的最后一部分。例如,   主分支,标识符始终为6d0061007300740065007200。

这是一个Git存储库安全令牌,已经在服务器提供的指定名称空间下进行了规范化。在VSTS WEB ui中,它需要显示其相应的可读名称。

使用文档中列出的API获取信息并不容易。但是这里还有另一种更好且通常的方法是将 Fiddler / F12 与VSTS UI和Fiddler结合使用以学习此特定资源令牌。

例如:

按F12键,打开源文件页面,然后找到存储库并分支到正确的存储库:

enter image description here

在F12控制台中,找到此API。在其响应正文中,您可以查看相关的分支机构安全令牌:

 POST https://dev.azure.com/{org name}/_apis/Contribution/dataProviders/query/project/{project id}

有关更多详细信息,您可以参考以下博客:Git repo tokens for the security service