如何在 Azure 函数方法中使用 JWT 验证?

Posted

技术标签:

【中文标题】如何在 Azure 函数方法中使用 JWT 验证?【英文标题】:How to use JWT Validation within Azure Function Merthod? 【发布时间】:2021-09-15 13:51:02 【问题描述】:

我从 API 移植了一些逻辑,我需要能够在 Azure 函数中使用这些逻辑

我需要对 JWT 令牌进行验证

我的函数将具有用户必须具有的特定角色才能从函数中获得响应

我在我的函数启动中得到了这个

        var tokenOptions = configuration.GetSection("JwtIssuerOptions")
            .Get<TokenConfiguration>();
        
        var tokenValidationParameters = new TokenValidationParameters
        
            // The signing key must match!
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = tokenOptions.SecurityKey,
            // Validate the JWT Issuer (iss) claim
            ValidateIssuer = true,
            ValidIssuer = tokenOptions.Issuer,
            // Validate the JWT Audience (aud) claim
            ValidateAudience = true,
            ValidAudience = tokenOptions.Audience,
            // Validate the token expiry
            ValidateLifetime = true,
            // If you want to allow a certain amount of clock drift, set that here:
            ClockSkew = TimeSpan.Zero
        ;
        
        services.Configure<IdentityConfiguration>(configuration.GetSection("IdentityConfiguration"));
        services.AddScoped<CustomJwtBearerEvents>();

        services
            .AddAuthentication(o =>
            
                o.DefaultForbidScheme = JwtBearerDefaults.AuthenticationScheme;
                o.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
            )
            .AddJwtBearer(options =>
            
                options.TokenValidationParameters = tokenValidationParameters;
                options.EventsType = typeof(CustomJwtBearerEvents);
            );

在 API 上下文中,我可以通过中间件包和 [Authorize(Roles="role1")] 来处理这个问题

但是,Azure 函数似乎不支持该功能

如何在 Azure 中实现相同的目标?

我有一个请求,上面已经有一个可供检查的令牌

保罗

【问题讨论】:

【参考方案1】:

以下链接可能会有所帮助。 Azure 过滤器在 azure 中用作属性。

    https://github.com/Azure/azure-webjobs-sdk/wiki/Function-Filters https://markheath.net/post/secure-azure-functions-app-easy-auth-adb2c

【讨论】:

非常感谢我让它与函数属性一起工作

以上是关于如何在 Azure 函数方法中使用 JWT 验证?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Azure API 管理中使用 validate-jwt 策略验证使用 RS256 算法签名的 JWT

如何在 Java 中验证 Azure B2C id 令牌的 JWT 签名?

使用带有 C# 的公钥验证 JWT

如何在不使用库的情况下验证本机 Javascript 中的 Azure OAuth 访问 JWT 令牌?

从 Azure Active Directory 验证 JWT

实现 JWT 身份验证 Azure Function 3.x - 使用 JWT 令牌获取当前用户的声明