NAME

Punk::OAuth2 - OAuth2 and OpenID Connect for Punk applications

VERSION

Version 0.05

SYNOPSIS

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'),
	scope         => 'openid email profile',
};

oauth2_login '/auth' => {
	on_login => 'Auth#on_login',
	base_url => 'https://app.example.com',
};

1;

DESCRIPTION

Punk::OAuth2 gives a Punk application the client side of OAuth2 and OpenID Connect: "Log in with ..." against Google, GitHub, or any OIDC provider, using the authorization code flow with PKCE, signed state, and id_token verification through Crypt::JWS.

The behaviour lives in Punk::Plugin::OAuth2; this module is the distribution's version anchor and documentation front door.

SEE ALSO

Punk::Plugin::OAuth2 - the plugin, keywords, and flow reference

Crypt::JWS - the signature engine

Punk - the web framework

AUTHOR

LNATION, <email at lnation.org>

LICENSE AND COPYRIGHT

This software is Copyright (c) 2026 by LNATION <email@lnation.org>.

This is free software, licensed under:

The Artistic License 2.0 (GPL Compatible)