Net::OAuth2::AuthorizationServer::PasswordGrant3pm
Oauth2 resource owner password credentials grant you "must not" use this grant type (see <https://tools.ietf.org/html/draft-ietf-oauth-security-topics-15>)
Usage
my $Grant = Net::OAuth2::AuthorizationServer::PasswordGrant->new(clients => {TrendyNewService => {client_secret => 'TopSecretClientSecret',scopes => {post_images => 1,annoy_friends => 1,},},},users => {bob => 'j$s03R#!\fs',tom => 'dE0@@s^tWg1',},);# verify a client and username against known clients/usersmy ( $client_id,$error,$scopes,$username ) = $Grant->verify_user_password(client_id => $client_id,client_secret => $client_secret,username => $username,password => $password,scopes => [ qw/ list of scopes / ],);if ( ! $Grant->login_resource_owner ) {# resource owner needs to login...}# have resource owner confirm (and perhaps modify) scopesmy ( $confirmed,$error,$scopes_ref ) = $Grant->confirm_by_resource_owner(client_id => $client_id,scopes => [ qw/ list of scopes / ],);# generate a tokenmy $token = $Grant->token(client_id => $client_id,scopes => $scopes_ref,type => 'access', # one of: access, refreshredirect_uri => $redirect_uri,user_id => $user_id, # optionaljwt_claims_cb => sub { ... }, # optional, see jwt_claims_cb in Manual);# store access token$Grant->store_access_token(client_id => $client,access_token => $access_token,refresh_token => $refresh_token,scopes => $scopes_ref,old_refresh_token => $old_refresh_token,);# verify an access tokenmy ( $is_valid,$error ) = $Grant->verify_access_token(access_token => $access_token,scopes => $scopes_ref,is_refresh_token => 0,);# or:my ( $oauth_details,$error ) = $Grant->verify_token_and_scope(refresh_token => $refresh_token,auth_header => $http_authorization_header,);
Overview
This module implements the OAuth2 "Resource Owner Password Credentials Grant" flow as described at <http://tools.ietf.org/html/rfc6749#section-4.3>.
Constructor arguments
Along with those detailed at "CONSTRUCTOR ARGUMENTS" in Net::OAuth2::AuthorizationServer::Manual the following are supported by this grant type:
users
A hashref of client details keyed like so:
$username => $password
Callback functions
The following callbacks are supported by this grant type:
login_resource_owner_cbconfirm_by_resource_owner_cbverify_client_cbverify_user_password_cbstore_access_token_cbverify_access_token_cb
Please see "CALLBACK FUNCTIONS" in Net::OAuth2::AuthorizationServer::Manual for documentation on each callback function.
Releases
4 releases since Debian 10 (Buster); the text changed 2 times.