Я хотел включить аутентификацию в функциях Azure.Итак, я решил использовать EasyAuth (ссылка Аутентификация / Авторизация в разделе функций платформы) и успешно смог настроить процесс аутентификации.
Проверка подлинности работает, когда я вручную выполняю вход в конечную точку функции Azure.Но когда я пытаюсь получить программный доступ к API, без какого-либо ручного вмешательства пользователя, я сталкиваюсь с проблемой аутентификации:
Status Code:401, Unauthorized
Я получаю токен доступа из AAD, используя clientID и clientSecret, используя следующий код:
AuthenticationContext context = new AuthenticationContext("https://login.windows.net/<tenant-id>");
string key = "<client-secret>";
ClientCredential cc = new ClientCredential("<client-id>", key);
AuthenticationResult result = context.AcquireTokenAsync("https://<AzureFunctionAppName>.azurewebsites.net/", cc).Result;
return result.AccessToken;
Затем я пытаюсь отправить полученный в заголовке токен доступа для нового запроса в мой API:
var content = "{\"on\":true, \"sat\":254, \"bri\":254, \"hue\":10000}";
var AADToken = GetS2SAccessToken();
HttpClient Client = new HttpClient();
Client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", AADToken);
var foo = Client.PostAsync("https://<AzureFunctionAppName>.azurewebsites.net/.auth/login/aad", new StringContent(content.ToString())).Result;
Console.WriteLine($"result: {foo}");
Но приведенный выше код приводит к несанкционированным вызовам.Я не уверен, что я делаю неправильно.