Функция Azure, запускаемая по времени - генерация токенов на предъявителя для вызова защищенного API - PullRequest
0 голосов
/ 12 апреля 2020

Я пытаюсь написать функцию Azure, которая запускается по времени и выполняется каждые 10 минут.

Функция должна вызывать API, который ожидает токен-носитель.

Как создать токен? Поскольку он основан на времени, я не могу позволить пользователю войти в систему и выдать токен авторизации функции, войдя в платформу MS Identity, которую можно использовать для получения токена доступа.

1 Ответ

0 голосов
/ 13 апреля 2020

Вам просто нужно получить токен по приведенному ниже коду в функции запуска таймера:

HttpClient client = new HttpClient();
var values = new Dictionary<string, string>
{
    { "client_id", "<your app client id>" },
    { "scope", "<scope>" },
    { "username", "<your user name>" },
    { "password", "<your password>" },
    { "grant_type", "password" },
};

var content = new FormUrlEncodedContent(values);

var response = await client.PostAsync("https://login.microsoftonline.com/<your tenant id>/oauth2/v2.0/token", content);

var responseString = await response.Content.ReadAsStringAsync();

Затем вам нужно проанализировать responseString (в типе json) и использовать токен доступа в чтобы запросить ваш API.

Обновление:

Получить токен по учетным данным клиента :

HttpClient client = new HttpClient();
var values = new Dictionary<string, string>
{
    { "client_id", "<your app client id>" },
    { "scope", "<scope>" },
    { "client_secret", "<your app client secret>" },
    { "grant_type", "client_credentials" },
};

var content = new FormUrlEncodedContent(values);

var response = await client.PostAsync("https://login.microsoftonline.com/<your tenant id>/oauth2/v2.0/token", content);

var responseString = await response.Content.ReadAsStringAsync();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...