Comment remplacer l'extension AddJwtBearer dans .NET Core 3.0

19

J'ai le code suivant qui compile et fonctionne dans .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
            };
        });

Dans .NET Core 3.0, j'obtiens l'erreur:

L'erreur CS1061 'AuthenticationBuilder' ne contient pas de définition pour 'AddJwtBearer' et aucune méthode d'extension accessible 'AddJwtBearer' acceptant un premier argument de type 'AuthenticationBuilder' n'a pu être trouvée (il vous manque une directive d'utilisation ou une référence d'assembly?)

quand je regarde la documentation MSFT: https://docs.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.jwtbearerextensions.addjwtbearer?view=aspnetcore-2.2

et essayez d'arriver à la version 3.0, Il semble que ce soit la dernière version où cela est défini. Comment migrer AddJwtBearer vers Core 3.0?

Shelbypereira
la source
partagez votre fichier csproject
JeePakaJP

Réponses:

6

Vous devez inclure le package Microsoft.AspNetCore.Authentication.JwtBearer à votre projet.

Mert Sayın
la source
2
Avez-vous utilisé using Microsoft.AspNetCore.Authentication.JwtBearer;en haut?
Mert Sayın
oui je le pense, je ne pense pas que ce soit aussi simple puisque la documentation MSFT indique clairement que cette méthode n'existe pas en 3.0. Je pense qu'il peut y avoir un moyen d'utiliser l'injection de dépendance au démarrage pour ajouter le JwtBearer, mais je n'ai pas pu le trouver sur Internet.
shelbypereira