JWT sur .NET Core 2.0

J'ai été toute une aventure pour obtenir JWT de travail sur DotNet core 2.0 (pour atteindre aujourd'hui sortie de la version finale d'aujourd'hui). Il y a un tonne de la documentation, mais tous les exemples de code semble être l'utilisation d'Api obsolète et à venir dans les frais de Base, Il est positivement le vertige à comprendre exactement comment il est censé être mis en œuvre. J'ai essayé d'utiliser Jose, mais app. UseJwtBearerAuthentication a été abandonné, et il n'y a pas de documentation sur ce qu'il faut faire ensuite.

Quelqu'un projet open source qui utilise dotnet core 2.0 qui peut tout simplement analyser un JWT de l'autorisation d'en-tête et me permettre d'autoriser des demandes pour un HS256 codé JWT jeton?

La classe ci-dessous ne jette pas des exceptions, mais pas de demandes sont autorisées, et je n'ai pas d'indication pourquoi ils ne sont pas autorisés. Les réponses sont vides 401, il m'indique qu'il n'a pas fait exception, mais que le secret n'est pas de correspondance.

Une chose étrange, c'est que mes jetons sont chiffrés avec la HS256 algorithme, mais je ne vois pas d'indicateur de lui dire de le forcer à utiliser cet algorithme n'importe où.

Ici est la classe I ont jusqu'à présent:

using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json.Linq;
using Microsoft.IdentityModel.Tokens;
using System.Text;
namespace Site.Authorization
{
public static class SiteAuthorizationExtensions
{
public static IServiceCollection AddSiteAuthorization(this IServiceCollection services)
{
var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("SECRET_KEY"));
var tokenValidationParameters = new TokenValidationParameters
{
//The signing key must match!
ValidateIssuerSigningKey = true,
ValidateAudience = false,
ValidateIssuer = false,
IssuerSigningKeys = new List<SecurityKey>{ signingKey },
//Validate the token expiry
ValidateLifetime = true,
};
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(o =>
{
o.IncludeErrorDetails = true;
o.TokenValidationParameters  = tokenValidationParameters;
o.Events = new JwtBearerEvents()
{
OnAuthenticationFailed = c =>
{
c.NoResult();
c.Response.StatusCode = 401;
c.Response.ContentType = "text/plain";
return c.Response.WriteAsync(c.Exception.ToString());
}
};
});
return services;
}
}
}
  • J'ai éteint la signature de la validation sans modification, toutes les demandes à l'aide de [Autoriser] 401
  • Pourriez-vous poster le code complet ? ou un projet de démo j'aimerais voir comment vous avez obtenu ce à travail...
  • github.com/mikepc/jwt-dotnet-core-2.0 🙂
  • J'ai besoin de code pour l'émission de jeton de contrôleur
  • Il y a un autre post tha peut vous aider. stackoverflow.com/a/48295906/8417618