Как обеспечить идентификацию пользователя при вызове функции Azure? ASP NET Базовое веб-приложение - PullRequest
0 голосов
/ 25 февраля 2020

Я создаю базовое веб-приложение ASP NET, которое выполнит операцию удаления для пользователя в удаленном хранилище данных. В настоящее время у меня есть веб-приложение, которое взаимодействует с Azure функциями для удаления пользователя. У меня есть проблемы с безопасностью. Как я могу убедиться, что пользователь вошел в систему? В настоящее время в моем ASP Net Core Web App пользователь проходит аутентификацию с помощью AAD, используя Microsoft в качестве поставщика удостоверений. Со стороны клиента пользователь проверен и заботится. Однако мое приложение вызывает конечные точки функций Azure. Есть ли дополнительный уровень безопасности, который я мог бы добавить. Я только хочу дать моему веб-приложению (зарегистрированному в Azure) возможность вызывать конечные точки.

1 Ответ

0 голосов
/ 26 февраля 2020

Существует два основных способа аутентификации ваших пользователей. Одним из них является использование параметров аутентификации служб приложений: https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad. Это гораздо более простой метод.

Если вам нужно больше контроля над вещами, чем доступно в сервисе, тогда вы можете реализовать проверку в самой функции, как упомянуто Thia go. Бен Моррис сделал довольно подробный пост о том, как реализовать свой собственный поставщик OAUTH в своем приложении функций с помощью C#: https://www.ben-morris.com/custom-token-authentication-in-azure-functions-using-bindings/ Если вы можете позаботиться о проверке в контейнере DI функции, проверка внутри Функция speci c довольно чистая, как видно из поста:

public class ExampleHttpFunction
{
    private readonly IAccessTokenProvider _tokenProvider;

    public ExampleHttpFunction(IAccessTokenProvider tokenProvider)
    {
        _tokenProvider = tokenProvider;
    }

    [FunctionName("ExampleHttpFunction")]
    public IActionResult Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "example")] HttpRequest req,  ILogger log)
    {
        var result = _tokenProvider.ValidateToken(req);

        if (result.Status == AccessTokenStatus.Valid)
        {
            log.LogInformation($"Request received for {result.Principal.Identity.Name}.");
            return new OkResult();
        }
        else
        {
            return new UnauthorizedResult();
        }
    }
}
...