validateFirebaseToken function

Middleware validateFirebaseToken()

A middleware that validates the signature and contents of the request token for a Firebase end user.

This middleware builds on top of Dart Frog's bearerAuthentication middleware and provides with token parsing and verification. It expects to find public keys in the request context and uses them to verify the token signature. Don't use this middleware directly but instead use authenticateFirebaseUser.

Implementation

Middleware validateFirebaseToken() {
  return (handler) {
    return (context) async {
      final projectId = await context.read<Future<Project>>();
      return handler.use(
        _validateToken<Pem>(
          audience: projectId.id,
          issuer: issuerFirebasePrefix + projectId.id,
          requiredAlgorithm: 'RS256',
          requireKeyId: true,
          verifyFirebaseClaims: true,
        ),
      )(context);
    };
  };
}