在 Azure Functions 中使用 ASP.NET Identity

问题描述 投票:0回答:2

我正在开发一个以 VueJS 作为前端、Azure Functions 作为后端的 Web 应用程序。该应用程序将供公司内部使用,因此无需登录社交网络。所以我们计划使用 AspNetCore Identity,它是成熟的并且似乎可以与 Functions 一起使用,只是还没有找到如何使用。

我设法让依赖注入为函数工作:

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        string conn = Environment.GetEnvironmentVariable("sqldb_connection");
        
        builder.Services.Configure<IdentityOptions>(options =>
        {
            options.Password.RequireDigit = true;
            options.Password.RequireLowercase = true;
            options.Password.RequireNonAlphanumeric = true;
            options.Password.RequireUppercase = true;
            options.Password.RequiredLength = 6;
            options.Password.RequiredUniqueChars = 1;

            options.SignIn.RequireConfirmedEmail = false;
            options.SignIn.RequireConfirmedPhoneNumber = false;

            options.User.RequireUniqueEmail = true;
        });
        
        builder.Services.AddDbContext<DatabaseContext>(o =>
        {
            o.UseSqlServer(conn ?? throw new NullReferenceException("Environment Variable is Null"));
        });
        
        builder.Services.AddIdentity<IdentityUser, IdentityRole>()
            .AddEntityFrameworkStores<DatabaseContext>();

        builder.Services.AddAuthentication(options =>
        {
            options.AddScheme<JwtBearerHandler>("JWT", "JWT Bearer Handler");
        });
    }
}

我不知道

AddScheme<JwtBearerHandler>(...);
是否是正确的方法,如果是的话,也不知道如何使用它。我发现 this 可以消耗令牌,但是如何创建它?

c# asp.net-core .net-core azure-functions
2个回答
0
投票

Azure Function Http 端点和 Asp.Net Core WebApp 以及配置它们使用 AspIdentity 中间件的方式没有区别。

  1. 配置,
  2. 获取JWT令牌,
  3. 在 Http 客户端中使用 JWT 令牌,例如提供一种基于有效令牌和角色成员身份进行限制的方法

中间件概述:https://www.re-mark-able.net/blogs/2021/05/09/azure-functions-middleware.html

Asp.Net Core 上的示例 AspIdentity:https://weblog.west-wind.com/posts/2021/Mar/09/Role-based-JWT-Tokens-in-ASPNET-Core

关于为已生成的 JWT 令牌提供属性过滤的答案:@BenMorris 的一个很好的答案,带有 github 存储库

要获取 JWT 令牌,请将用户名和密码发送到新的 HttpEndpoint 函数,该函数与上面 Rick Strahls 博客文章中的“身份验证”相匹配。


-1
投票

据我从您的问题中了解到和理解,您想要在Azure功能中设置Azure AD。为此,您只需在门户上进行配置设置即可。

第1步:

enter image description here

第2步:

enter image description here

第三步:

enter image description here

第四步:

enter image description here

后来通过 ARM 模板实现自动化。

您可以参考本教程:Azure Functions 中的 Azure AD 身份验证

© www.soinside.com 2019 - 2024. All rights reserved.