Хорошо, оказывается, мне вообще не нужно делать отдельное клиентское приложение.
Я могу просто использовать идентификатор клиента функции Azure.
Дело в том, что вам нужно go на «Продвинуть» вместо «Express», потому что библиотека Microsoft.Identity.Client
использует токены v2.0.
Это необходимо для настройки вашей Azure функции - оставьте все поля одинаковыми, но добавьте /v2.0 в URL-адрес эмитента:
Это код для получения токена делегированного носителя для функции Azure, которая использует токен v2.0 - я не знаю, как изменить его, чтобы использовать токен v1:
string[] scopes = new string[] { "profile", "email", "openid" };
string ClientId = [clientId of Azure Function];
string Tenant = [tenantId];
string Instance = "https://login.microsoftonline.com/";
var _clientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority($"{Instance}{Tenant}")
.WithDefaultRedirectUri()
.Build();
var accounts = _clientApp.GetAccountsAsync().Result;
var authResult = _clientApp.AcquireTokenInteractive(scopes)
.WithAccount(accounts.FirstOrDefault())
.WithPrompt(Prompt.SelectAccount)
.ExecuteAsync().Result;
var bearerTokenForAzureFunction = authResult.IdToken;
Теперь я вообще не понимаю необходимости регистрировать клиентское приложение, если я могу таким образом получить делегированный токен-носитель ...