Aus öffentlichen Paketdaten erstellte Orientierung.
Eine einfache Dart-Implementierung zum Erstellen, Signieren und Überprüfen von JSON-Web-Token (JWT) mit vollständiger Unterstützung für alle Standardalgorithmen. Sie ermöglicht sichere Token-Verwaltung über mehrere Plattformen hinweg und ist ideal für Authentifizierungs- und Autorisierungsabläufe in Flutter und anderen Dart-Anwendungen. Das Paket ist leichtgewichtig, gut dokumentiert und einfach zu integrieren, ohne die Sicherheit zu beeinträchtigen.
Anwendungsfälle
Benutzerauthentifizierung
API-Autorisierung
Sichere Sitzungsverwaltung
Tokenbasierte Zugriffssteuerung
Dienstübergreifende Kommunikation
Hauptmerkmale
Unterstützt alle JWT-Algorithmen
Einfach zu verwendende API
Plattformübergreifende Kompatibilität
Eingebaute Überprüfung
Sichere Token-Erzeugung
Geeignet für
Flutter-Apps, die Authentifizierung erfordern
Backend-Dienste, die JWT verwenden
Mobile und Web-Anwendungen
APIs, die sichere Token erfordern
Entwickler, die Einfachheit und Sicherheit priorisieren
Hinweise
Erfordert sorgfältige Schlüsselverwaltung
Nicht geeignet für leistungsstarke, token-intensive Workloads
Hängt von der richtigen Konfiguration ab, um Schwachstellen zu vermeiden
Beschränkt auf JWT-spezifische Anwendungsfälle
Keine integrierte Token-Ablaufverwaltung über Standardansprüche hinaus
Original-README
Originaler README-Schnappschuss aus dem verknüpften Quell-Repository. Aktuelle Inhalte finden Sie im Repository.
JSON Web Token (JWT)
An easy to use JSON Web Token implementation in Dart (all algorithms supported).
JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims securely between two parties.
dart_jsonwebtoken allows you to sign, decode and verify JWT.
Examples
Check out the Example File for a full example code of all the different algorithms.
You can also check out the jwt.io website for more information.
// Generate a JSON Web Token// You can provide the payload as a key-value map or a stringfinal jwt = JWT(
// Payload
{
'id': 123,
'server': {
'id': '3e4fc296',
'loc': 'euw-2',
}
},
issuer: 'https://github.com/jonasroussel/dart_jsonwebtoken',
);
// Sign it (default with HS256 algorithm)final token = jwt.sign(SecretKey('secret passphrase'));
print('Signed token: $token\n');
Verifying a JWT
try {
// Verify a token (SecretKey for HMAC & PublicKey for all the others)final jwt = JWT.verify(token, SecretKey('secret passphrase'));
print('Payload: ${jwt.payload}');
} onJWTExpiredException {
print('jwt expired');
} onJWTExceptioncatch (ex) {
print(ex.message); // ex: invalid signature
}
Decoding without verification
You can decode a token without checking its signature (e.g. for inspection). Do not use this for authorization—always verify with JWT.verify when trusting the token.
final jwt = JWT.decode(token);
print('Payload: ${jwt.payload}');
Key creation for all algorithms
The raw PEM content below is for learning only. In production, read private and public keys from files and pass their contents (as strings) to the constructors.
// HS256, HS384, HS512final hmacKey = SecretKey('secret passphrase');
// RS256, RS384, RS512, PS256, PS384, PS512final rsaPrivKey = RSAPrivateKey('''
-----BEGIN RSA PRIVATE KEY-----
MIIEogIBAAKCAQEAq5QLAv9kYTgelglIhC17KdfUoinkwvQ4F0TZAp7qgmu19dCx
...
-----END RSA PRIVATE KEY-----
''');
// You can also extract the public key from a certificate with RSAPublicKey.cert(...)final rsaPubKey = RSAPublicKey('''
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq5QLAv9kYTgelglIhC17
...
-----END PUBLIC KEY-----
'''
);
// ES256, ES256K, ES384, ES512final ecPrivKey = ECPrivateKey('''
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgevZzL1gdAFr88hb2
...
-----END PRIVATE KEY-----
''');
// You can also extract the public key from a certificate with ECPublicKey.cert(...)final ecPubKey = ECPublicKey('''
-----BEGIN PUBLIC KEY-----
MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEEVs/o5+uQbTjL3chynL4wXgUg2R9
...
-----END PUBLIC KEY-----
''');
// EdDSAfinal edPrivKey = EdDSAPrivateKey.fromPEM('''-----BEGIN PRIVATE KEY-----
MC4CAQAwBQYDK2VwBCIEICXCjBHvjArjXquUI5jo3x5SHI4ofZA2azwJ39IC/Qct
-----END PRIVATE KEY-----
''');
final edPubKey = EdDSAPublicKey.fromPEM('''-----BEGIN PUBLIC KEY-----
MCowBQYDK2VwAyEAEi7MNW0Q9T83UA3Rw+8DbspMgqeuxCqa2wXaWS+tHqY=
-----END PUBLIC KEY-----
''');
Supported Algorithms
JWT Algorithms
Digital Signature or MAC Algorithm
HS256
HMAC using SHA-256 hash algorithm
HS384
HMAC using SHA-384 hash algorithm
HS512
HMAC using SHA-512 hash algorithm
PS256
RSASSA-PSS using SHA-256 hash algorithm
PS384
RSASSA-PSS using SHA-384 hash algorithm
PS512
RSASSA-PSS using SHA-512 hash algorithm
RS256
RSASSA-PKCS1-v1_5 using SHA-256 hash algorithm
RS384
RSASSA-PKCS1-v1_5 using SHA-384 hash algorithm
RS512
RSASSA-PKCS1-v1_5 using SHA-512 hash algorithm
ES256
ECDSA using P-256 curve and SHA-256 hash algorithm
ES256K
ECDSA using secp256k curve and SHA-256 hash algorithm
ES384
ECDSA using P-384 curve and SHA-384 hash algorithm
ES512
ECDSA using P-521 curve and SHA-512 hash algorithm
EdDSA
EdDSA using ed25519 curve and SHA-512 hash algorithm