关键词:
【中文标题】在 Azure Function 中接收 Blazor wasm 发送的身份验证令牌【英文标题】:Receive authentication token in Azure Function sent by Blazor wasm 【发布时间】:2020-10-15 02:56:17 【问题描述】:我正在使用 Azure Functions 作为 API 开发 Blazor wasm。 我已经可以在客户端应用程序上通过 Azure AD B2C 对用户进行身份验证,但是在 Azure Function 中识别用户时,所有请求的 ClaimsPrincipal.Current 都会收到 null,即使用户是 在 blazor 应用中登录。
public static class Function1
[FunctionName("Function1")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.User, "get", "post", Route = null)] HttpRequest req,
ILogger log)
log.LogInformation("C# HTTP trigger function processed a request.");
if (ClaimsPrincipal.Current == null || !ClaimsPrincipal.Current.Identity.IsAuthenticated)
log.LogInformation("Claims: Not authenticated");
else
log.LogInformation("Claims: Authenticated as " + ClaimsPrincipal.Current.Identity.Name);
string name = req.Query["name"];
string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
dynamic data = JsonConvert.DeserializeObject(requestBody);
name = name ?? data?.name;
string responseMessage = string.IsNullOrEmpty(name)
? "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response."
: $"Hello, name. This HTTP triggered function executed successfully.";
return new OkObjectResult(responseMessage);
我错过了什么?应用程序是否会在每次请求时自动发送令牌? 关于身份验证,我只在 program.cs 中添加了这个。
builder.Services.AddMsalAuthentication(options =>
builder.Configuration.Bind("AzureAdB2C", options.ProviderOptions.Authentication);
);
如何确定应用程序正在发送令牌? ClaimsPrincipal 是接收令牌和用户身份的正确方法吗?
【问题讨论】:
【参考方案1】:当BaseAddressAuthorizationMessageHandler
处理程序附加到HttpClient
时,令牌由Authorization
标头中的http 请求发送。
要使用此处理程序创建 HttpClient,您可以在 HttpClientFactory
中注册一个客户端,如下所示:
services
.AddHttpClient("azure-function")
.ConfigureHttpClient(httpClient =>
var azureUri = new Uri("path to azure");
httpClient.BaseAddress = azureUri;
)
.AddHttpMessageHandler<BaseAddressAuthorizationMessageHandler>();
并通过注入 http 客户端工厂在您的组件或服务中使用此客户端:
@using System.Net.Http
@inject IHttpClientFactory _factory
@code
protected override async Task OnInitializedAsync()
var httpClient = _factory.CreateClient("azure-function");
var result = await httpClient.GetAsyn<Result>("endpoint path");
【讨论】:
感谢您的回答。由于我的 blazor 是独立的 (wasm),因此我将按照此处的说明进行操作:docs.microsoft.com/en-us/aspnet/core/blazor/security/…您知道如何使用 AddMsalAuthentication 执行此操作吗? @CageE 也这样做。它与帐户类型无关。 绑定builder.Services.AddHttpClient("AuthorizedClient", client => client.BaseAddress = new Uri(builder.Configuration[ApiBaseAddress])) .AddHttpMessageHandler如何使用 Azure Function 在 Azure 文件共享中解压缩文件?
】如何使用AzureFunction在Azure文件共享中解压缩文件?【英文标题】:HowtounzipfileinAzureFileShareusingAzureFunction?【发布时间】:2021-02-0703:51:10【问题描述】:我有一个带有Azure文件共享的Azure存储帐户。我想使用Azure函数将zip存档文件... 查看详情
如何确定 Webhook 未触发 Azure Function App 的原因
】如何确定Webhook未触发AzureFunctionApp的原因【英文标题】:HowtodeterminewhyanAzureFunctionAppisnottriggeredbyawebhook【发布时间】:2019-05-2702:12:03【问题描述】:我有:HTTPwebhook配置中的JavaScriptAzure函数;该函数提供一个URL;函数执行一个动... 查看详情
在 Azure Function 中覆盖 function.json 的问题
】在AzureFunction中覆盖function.json的问题【英文标题】:Problemwithoverwritingfunction.jsoninAzureFunction【发布时间】:2021-08-3004:30:21【问题描述】:我想问你关于我当前问题的解决方案。首先,我想强调的是,即使在***上可以找到非常相... 查看详情
Azure(函数)参数在 Python 中声明,但不在 function.json 中
】Azure(函数)参数在Python中声明,但不在function.json中【英文标题】:Azure(functions)ParametersaredeclaredinPythonbutnotinfunction.json【发布时间】:2021-04-0408:47:04【问题描述】:我无法理解发生了什么。我从字面上遵循所有Microsoft文档,实... 查看详情
如何在本地环境中自动启动 Azure Function?
】如何在本地环境中自动启动AzureFunction?【英文标题】:HowdoIautomaticallylaunchAzureFunctioninalocalenvironment?【发布时间】:2022-01-2009:22:24【问题描述】:我有两个Azure函数链接在一起。我想使用RestAssured在本地测试它们。但要做到这一... 查看详情
如何在 Azure Function 代码中使用访问密钥(由 Azure Vault 管理)连接存储
】如何在AzureFunction代码中使用访问密钥(由AzureVault管理)连接存储【英文标题】:HowtoconnectStoragewithAccessKeys(managedbyAzureVault)inAzureFunctioncode【发布时间】:2021-08-1113:09:03【问题描述】:在Azure中创建了一个存储帐户。然后还创建... 查看详情
在 Azure Function 中使用 xUnit 的 Moq 服务总线
】在AzureFunction中使用xUnit的Moq服务总线【英文标题】:MoqServiceBususingxUnitinAzureFunction【发布时间】:2021-12-2201:56:55【问题描述】:我有实现HTTP触发器和服务总线的Azure函数。我已经成功完成了HttpResponse的xUnits实现,但不确定如何... 查看详情
如何在 Azure Pipelines YAML 构建定义中接收修订
】如何在AzurePipelinesYAML构建定义中接收修订【英文标题】:HowtoreceiveRevisioninAzurePipelinesYAMLbuilddefinition【发布时间】:2019-07-1113:53:59【问题描述】:我使用AzurePipelines(AzureDevOps)创建了一个新版本,它运行良好。通常,您使用$(Rev:.r... 查看详情
Azure Function v3 - 在启动中添加标识时“无法访问 Azure Functions 运行时”
】AzureFunctionv3-在启动中添加标识时“无法访问AzureFunctions运行时”【英文标题】:AzureFunctionv3-"AzureFunctionsruntimeisunreachable"whenaddIdentityinStartup【发布时间】:2021-09-0301:18:58【问题描述】:我有一个AzureFunction(v3),它必须与... 查看详情
如何在 Azure Function v2(核心)中静态使用 ConfigurationBuilder?
】如何在AzureFunctionv2(核心)中静态使用ConfigurationBuilder?【英文标题】:HowtouseConfigurationBuilderstaticlyinanAzureFunctionv2(core)?【发布时间】:2019-06-1120:01:07【问题描述】:在将Azure函数从v1移植到v2时,配置管理器用于读取local.settings... 查看详情
如何在 Azure Function 中使用 Azure Managed Identity 通过触发器访问 Service Bus?
】如何在AzureFunction中使用AzureManagedIdentity通过触发器访问ServiceBus?【英文标题】:HowtouseAzureManagedIdentityinAzureFunctiontoaccessServiceBuswithatrigger?【发布时间】:2019-01-2617:10:36【问题描述】:我在Azure中创建了一个ServiceBus命名空间,以... 查看详情
在 Visual Studio 中开发 Azure Function 时存储帐户无效
】在VisualStudio中开发AzureFunction时存储帐户无效【英文标题】:InvalidstorageaccountwhendevelopingAzureFunctioninVisualStudio【发布时间】:2018-03-0207:30:51【问题描述】:我正在使用C#在VisualStudio中开发AzureFunction。我在代理后面的开发机器上本... 查看详情
如何在启动类中使用 Azure Function 中的中间件
】如何在启动类中使用AzureFunction中的中间件【英文标题】:HowtouseMiddleWareinAzureFunctioninstartupclass【发布时间】:2021-10-0603:22:49【问题描述】:我正在寻找使用中间件来解密在startup.cs类中传入azure函数的http请求。下面是我的入门... 查看详情
无法在 Azure Function Python3 中添加 ML 模型
】无法在AzureFunctionPython3中添加ML模型【英文标题】:UnabletoaddMLModelinAzureFunctionPython3【发布时间】:2021-01-0908:41:58【问题描述】:我正在尝试创建一个azure函数,该函数将从我的ML模型(final_model.sav)中返回数据。通过这样做,ML模... 查看详情
如何在 Python MagicMock 中模拟 Azure ServiceBus 接收器
】如何在PythonMagicMock中模拟AzureServiceBus接收器【英文标题】:HowtomockAzureServiceBusReceiverinPythonMagicMock【发布时间】:2022-01-0706:51:58【问题描述】:我正在使用PythonAzureServiceBuspackage并拥有以下sn-p代码:#receiver.pyimportlogginglogger=logging... 查看详情
在事件中心接收消息时未触发 ASE 中的 Azure 函数
】在事件中心接收消息时未触发ASE中的Azure函数【英文标题】:AzureFunctioninASEnottriggredwhenreceivingamessageinaneventhub【发布时间】:2022-01-0103:26:01【问题描述】:我们正在尝试在独立应用服务计划中的应用服务环境中部署Azure函数。每... 查看详情
无法在 Azure Function App Startup 中 DI 自定义对象
】无法在AzureFunctionAppStartup中DI自定义对象【英文标题】:UnabletoDIcustomobjectinAzureFunctionAppStartup【发布时间】:2021-10-0304:36:03【问题描述】:local.settings.json"IsEncrypted":false,"Values":"AzureWebJobsStorage":"UseDevelopmentStorage=true", 查看详情
运行时错误:SWIG std::function 调用失败,在 azure databricks 中
】运行时错误:SWIGstd::function调用失败,在azuredatabricks中【英文标题】:Runtimeerror:SWIGstd::functioninvocationfailed,inazuredatabricks【发布时间】:2019-07-0509:22:16【问题描述】:在使用googleor-tools的路由求解器时,会抛出运行时错误。在收... 查看详情