Net::O...eGrant(3pm)

πŸ“¦
version 0.28 Β· 3 versions
, in ubuntu noble, ubuntu resolute, ubuntu stonking

πŸ’– 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