Моя цель - защитить мои Azure функции с помощью Azure AD и вызывать их из приложения WPF.
У меня есть функция Azure со следующим определением:
public IActionResult Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)]
HttpRequest req,
ILogger log,
ExecutionContext context,
ClaimsPrincipal claimsPrincipal)
Я зарегистрировал приложение Azure AD и настроил параметры для проверки подлинности собственных приложений:
Я настроил свое приложение в разделе «Открыть API "bladd
Я также добавил разрешения API
Я связал свое приложение в my Azure Functions App в колонке Authentication / Authorization.
Я получаю токен от Azure AD, как это, в приложении WPF (с использованием библиотеки Microsoft.Identity.Client)
string applicationID = "***"; // My AppID Guid
PublicClientApp = PublicClientApplicationBuilder.Create(applicationID)
.WithRedirectUri("https://login.microsoftonline.com/common/oauth2/nativeclient")
.Build();
var listScopes = new List<string>
{
//"user.read" - Removed based on @tony-yu recommendation
$"api://{applicationID}/MyScope"
};
var authResult = await PublicClientApp.AcquireTokenInteractive(listScopes)
.ExecuteAsync();
var myToken = authResult.AccessToken;
Я могу пройти аутентификацию без каких-либо проблем, и я успешно получаю токен, но всякий раз, когда я вызываю свою функцию, я указываю свой токен в заголовке авторизации (Authorization = Bearer ****), я получаю:
401 - У вас нет разрешения на просмотр этого каталог или страницу.
Вот как я это называю (Почтальон):
Вот заголовок WWW-Authenticate содержимое при возврате вызова
Когда я проверяю полученный токен, он кажется le git
Есть идеи, что я делаю не так?