Cómo reemplazar la extensión AddJwtBearer en .NET Core 3.0

19

Tengo el siguiente código que compila y funciona en .NET Core 2.2:

  byte[] key = Encoding.ASCII.GetBytes(Constants.JWT_SECRET); 
        services.AddAuthentication(x =>
        {
            x.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
            x.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
        })
        .AddJwtBearer(x =>
        {
            x.RequireHttpsMetadata = false;
            x.SaveToken = true;
            x.TokenValidationParameters = new TokenValidationParameters
            {
                ValidateIssuerSigningKey = true,
                IssuerSigningKey = new SymmetricSecurityKey(key),
                ValidateIssuer = false,
                ValidateAudience = false
            };
        });

En .NET Core 3.0 obtengo el error:

El error CS1061 'AuthenticationBuilder' no contiene una definición para 'AddJwtBearer' y no se puede encontrar ningún método de extensión accesible 'AddJwtBearer' que acepte un primer argumento del tipo 'AuthenticationBuilder' (¿falta una directiva de uso o una referencia de ensamblado?)

cuando miro la documentación de MSFT: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

e intenta llegar a la versión 3.0, parece que esta es la última versión donde está definida. ¿Cómo migro AddJwtBearer a Core 3.0?

shelbypereira
fuente
comparte tu archivo csproject
JeePakaJP

Respuestas:

6

Debe incluir el paquete Microsoft.AspNetCore.Authentication.JwtBearer en su proyecto.

Mert Sayın
fuente
2
¿Usaste using Microsoft.AspNetCore.Authentication.JwtBearer;en la parte superior?
Mert Sayın
sí, no creo que sea tan simple ya que la documentación de MSFT establece claramente que este método no existe en 3.0. Creo que puede haber alguna forma de usar la Inyección de dependencia en el inicio para agregar JwtBearer, pero no he podido encontrarla en Internet.
shelbypereira