NAME Plack::Middleware::Auth::OAuth2 - Plack OAuth2 middleware. SYNOPSIS use Plack::Builder; use Plack::App::Env; use Plack::App::Login; my $app = Plack::App::Env->new; builder { enable 'Session'; enable 'Auth::OAuth2', 'client_id' => '__CLIENT_ID__', 'client_secret => '__CLIENT_SECRET__', 'app_login' => Plack::App::Login->new, 'app_login_url' => sub { $_[0]->login_link($_[1]); }, 'logout_path' => 'logout', 'provider' => 'Google', 'redirect_path' => 'code', 'scope' => 'email', ; $app; }; DESCRIPTION This middleware provides OAuth2 authentication for web application. Uses LWP::Authen::OAuth2 for implementation. Prerequisity is use of Plack session management and result is saved to session. ACCESSORS "app_login" Plack application to login. It's required. "app_login_url" Callback to set URL from OAuth2 provider to "app_login()" Plack application. First argument is "app_login()" application. Second argument is $url variable from OAuth2 provider. It's required. "client_id" OAuth2 client id. It's required. "client_secret" OAuth2 client secret. It's required. "logout_path" Logout path for creating of endpoint, which logout from OAuth2. Default value is 'logout' (/logout). "lwp_user_agent" Explicit LWP::UserAgent instance. Default value is LWP::UserAgent instance inside of LWP::Authen::OAuth2. "redirect_path" Redirect path for creating of endpoint, which is created for service provider use to set authentication. It's required. "scope" OAuth2 scopes in string. Requirement is defined by provider. It's optional. "service_provider" Service provider. Possible providers: Dwolla Via module LWP::Authen::OAuth2::ServiceProvider::Dwolla. Google Via module LWP::Authen::OAuth2::ServiceProvider::Google. Line Via module LWP::Authen::OAuth2::ServiceProvider::Line. MediaWiki Via module LWP::Authen::OAuth2::ServiceProvider::MediaWiki. Strava Via module LWP::Authen::OAuth2::ServiceProvider::Strava. Wikimedia Via module LWP::Authen::OAuth2::ServiceProvider::Wikimedia. Withings Via module LWP::Authen::OAuth2::ServiceProvider::Withings. Yahoo Via module LWP::Authen::OAuth2::ServiceProvider::Yahoo. ENDPOINTS Logout Logout endpoint is defined inside of this module by setting "logout_path" (/__LOGOUT_PATH__). Redirect Redirect endpoint is defined inside of this module by setting "redirect_path" (/__REDIRECT_PATH__). SESSION VARIABLES oauth2.obj Value is instance of LWP::Authen::OAuth2 used for authentization. oauth2.service_provider Value is authenticated service provider. oauth2.token_string Value is token string. ERRORS prepare_app(): No OAuth2 'client_id' setting. No OAuth2 'client_secret' setting. No login application. No login url call. No redirect path. No service provider. DEPENDENCIES English, Error::Pure, JSON::XS, LWP::Authen::OAuth2, Plack::Middleware, Plack::Response, Plack::Session, Plack::Util::Accessor. SEE ALSO LWP::Authen::OAuth2 Make requests to OAuth2 APIs. REPOSITORY AUTHOR Michal Josef Špaček LICENSE AND COPYRIGHT © 2020-2022 Michal Josef Špaček BSD 2-Clause License VERSION 0.01