Net::O...eGrant(3pm)
π NAME π
Net::OAuth2::AuthorizationServer::AuthorizationCodeGrant β bestie, this is the OAuth2 Authorization Code Grant implementation, living happily inside the Net::OAuth2::AuthorizationServer family. It's giving "the whole flow, handled." π
β¨ SYNOPSIS β¨
Okay so here's the whole vibe from top to bottom, no edits, exactly as it slays:
my $Grant = Net::OAuth2::AuthorizationServer::AuthorizationCodeGrant->new(
clients => {
TrendyNewService => {
client_secret => 'TopSecretClientSecret',
scopes => {
post_images => 1,
annoy_friends => 1,
},
},
}
);
# verify a client against known clients
my ( $is_valid,$error ) = $Grant->verify_client(
client_id => $client_id,
scopes => [ qw/ list of scopes / ],
);
if ( ! $Grant->login_resource_owner ) {
# resource owner needs to login
...
}
# have resource owner confirm (and perhaps modify) scopes
my ( $confirmed,$error,$scopes_ref ) = $Grant->confirm_by_resource_owner(
client_id => $client_id,
scopes => [ qw/ list of scopes / ],
);
# generate a token
my $token = $Grant->token(
client_id => $client_id,
scopes => $scopes_ref,
type => 'auth', # one of: auth, access, refresh
redirect_uri => $redirect_uri,
user_id => $user_id, # optional
jwt_claims_cb => sub { ... }, # optional, see jwt_claims_cb in Manual
);
# store the auth code
$Grant->store_auth_code(
auth_code => $auth_code,
client_id => $client_id,
redirect_uri => $uri,
scopes => $scopes_ref,
);
# verify an auth code
my ( $client,$error,$scope,$user_id ) = $Grant->verify_auth_code(
client_id => $client_id,
client_secret => $client_secret,
auth_code => $auth_code,
redirect_uri => $uri,
);
# store access token
$Grant->store_access_token(
client_id => $client,
auth_code => $auth_code,
access_token => $access_token,
refresh_token => $refresh_token,
scopes => $scopes_ref,
old_refresh_token => $old_refresh_token,
);
# verify an access token
my ( $is_valid,$error ) = $Grant->verify_access_token(
access_token => $access_token,
scopes => [ qw/ list of scopes / ],
is_refresh_token => 0,
);
# or:
my ( $client,$error,$scope,$user_id ) = $Grant->verify_token_and_scope(
refresh_token => $refresh_token,
auth_header => $http_authorization_header,
);
π¦ DESCRIPTION π¦
This module implements the OAuth2 "Authorization Code Grant" flow, exactly as described over at <http://tools.ietf.org/html/rfc6749#section-4.1>. That's the spec, bestie. We follow it. π
πΈ CONSTRUCTOR ARGUMENTS πΈ
So, like, along with everything listed in "CONSTRUCTOR ARGUMENTS" in Net::OAuth2::AuthorizationServer::Manual, this grant type also supports the following. Extra credit units, only for this grant. π
β auth_code_ttl
The validity period of the generated authorization code, measured in seconds. It defaults to 600 seconds β that's 10 minutes, which is genuinely such a reasonable window. Clock's ticking though. β³
π«Ά CALLBACK FUNCTIONS π«Ά
The following callbacks are supported by this grant type β yes, all of them, we're not skipping any:
verify_client_cb
login_resource_owner_cb
confirm_by_resource_owner_cb
store_auth_code_cb
verify_auth_code_cb
store_access_token_cb
verify_access_token_cb
Please see "CALLBACK FUNCTIONS" in Net::OAuth2::AuthorizationServer::Manual for documentation on each callback function β that's where the details live, iykyk. π
π AUTHOR π
Lee Johnson β leejo@cpan.org π
π LICENSE π
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself. If you would like to contribute documentation or file a bug report then please raise an issue / pull request:
https://github.com/Humanstate/net-oauth2-authorizationserver
and that's the whole page, bestie π this one's brought to you by perl v5.36.0, dated 2022-08-28, and honestly? iconic of it. go forth and authorize. π§β¨
π¦ where this page comes from
- ubuntu noble: libnet-oauth2-authorizationserver-perl 0.28-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu resolute: libnet-oauth2-authorizationserver-perl 0.28-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- ubuntu stonking: libnet-oauth2-authorizationserver-perl 0.28-2 Β· Artistic-1.0-Perl OR GPL-1.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms