Пользовательская аутентификация функции Azure - PullRequest
0 голосов
/ 08 февраля 2019

Я искал способ пользовательской аутентификации для функции Azure.Я мог видеть многие из аутентификации из коробки, включая функциональные ключи, аутентификацию AD и других провайдеров идентификации.Мой сценарий состоит в том, чтобы аутентифицировать функцию Azure только для тех, кто вошел в веб-приложение, используя пользовательское имя пользователя и пароль, которые я сохранил в базе данных.Есть ли для этого стандартная реализация?Любая помощь будет высоко ценится

1 Ответ

0 голосов
/ 11 февраля 2019

Я столкнулся с подобной проблемой, поскольку хотел аутентифицировать запросы с использованием токенов доступа JWT, выданных внешним сервером OAuth.Нет удобного промежуточного программного обеспечения, позволяющего вам это сделать, но вы можете создать настраиваемую привязку ввода , которая позволит вам вставить что-то вроде ClaimsPrincipal в определение функции, например,

[FunctionName("ExampleHttpFunction")]
public static async Task<IActionResult> Run(
    [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "example")] HttpRequest req, 
    ILogger log, 
    [AccessToken] ClaimsPrincipal principal)
{
    log.LogInformation($"Request received for {principal.Identity.Name}.");
    return new OkResult();
}

Это отделяет аутентификацию от самой функции, упрощая тестирование, хотя вам все равно нужно будет добавить проверки авторизации и явно вернуть 40-кратные коды состояния.

SDK для связывания не так хорошо документировани вам нужно будет соединить полдюжины различных классов, чтобы это работало, но я подробно описал здесь: Аутентификация по токену в пользовательских функциях Azure с использованием привязок .Сам код размещен на GitHub - просто замените код в реализации IValueProvider на свой собственный метод аутентификации.

Надеюсь, это поможет.Я полагаю, что альтернативой является написание некоторого кода, который вы добавляете в каждую функцию?

...