Ситуация:
У меня есть приложение WPF, которое должно вызывать функцию http-триггера, которая защищена через Azure Active Directory. При попытке получить токен на предъявителя для дальнейших вызовов я получаю следующий ответ (независимо от того, делаю ли я это с помощью почтальона или кода):
AADSTS90014: отсутствует обязательное поле «область действия»
То, что я сделал:
Я читаю тонну различных статей и сообщений в блогах, объясняющих, как защитить функцию триггера http в Azure AD, и получить токен носителя череззапрос на отдых. Следуя одной из тех статей, которые, по моему мнению, лучше всего соответствуют моим потребностям, я создал полную настройку приложения-функции Azure, функции Azure, конфигурации Azure AD и регистрации приложений.
После этого я просто хотел использовать функцию Azure, отправив токен носителя и некоторые другие параметры, и получить результат, но я застрял в получении токена носителя.
Код (на всякий случай):
var restClient = new RestClient("https://login.microsoftonline.com/{myTenant}/oauth2/v2.0/token");
var restRequest = new RestRequest(Method.POST);
restRequest.AddHeader("content-type", "application/x-www-form-urlencoded");
restRequest.AddParameter("grant_type", "client_credentials", ParameterType.GetOrPost);
restRequest.AddParameter("client_id", "{app id from azure ad app}", ParameterType.GetOrPost);
restRequest.AddParameter("client_secret", "{generated secret}", ParameterType.GetOrPost);
restRequest.AddParameter("ressource", "https://{somefunctionname}.azurewebsites.net", ParameterType.GetOrPost);
var restResponse = restClient.Execute(restRequest);
Параметры тела почтальона (x-www-form-urlencoded):
grant_type = "client_credentials"
client_id = {идентификатор приложения отAzure Ad App}
client_secret = {сгенерированный секрет}
ressource = "https://somefunctionname.azurewebsites.net"
и URL, который я использую для получения токена:
https://login.microsoftonline.com/{myTenant}/oauth2/v2.0/token
Мой вопрос:
Итак, детально рассмотрев ситуацию, у меня есть два основных вопроса:
- Почему служба проверки подлинности ожидает параметр «область» в моем случае (что-то не так в моей настройке или в моем запросе на отдых)?
- Какое значение области следует отправить в случае, если мне нужно отправить один?