2017-09-25 68 views
1

使用VSTS API,我試圖列出誰有訪問我們在VSTS中的每個git存儲庫的列表。獲取誰有權訪問git存儲庫的列表

我對Git的安全名稱空間ID和我通過這個名稱空間ID的安全性 - >這裏所描述的訪問控制列表API: https://www.visualstudio.com/en-us/docs/integrate/api/security/acls

GET https://xxxxxxxx.visualstudio.com/DefaultCollection/_apis/accesscontrollists/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/?api-version=1.0&recurse=true&includeExtendedInfo=false

鑽入響應,我可以看到它上市每個回購的權限,以及ref和標籤。

每個對象都包含「acesDictionary」,這本身就是與這個樣子鍵的對象:

Microsoft.IdentityModel.Claims.ClaimsIdentity;xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\\[email protected]

如何破譯ClaimsIdentity?我首先想到的是ClaimsIdentity中的UUID是我VSTS項目中用戶的UUID,但事實並非如此。我知道電子郵件地址在那裏,所以我想我可以使用它,但現在我很好奇ClaimsIdentity中的UUID代表了什麼。 VSTS API文檔不提這個。

是安全 - >訪問控制列出我應該看的地方嗎?我的主要目標是試圖獲得誰擁有訪問VSTS git存儲庫的列表。

+0

你使用將得到所有資源的REST API(比如所有團隊項目的git倉庫),所以你最好通過標記或描述符進行過濾。而ClaimsIdentity不能被破譯。 –

+0

如果ClaimsIdentity不能被破譯,爲什麼這個信息會返回呢?如果這是從acesDictionary返回的唯一東西,你如何從ClaimsIdentity轉到一個人? – Kevin

回答

0

通過技術支持,我找到了一位微軟代表,他與我分享了用於映射標識描述符的文檔尚不可用,但希望儘快發佈。在此期間,有一個端點人行橫道身份描述這看起來是這樣的:?

GET {}帳戶.vssps.visualstudio.com/_apis /身份描述符= {} commaSeparatedDescriptorsList API &版本= {apiVersion }

注意,該呼叫通過SPS {account}.vssps.visualstudio.com,而不是通過您的帳戶實例{account}.visualstudio.com

由使用我的例子,它會是這個樣子(UUID混淆):

https://xxxxx.vssps.visualstudio.com/_apis/identities?descriptors=Microsoft.TeamFoundation.ServiceIdentity;ffead5b1-5121-4e0e-a439-bbecb4999eba:Build:c4bfb762-a246-46c9-ba9a-7e6c53386b11&api-version=4.0

在你的描述符此外,如果描述符是Microsoft.IdentityModel.Claims.ClaimsIdentity型的,那麼你很可能會逃脫了反斜槓,你需要取消轉義。例如,如果您有:

「Microsoft.IdentityModel.Claims.ClaimsIdentity; XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX \\ [email protected]

你需要取消這個逃生量,使得它看起來是這樣的:

「Microsoft.IdentityModel.Claims.ClaimsIdentity; XXXXXXXXXXXX-XXXXXXXX-XXXXXXXXXXXX \ [email protected]

相關問題