azure - 如何使用 .NET Core 3.1 通过 Visual Studio 2019 开发 Azure Functions 时使用 AD 身份验证

标签 azure azure-active-directory azure-functions authorization .net-core-3.1

我正在 .NET Core 3.1 中使用 Visual Studio 2019 开发 Azure Functions。我必须为这些功能实现 Azure AD 身份验证。我知道如何在 ASP.NET Core 3.1 Web 应用程序中使用 AD 身份验证。但是由于Azure Function默认没有提供启动类,那么如何实现相同的逻辑呢?

我在 ASP.NET Core 3.1 Web 应用程序中使用此代码:

public void ConfigureServices(IServiceCollection services)
{
     services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                .AddMicrosoftIdentityWebApi(Configuration, "AzureAd");
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseAuthentication();
    app.UseAuthorization();
}

并在 Controller 方法中添加[Authorize]标签。但是,我无法弄清楚如何在 Azure 函数中实现相同的功能。在这里,我目前已将授权级别设置为匿名,如下所示

public async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, ILogger log)
{
}

这里如何实现Azure AD身份验证?

----更新---- 添加 Tiny-wa 建议的配置后,仍然无法弄清楚为什么当我发送不记名 token 时 Api 会响应 401

enter image description here

最佳答案

我有一个函数包含一个http触发器,在我为该函数启用身份验证之前,我可以通过调用url直接获取响应。

我关注this document为其启用 azure 广告身份验证。

选择您的功能 -> 按进入“身份验证/授权”选项卡 -> 选中“打开”。

enter image description here

然后选择“使用 azure ad 登录”,点击 azure ad 作为身份验证提供商,跳转到新页面,选择 Express 并创建新的广告应用程序。 enter image description here enter image description here

保存所有配置后,当我调用上面的网址方法时,它要求我登录。

==================================更新=============== =====================

Http触发器可以通过添加配置来设置不同的身份验证级别,这些级别设置为匿名,我们需要在请求url中添加参数。这个document提供 sample 和 this one微软提供了详细信息。

enter image description here enter image description here

================================更新2================== ===========

我找到了另一个可能适合您的解决方案。这是sample .

在函数代码中添加身份验证模块后,您可以将该函数公开为 azure ad 中的 api。这使得您的函数应用程序使用访问 token 进行调用。当然我已经尝试过示例,这是我的经验。

首先,修改 Constants.cs 中的配置,然后创建一个 azure 广告应用并公开一个 api。接下来,添加刚才暴露的api权限。最后添加用于生成访问 token 的客户端 key 。以下是我的操作的一些屏幕截图。

enter image description here enter image description here enter image description here enter image description here

关于azure - 如何使用 .NET Core 3.1 通过 Visual Studio 2019 开发 Azure Functions 时使用 AD 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65562921/

相关文章:

Azure V3函数登录另一个类库

node.js - 有没有办法在nodeJS POST API请求中指定本地文件系统路径,我能够使用curl进行api调用,但不能使用nodejs

Azure PHP Web 应用广告集成 请求中指定的回复 URL 不匹配

php - 我在使用 Azure 登录时跳过了权限请求接口(interface)。提供了 'Grant admin consent' 权限。但 MFA 现在禁用

powershell - 通过powershell导入Azure自动化模块

java - 使用 jsch 连接到 azure 中托管的 sftp 服务器时连接重置

azure - 如何在注册期间将用户添加到 Azure AD B2C 中的不同组

.net - Azure逻辑应用程序运行历史记录和触发器历史记录

azure - 能否仅将 Azure AMS V3 用于 DRM key 传送?

azure - 如何创建变量并将其设置为等于特定自定义事件的计数?