Сеанс аутентификации консольного приложения C # - PullRequest
0 голосов
/ 07 мая 2019

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

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

Обновление

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

1 Ответ

0 голосов
/ 07 мая 2019

Как кто-то может реализовать функцию входа в 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. Результат: enter image description here

Более подробную информацию о том, как получить authorization code и access token, можно найти в этой статье .

...