Поиск идентификатора дескриптора с помощью devops REST API - PullRequest
0 голосов
/ 04 октября 2019

Я пытаюсь сделать сообщение на dev.azure.com{organization}/_apis/accesscontrolentries/{namespaceId}?api-version=5.1.

Мне нужна помощь в получении дескриптора, который начинается с S-1-9.

{ "token": "", "merge": true, "accessControlEntries": [ { "descriptor": "Microsoft.TeamFoundation.Identity;S-1-9-**********-**********-**********-**********-**********-*-**********-**********-**********-**********", "allow": 128, "deny": 0 } ] }

Спасибо.

1 Ответ

1 голос
/ 05 октября 2019

Получение дескриптора, который начинается с S-1-9.

Нет прямого api для получения этого дескриптора, который начинается с S-1-9. Вам необходимо использовать следующие api, чтобы получить user descriptor(SID) во-первых:

GET https://vssps.dev.azure.com/{org name}/_apis/graph/users?api-version=5.1-preview.1

У меня есть один ответ о том, как получить его из тела ответа, пожалуйста, обратитесь к этот ответ для получения более подробной информации. .

Теперь полученный нами дескриптор основан на base64. Чтобы добиться того, что вы хотите, просто расшифруйте этот SID.

Здесь есть блог, написанный нашим инженером Azure Identity Team: Сценарий декодирования C # . Просто расположен в соответствующей части для достижения этого сценария декодирования:

public static string Base64Decode(string base64EncodedData)
        {
            var lengthMod4 = base64EncodedData.Length % 4;
            if (lengthMod4 != 0)
            {
                //fix Invalid length for a Base-64 char array or string
                base64EncodedData += new string('=', 4 - lengthMod4);
            }
            var base64EncodedBytes = System.Convert.FromBase64String(base64EncodedData);
            return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
        }

public static string Base64Encode(string plainText)
        {
            var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
            return System.Convert.ToBase64String(plainTextBytes);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...