ASP.NET Core-Erweiterung zum Konfigurieren der benutzerdefinierten Token-Authentifizierung

dotnet add package Wd3w.AspNetCore.TokenAuthentication
CustomTokenAuthServiceWas auch immer Ihre Authentifizierungsinfrastruktur ist, implementieren Sie einfach diese Schnittstelle und registrieren Sie sie als Dienst.
public class CustomTokenAuthService : ITokenAuthService
{
private CustomDb _db { get ; set ; }
public CustomTokenAuthService ( CustomDb db )
{
_db = db ;
}
public async Task < bool > IsValidateAsync ( string token )
{
return await _db . AccessTokens . AnyAsync ( accessToken => accessToken . Key == token ) ;
}
public async Task < ClaimsPrincipal > GetPrincipalAsync ( string token )
{
// Do create your own custom claims pricipal object and return them;
return new .. .
}
} AddTokenAuthenticationScheme<TService> ein benutzerdefiniertes Token-Schema zum Authentifizierungs-Builder hinzu Realm , TokenLength , Diese Eigenschaft ist eine erforderliche Eigenschaft für den funktionierenden Authentifizierungshandler.
services . AddAuthentication ( "Bearer" )
. AddTokenAuthenticationScheme < CustomTokenAuthService > ( "Bearer" , new TokenAuthenticationConfiguration
{
Realm = "www.example.com/sign-in" ,
TokenLength = 21 ,
// AuthenticationType = "Bearer" - this value is optional, default is from scheme parameter value.
} ) ; AuthorizeAttribute an Ihren Controller oder Ihre Aktionsmethoden an. [ ApiController ( "[controller]" ) ]
public class SomeController : ControllerBase
{
[ HttpGet ]
[ Authorize ]
public Task < ActionResult > GetSomethingAsync ( )
{
return Task . FromResult ( Ok ( ) ) ;
}
} Wenn Sie eine benutzerdefinierte Validierungsnachricht für das Authentifizierungstoken bereitstellen müssen, lösen Sie einfach AuthenticationFailException auf ITokenAuthService.IsValidateAsync aus
public class CustomTokenAuthService : ITokenAuthService
{
public async Task < bool > IsValidateAsync ( string token )
{
throw new AuthenticationFailException ( "invalid_format" , "access token couldn't have any special characters." ) ;
}
} Diese Strategie zur Paketversionierung folgt der AspNetCore-Paketversion. Wenn es eine neue Version von AspNetCore gibt, wird auch dieses Paket aktualisiert.
Die einzige Nebenversion ist die nicht übereinstimmende AspNetCore-Version, die zur Behebung von Fehlern und einigen Änderungen verwendet wird.
MIT-Lizenz
Copyright (c) 2020 WDWWW
Hiermit wird jeder Person, die eine Kopie dieser Software und der zugehörigen Dokumentationsdateien (die „Software“) erhält, kostenlos die Erlaubnis erteilt, mit der Software ohne Einschränkung zu handeln, einschließlich und ohne Einschränkung der Rechte zur Nutzung, zum Kopieren, Ändern und Zusammenführen , Kopien der Software zu veröffentlichen, zu verteilen, unterzulizenzieren und/oder zu verkaufen und Personen, denen die Software zur Verfügung gestellt wird, dies zu gestatten, vorbehaltlich der folgenden Bedingungen:
Der obige Urheberrechtshinweis und dieser Genehmigungshinweis müssen in allen Kopien oder wesentlichen Teilen der Software enthalten sein.
DIE SOFTWARE WIRD „WIE BESEHEN“ ZUR VERFÜGUNG GESTELLT, OHNE JEGLICHE AUSDRÜCKLICHE ODER STILLSCHWEIGENDE GEWÄHRLEISTUNG, EINSCHLIESSLICH, ABER NICHT BESCHRÄNKT AUF DIE GEWÄHRLEISTUNG DER MARKTGÄNGIGKEIT, EIGNUNG FÜR EINEN BESTIMMTEN ZWECK UND NICHTVERLETZUNG. IN KEINEM FALL SIND DIE AUTOREN ODER COPYRIGHT-INHABER HAFTBAR FÜR JEGLICHE ANSPRÜCHE, SCHÄDEN ODER ANDERE HAFTUNG, WEDER AUS EINER VERTRAGLICHEN HANDLUNG, AUS unerlaubter Handlung ODER ANDERWEITIG, DIE SICH AUS, AUS ODER IN ZUSAMMENHANG MIT DER SOFTWARE ODER DER NUTZUNG ODER ANDEREN HANDELN IN DER SOFTWARE ERGEBEN SOFTWARE.