在 LocalHost 上使用 Azure Functions 配置身份验证

Posted

技术标签:

【中文标题】在 LocalHost 上使用 Azure Functions 配置身份验证【英文标题】:Configure Authentication with Azure Functions on LocalHost 【发布时间】:2018-01-07 17:56:55 【问题描述】:

我想使用 Visual Studio 2017 来构建带有 HttpTrigger 的 Azure Function App。但是,我找不到添加 Azure Active Directory 身份验证以保护端点的方法。

如果我只是将 jwt 令牌添加到 http 请求然后在方法中调用 ClaimsPrincipal.Current.Claims 会起作用吗?还有其他解决办法吗?

【问题讨论】:

【参考方案1】:

您可以使用 Microsoft OpenID Connect 和 JWT 库来验证令牌并根据收到的访问令牌获取声明。这是一个例子:https://github.com/azure-samples/ms-identity-dotnet-webapi-azurefunctions/tree/master/

    在 AD 中创建应用注册 发出浏览器请求以获取访问代码 使用代码和密钥通过 cURL 为访问令牌发出 HTTP POST 请求 将访问令牌作为授权承载头发送到本地函数端点

我在使用带有 .NET 6.0 和 Azure Functions 4 的较新版本的 Microsoft.IdentityModel.Protocols.OpenIdConnect 时遇到问题,不得不回退到版本 6.10.2。

【讨论】:

【参考方案2】:

AFAIK,外部身份数据提供者的身份验证只能在 Azure 门户上配置。如果您在 Azure 上托管 Azure 功能,答案是肯定的。但是,如果您在本地托管 Azure 功能,我们无法使用 Azure Active Directory 配置身份验证。

作为一种解决方法,您需要在运行函数代码之前从标头中获取令牌并手动验证令牌。如果您想支持在本地配置主机Azure功能的身份验证,您可以提交here的反馈。

【讨论】:

你可能是对的,这使得在本地开发应用程序很不方便

以上是关于在 LocalHost 上使用 Azure Functions 配置身份验证的主要内容,如果未能解决你的问题,请参考以下文章

有些东西阻止了Azure上Ubuntu localhost的流量

在 azure 上部署后 SignalR 无法正常工作。在 localhost 上工作

ASP.NET Core API - 在 Azure 应用服务上获取 404,但在 Localhost 上工作正常

.NET WebAPI 在 localhost 上运行良好,但在 Azure 上不起作用

在本地运行 azure 函数时,localhost 拒绝连接

带有 graphql cli 的 Azure node.js 相对路径