Punk-OAuth2 OAuth2 and OpenID Connect client (social login) for the Punk web framework: "Log in with Google / GitHub / any OIDC provider" using the authorization-code flow with PKCE, signed single-use state, and id_token verification through Crypt::JWS. package MyApp; use Punk; use Punk::Plugin::OAuth2; plugin 'OAuth2'; session secret => secret('session_key'), expires => '7d'; oauth2 google => { preset => 'google', client_id => secret('oauth.google_id'), client_secret => secret('oauth.google_secret'), }; oauth2_login '/auth' => { on_login => 'Auth#on_login', base_url => 'https://app.example.com', }; The flow crypto, token exchange, JWKS handling, and id_token verification run in XS over the Crypt::JWS, File::Raw::JSON, and Fetch C ABIs; the Perl layer is Punk registration glue. INSTALLATION perl Makefile.PL make make test make install Requires Crypt::JWS, File::Raw::JSON, and Fetch (their C ABI headers at build time), and Punk 0.04+. SUPPORT AND DOCUMENTATION perldoc Punk::OAuth2 perldoc Punk::Plugin::OAuth2 LICENSE AND COPYRIGHT This software is Copyright (c) 2026 by LNATION . This is free software, licensed under: The Artistic License 2.0 (GPL Compatible)