我在我的App Service中使用了http触发天蓝色功能。我希望该http触发Azure功能不应公开访问,而只能从App Service访问。
当前,我已经为http触发功能创建了主机密钥,并将其用于身份验证请求。
我应该使用哪种身份验证方法?有什么想法。
天蓝色功能:
public static class RemoveSubscriptionsForPayers
{
[FunctionName(nameof(RemoveSubscriptionsForPayers))]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] HttpRequest req,
[Inject] ILoggingService loggingService,
[Inject] ICommandValidator commandValidator,
[Inject] ICommandHandler<ResultDto,RemoveSubscriptionsForPayersCommand> commandHandler)
{
var logger = new Logger(loggingService);
try
{
IActionResult actionResult = null;
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
logger.Info($"RemoveSubscriptionsForPayersCommand received on {nameof(RemoveSubscriptionsForPayers)}");
var command = requestBody.AsPoco<RemoveSubscriptionsForPayersCommand>();
if (commandValidator.Validate<RemoveSubscriptionsForPayersCommand>(req, command, new RemoveSubscriptionsForPayersCommandValidator(), logger, ref actionResult))
{
var response =await commandHandler.HandleAsync(command, logger);
actionResult = new OkObjectResult(response);
}
return actionResult;
}
catch (Exception ex)
{
logger.Error($"Exception while processing {nameof(RemoveSubscriptionsForPayers)}", ex,
nameof(RemoveSubscriptionsForPayers));
throw;
}
}
}
答案 0 :(得分:0)
您可以使用Azure AD对功能进行身份验证,这更加安全。
打开Azure AD身份验证后,您需要获取访问令牌。
请在Azure门户中打开Azure active directory
并找到App registrations
,您需要在搜索框中搜索在Azure AD中注册的功能。
您需要在此处找到url和body的参数值以获得令牌。
身体:
grant_type:grant_type
的值是固定的,两者均为password
。
您可以这样获得令牌:
现在,您可以使用Azure AD的访问令牌来访问您的功能。
请求标头名称为Authorization
,标头值为Bearer <access-token>
: