Azure Function V2 JWT - AD身份验证

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (244)

我正在尝试验证Azure Functions v2。我收到了以下错误 Microsoft.AspNetCore.Authentication.Core: No authentication handler is registered for the scheme 'WebJobsAuthLevel'. The registered schemes are: Bearer. Did you forget to call AddAuthentication().Add[SomeAuthHandler]("WebJobsAuthLevel",...)?.

下面是我在Startup.cs中使用的代码

    public class Startup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder builder)
        {
            builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
                    .AddJwtBearer(o =>
                    {
                        o.RequireHttpsMetadata = false;
                        o.SaveToken = true;
                        o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                        {
                            RequireSignedTokens = true,
                            ValidateAudience = true,
                            ValidateIssuer = true,
                            ValidAudience = "https://",
                            ValidIssuer = "https://"

                        };
                    });
        }

    }

我错过了什么吗?

我改为下面的代码。仍然没有用。

    public class Startup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder builder)
        {
            builder.Services.AddAuthentication()
                    .AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,o =>
                    {
                        o.Audience = "https://*******************.azurewebsites.net/";
                        o.Authority = "http://localhost:****";
                        o.RequireHttpsMetadata = false;
                        o.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
                        {
                            RequireSignedTokens = true,
                            ValidAudience = "https://***************.azurewebsites.net/",
                            ValidateAudience = true,
                            ValidIssuer = "https://sts.windows.net/***************-5********2**/",
                            ValidateIssuer = true,
                            ValidateIssuerSigningKey = true,
                            ValidateLifetime = true
                        };
                    });
        }

    }

更改了代码,但仍然得到相同的错误。我缺少哪一个?

提问于
用户回答回答于

请考虑使用Azure应用服务身份验证/授权功能(也称为非正式的EasyAuth)。如果您遵循Azure门户中的快速流程,它将为您的功能应用程序创建AAD V1应用程序注册,并自动配置您的应用程序以允许使用AAD进行身份验证。如果您设置Action to take when request is not authenticatedLogin with Azure Active Directory,则只有经过身份验证的请求才有权向您的应用程序发出任何请求。

EasyAuth内置支持接受AAD应用注册的承载令牌,以及其他OAuth和Open-ID Connect流程。通过此功能,您不需要在您的端部添加任何代码,它将全部由Azure平台处理。

扫码关注云+社区

领取腾讯云代金券