Сеанс аутентификации консольного приложения C#

Как кто-то может реализовать az login (Azure CLI) в консольном приложении C#?

В этом случае открывается окно браузера, пользователь аутентифицируется, и после этого он может получить доступ к частным ресурсам. Я предполагаю, что токен аутентификации хранится где-то, но где? Переменная сеанса, файл..?

Обновить

Я узнал, что есть папка ~/.azure хранение соответствующей информации. Итак, вопрос больше к первой части (запуск браузера и получение полученного токена).

1 ответ

Как кто-то может реализовать интерфейс входа в Az (CLI Azure) в консольном приложении C#?

1. Запуск браузера с Process.Start(@"http://url");, После того, как пользователь введет свои учетные данные, вы получите код авторизации. Скопируйте это.

2. Получите код авторизации.

3. Получите токен доступа с помощью следующего кода:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Add("ContentType", "application/json");
    var requestURl = new Uri($"https://login.microsoftonline.com/xxxxxxxxxxxxxxxxxxxx/oauth2/v2.0/token");
    string body = "{\"client_id\": \"3c35ed0b-a441-4c57-9d1c-3a3b0392d9c3\",\"code\":\"the_code_you_copy_in_the_second_step\",\"redirect_uri\": \"https://localhost\",\"grant_type\": \"authorization_code\",\"client_secret\": \"xxxxxxxxxxxxxx\",\"scope\": \"user.read\"}";
    var stringContent = new StringContent(body, Encoding.UTF8, "application/json");
    var response = client.PostAsync(requestURl, stringContent).Result;
}

4. Результат:

Для получения дополнительной информации о том, как получить authorization code а также access token Вы могли бы обратиться к этой статье.

Другие вопросы по тегам