In meinem Asp.Net Core Web API verwendete ich Identität mit JWT-Träger-Authentifizierung. Es funktionierte reibungslos ohne viel Aufhebens. Hier ist der Code für das,Dotnet-Core 2.0 Verwendung der Identität mit JwtBearer-Authentifizierung
ConfigureServices():
services.AddIdentity<ApplicationUser, IdentityRole<int>>()
.AddEntityFrameworkStores<DataContext, int>()
.AddDefaultTokenProviders();
konfigurieren():
app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters()
{
ValidIssuer = "localhost:4200",
ValidAudience = "localhost:4200",
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey_GetThisFromAppSettings")),
ValidateLifetime = true
}
});
Und heute habe ich ein Upgrade auf Core 2.0 und die gesamte Technik .net Stapel. Von der begrenzten Hilfe dort zur Verfügung heraus habe ich Code wie folgt geändert ..
ConfigureServices()
services.AddIdentity<ApplicationUser, ApplicationRole>()
.AddEntityFrameworkStores<DataContext>()
.AddDefaultTokenProviders();
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "localhost:4200";
options.Audience = "localhost:4200";
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuerSigningKey = true,
ValidateIssuer = true,
ValidateLifetime = true,
ValidIssuer = "localhost:4200",
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SuperSecretKey_GetThisFromAppSettings"))
};
});
konfigurieren()
app.UseAuthentication();
Nun ist die Authentifizierung nicht funktioniert. Sieht so aus, als wäre es intern so konfiguriert, dass es die Cookie-Authentifizierung verwendet.
Ist noch jemand auf dieses Szenario gestoßen? Jede Hilfe dazu ist wirklich geschätzt!
Danke,
Hey, es hat funktioniert! und vielen Dank. Aber ich habe noch eine Frage. Wissen Sie, wie Sie die Standardumleitung auf die Anmeldeseite während eines nicht autorisierten Zugriffs stoppen können? Anstatt der Umleitung muss ich den HTTP-Statuscode an den Client senden. – Wijitha
Kein Problem, ich nehme an, es gibt bessere Möglichkeiten, aber da Sie Identity und CookieAuthentication als 2. Auth-Schema verwenden, können Sie den Login-Pfad verwenden, da er darauf zurückgreift. services.ConfigureApplicationCookie (Optionen => { Optionen.LoginPath = "/ somecontr/somefunc"; }); und gib zurück, was immer du brauchst. public IActionResult somefunc() return Statuscode (418) –