在过去的24小时里,我一直在阅读有关如何创建Azure功能的所有内容,并已成功将MVC WebApi转换为具有多个功能的新功能应用程序.我的问题是我没有找到任何关于如何使用它们进行最基本的身份验证的明确文档或教程.
我的情景很简单.在我的AAD中配置用户,然后授予这些用户访问特定功能的权限.网站上的用户将点击UI元素,这些元素又会触发调用我的Azure功能的Javascript.在函数中,我需要能够以某种方式验证它们的身份,因为我将把它传递给与SQL实例交互的其他函数.
有人可以指点我的文档,文章,一个例子,一些东西,这表明我如何实现这一目标?
为了记录,我在门户网站上找到了我的功能应用程序的"身份验证"配置,并选择了AAD作为我的身份验证提供程序.我已经添加了我的功能应用程序并配置了一些用户.然后我编写了以下测试函数:
[FunctionName("GetThings")]
public static HttpResponseMessage Run([HttpTrigger(AuthorizationLevel.User, "GET", Route = null)]HttpRequestMessage req, TraceWriter log)
{
log.Info("Getting all the things");
var identity = ClaimsPrincipal.Current.Identity;
return identity.IsAuthenticated ?
req.CreateResponse(HttpStatusCode.Unauthorized, "Not authenticated!") :
req.CreateResponse(HttpStatusCode.OK, $"Hi {identity.Name}!");
}
Run Code Online (Sandbox Code Playgroud)
目前,当我尝试直接点击端点时,我会被重定向到登录页面......所以我猜这部分是有效的.我如何生成/检索用户令牌,将请求发送到函数或在服务器上处理它们并不清楚.
救命?
背景:我部署了一个 Azure Function App,并使用 AAD 启用了应用服务身份验证 (easyauth),并连接到 Azure AD B2C 租户。一切都很顺利并且符合预期。也就是说,我遇到了一个新场景,我想使用相同的功能应用程序来支持该场景,但无需打开身份验证。具体来说,我希望匿名调用一个特定函数(甚至可能在函数代理后面)。
问题:是否可以在同一功能应用程序中禁用特定功能的身份验证,而其他所有功能都已强制执行身份验证?
我尝试过将“请求未经身份验证时采取的操作”更改为“允许匿名请求(无操作) ”的想法,但这让我在需要身份验证的每个其他功能中以某种方式完成任务,确保请求实际上经过身份验证的东西。请注意,我不知道在这种情况下我必须做什么。
最糟糕的情况是,我将设置一个完全独立的函数应用程序,它只公开我需要匿名调用的单个函数……但是,感觉应该有一个更好的解决方案,不需要我在两个项目之间共享源代码。
摘要:我可以使用 KeyVault 将连接字符串提供给 Blob 存储绑定吗?
我最近将所有连接字符串和机密从 Azure Function 应用程序设置移至 KeyVault。这包括我引用的各种存储帐户的连接字符串。我现在正在研究 Azure Blob 存储绑定,但似乎(根据文档)引用连接字符串的所有方法都解析为应用程序级别设置。
我不想把这个秘密放在两个不同的地方。有没有办法指定存储帐户连接字符串ala KeyVault?
摘要:我直接在 Visual Studio 中编写一个函数,该函数的设计结果是在门户中进行只读函数管理。我的问题是如何轻松地为所述 webhook 创建一个功能键?
上下文:我正在尝试将通用 Webhook 连接到事件网格。这个过程让我走上了一条需要触发 SubscriptionValidationEvent 的道路,这反过来又要求我的 webhook 在 URL 上提供一个“代码”,我假设它是一个功能键。
另外,在我投票之前,我非常清楚这里已经提出和回答了这个问题的多种变体。我已经尝试过所有这些方法,但出于某种原因,涉及使用 Kudu 凭据针对记录不充分的 Keys API 编写 PowerShell 的解决方案似乎都不适合我。
我希望有人知道一种使用 CLI 解决此问题的方法,或者更简单的方法,即functionName.json手动创建一个文件并将其放入 Secrets 目录中。
最后,尽管使用预发布的 EventGrid 绑定对我来说很诱人,但我目前无法在我的环境中推送预发布代码。
azure azure-functions azure-functions-runtime azure-eventgrid azure-functions-core-tools
简而言之:如何在 Visual Studio 中创建部署部署槽与生产槽的发布配置文件?
Long: 当您接到 Sev1 电话,说生产已中断时,您就知道在您刚刚启动集成部署槽的部署之前几分钟。是的,这就是发生在我身上的事情,我一生都无法解释它。
因此,我们为 Azure Function 应用程序提供了一个名为“Int”的部署槽。创建发布配置文件时,我只需使用 Visual Studio 中的“创建新配置文件”向导并选择“选择现有”Azure 应用服务,然后深入“Int”部署槽。看起来很简单。这样做的话会导致 Int和Production 都被部署。这当然是出乎意料的,而且显然是灾难性的。
在门户中进行一些挖掘后,我发现我们的 Azure Function 应用程序的“概述”部分中有一个“下载发布配置文件”按钮。单击它用于 Production 以及 INT 会生成两个具有不同用户、destinationAppUrls 等的单独文件。两者之间唯一相同的是 FTPpublishUrl,但我假设服务器将根据凭证已传入。
事实上,尽管我有两个独特的发布配置文件,一个用于 prod,一个用于 int,部署其中任何一个都会更新生产和我们的部署槽。
以下是我自己尝试修复此问题但无济于事的问题列表:
除了失去我什至没有失去的自动交换功能之外,我想解决这个问题的一种方法是创建一个完全独立的应用程序,从而迫使它正常工作。如果可能的话,我真的想避免这种情况。
在此先感谢您的帮助。
azure ×4