是否可以在特定的 Azure 功能上禁用 AAD Auth?

Tha*_*ole 5 authentication azure azure-active-directory azure-functions

背景:我部署了一个 Azure Function App,并使用 AAD 启用了应用服务身份验证 (easyauth),并连接到 Azure AD B2C 租户。一切都很顺利并且符合预期。也就是说,我遇到了一个新场景,我想使用相同的功能应用程序来支持该场景,但无需打开身份验证。具体来说,我希望匿名调用一个特定函数(甚至可能在函数代理后面)。

问题:是否可以在同一功能应用程序中禁用特定功能的身份验证,而其他所有功能都已强制执行身份验证?

我尝试过将“请求未经身份验证时采取的操作”更改为“允许匿名请求(无操作) ”的想法,但这让我在需要身份验证的每个其他功能中以某种方式完成任务,确保请求实际上经过身份验证的东西。请注意,我不知道在这种情况下我必须做什么。

最糟糕的情况是,我将设置一个完全独立的函数应用程序,它只公开我需要匿名调用的单个函数……但是,感觉应该有一个更好的解决方案,不需要我在两个项目之间共享源代码。

Chr*_*lum 6

更新:删除了对 URL 授权规则预览功能的引用,该功能已停止使用。下面提供了新信息。

您可以使用 Easy Auth 的 ARM 设置启用对各个 URL 的匿名访问globalValidation.excludedPaths。该数组中的任何路径都不会检查全局授权规则,因此请谨慎使用。

例子:

{
    "globalValidation": {
        "unauthenticatedClientAction": "RejectWith401",
        "redirectToProvider": "aad",
        "excludedPaths": [
            "/api/MyAnonymousHttpTriggerFunction"
        ]
    },
}
Run Code Online (Sandbox Code Playgroud)

我不认为门户或 CLI 支持已经为此启用,但您应该能够直接在 ARM 下进行设置Microsoft.Web/sites/<siteName>/config/authsettingsV2。如果你想手动测试它,我建议设置一个应用程序并使用Azure 资源管理器更新这些设置。

如果您使用基于文件的配置(高级),则适用相同的 JSON 设置,并且您可以在此处找到文档。