繁体   English   中英

如何在使用 .NET Core 3.1 通过 Visual Studio 2019 开发 Azure 函数时使用 AD 身份验证

[英]How to use AD authentication while developing Azure Functions through Visual Studio 2019 using .NET Core 3.1

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

我在 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 Function 中实现相同的功能。 在这里,我目前已将授权级别设置为匿名,如下所示

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

如何在这里实现 Azure AD 认证?

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

在此处输入图像描述

I have a function contains an http trigger in it, before I enable authentication for the function, I can get response directly by calling url.

我按照此文档为其启用 azure 广告身份验证。

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

在此处输入图像描述

然后选择“使用 azure 广告登录”,点击 azure 广告作为身份验证提供者,跳转到新页面,选择快递并创建新的广告应用程序。 在此处输入图像描述 在此处输入图像描述

保存所有配置后,当我调用上面提到的 url 时,它会要求我登录。

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

Http 触发器可以通过添加配置来设置不同的身份验证级别,那些设置为匿名的不同级别,我们需要在请求中添加参数 url。 文档提供了一个示例,Microsoft 提供的此文档提供了详细信息。

在此处输入图像描述 在此处输入图像描述

==============================update2==================== =========

我找到了另一种可能适合您的解决方案。 这是示例

在 function 代码中添加身份验证模块后,您可以将 function 暴露为 api 在 ZCF04A0172E37B0573FC3F 中这使您的 function 应用程序使用访问令牌调用。 当然,我已经尝试过样品,这是我的经验。

首先,修改 Constants.cs 中的配置,然后创建 azure 广告应用程序并公开 api。 接下来,添加刚刚暴露的api许可。 最后添加用于生成访问令牌的客户端密码。 下面是一些关于我的操作的截图。

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM