dartapi_auth 0.0.1 copy "dartapi_auth: ^0.0.1" to clipboard
dartapi_auth: ^0.0.1 copied to clipboard

DartAPI Auth is a lightweight and extensible authentication package for Dart backend applications. It provides JWT-based authentication with secure access and refresh tokens, middleware protection, a [...]

DartAPI Auth #

DartAPI Auth is a lightweight authentication package for Dart-based backend applications. It provides JWT-based authentication with built-in support for access tokens, refresh tokens, and middleware protection.

🚀 Features #

  • JWT Authentication (Signed JSON Web Tokens using dart_jsonwebtoken)
  • Access & Refresh Tokens (With Expiry & Rotation Support)
  • Issuer (iss) & Audience (aud) Validation for Security
  • Middleware Protection for Securing Routes
  • Unit Tested for Maximum Reliability

📌 Installation #

Add dartapi_auth as a dependency in your Dart project:

dart pub add dartapi_auth

Or, add it manually to your pubspec.yaml:

dependencies:
  dartapi_auth: ^1.0.0

🔑 Usage #

1️⃣ Setting Up JwtService #

import 'package:dartapi_auth/jwt_service.dart';

void main() {
  final jwtService = JwtService(
    accessTokenSecret: 'your-very-secure-secret',
    refreshTokenSecret: 'your-super-secure-refresh-secret',
    issuer: 'dartapi-auth',
    audience: 'dartapi-users',
  );

  // ✅ Generate Access Token
  final accessToken = jwtService.generateAccessToken(claims: {
    'sub': 'user-123',
    'username': 'john_doe',
  });

  print('Access Token: \$accessToken');
}

2️⃣ Verifying Access Tokens #

final payload = jwtService.verifyAccessToken(accessToken);
if (payload != null) {
  print('Token is valid! User: \${payload['username']}');
} else {
  print('Invalid token!');
}

3️⃣ Generating & Verifying Refresh Tokens #

final refreshToken = jwtService.generateRefreshToken(accessToken: accessToken);
final verifiedPayload = jwtService.verifyRefreshToken(refreshToken);

if (verifiedPayload != null) {
  print('Refresh Token Verified! User: \${verifiedPayload['username']}');
} else {
  print('Invalid Refresh Token!');
}

4️⃣ Protecting Routes with Authentication Middleware #

import 'package:dartapi_auth/auth_middleware.dart';
import 'package:shelf/shelf.dart';
import 'package:shelf/shelf_io.dart' as io;

void main() async {
  final handler = Pipeline()
      .addMiddleware(authMiddleware(jwtService))
      .addHandler((Request request) {
    final user = request.context['user'];
    return Response.ok('Hello, \${user?['username']}!');
  });

  final server = await io.serve(handler, 'localhost', 8080);
  print('🚀 Server running on http://localhost:8080');
}

Example Login Response:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ...",
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ...",
  "expires_in": 3600
}

🛠 Testing the Package #

Run tests using:

dart test

📜 License #

This package is open-source and licensed under the BSD-3-Clause License.

© 2025 Akash G Krishnan. All rights reserved.

1
likes
0
points
163
downloads

Publisher

verified publisherakashgk.com

Weekly Downloads

DartAPI Auth is a lightweight and extensible authentication package for Dart backend applications. It provides JWT-based authentication with secure access and refresh tokens, middleware protection, and validation mechanisms. The package ensures security through issuer and audience validation, expiration handling, and signature verification. Ideal for API authentication in Dart projects.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

dart_jsonwebtoken, shelf

More

Packages that depend on dartapi_auth