ile çalışmaz. JWT tabanlı güvenliği ASP.Net Core'da uygulamak istiyorum. Tek yapmam gereken şey, şimdilik, Authorization
başlığındaki taşıyıcı belirteçlerini okumak ve bunları kriterlerime göre doğrulamaktır. ASP.Net Kimliğini dahil etmem (ve istemiyorum) istemiyorum. Aslında, gerçekten ihtiyaç duymadıkça, MVC'nin mümkün olduğu kadar çok şey eklemekten kaçınmaya çalışıyorum.ASP.NET Çekirdek Yetkilendirme özniteliği JWT
Bu sorunu gösteren minimal bir proje oluşturdum. Orijinal kodu görmek için düzenleme geçmişine bakın. Authorization
HTTP üstbilgisini karşılık gelen bir taşıyıcı belirteciyle sağlamadıkça, bu örneği/api/simgeleri için tüm istekleri reddetmek için bekliyordum. örneği aslında tüm isteklere izin verir.
Startup.cs
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Configuration;
using Microsoft.AspNetCore.Routing;
using Microsoft.IdentityModel.Tokens;
using System.Text;
using System;
using Newtonsoft.Json.Serialization;
namespace JWTSecurity
{
public class Startup
{
public IConfigurationRoot Configuration { get; set; }
public Startup(IHostingEnvironment env)
{
IConfigurationBuilder builder = new ConfigurationBuilder().SetBasePath(env.ContentRootPath);
Configuration = builder.Build();
}
public void ConfigureServices(IServiceCollection services)
{
services.AddOptions();
services.AddAuthentication();
services.AddMvcCore().AddJsonFormatters(options => options.ContractResolver = new CamelCasePropertyNamesContractResolver());
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("supersecretkey")),
ValidateIssuer = false,
ValidateAudience = false,
ValidateLifetime = true,
ClockSkew = TimeSpan.Zero
}
});
app.UseMvc(routes => routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}"));
}
}
}
Kontrolörler/IconsController.cs
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace JWTSecurity.Controllers
{
[Route("api/[controller]")]
public class IconsController : Controller
{
[Authorize]
public IActionResult Get()
{
return Ok("Some content");
}
}
}
Yetkisiz niteliğini uygulanan yöntem ve sınıfları gösterebilir Json Web Token [Yetkilendirme (AuthenticationSchemes = "Hamiline")] ile Hamiline için Yetki özniteliği Kimlik Doğrulama Düzenleri ekle? –
JWT jeton ara yazılımınız nerede? Hizmetiniz/jeton son noktası veya benzer bir şekilde bir JWT'yi düzgün bir şekilde oluşturuyor mu? – SledgeHammer
Bu noktada, jeton üretmekten umrumda değil, sadece başlıklarda belirteci olmayan her şeyi reddediyorum. –