The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

OAuth::Lite2::Server::DataHandler - Base class that specifies interface for data handler for your service.

DESCRIPTION

This connects OAuth::Lite2 library to your service.

This specifies an interface to handle data stored in your application. You must inherit this and implement the subroutines according to the interface contract.

SYNOPSIS

    package YourDataHandler;
    
    use strict;
    use warnings;

    use parent 'OAuth::Lite2::Server::DataHandler';

METHODS

init

This method can be implemented to initialize your subclass.

INTERFACES

request

Returns <Plack::Request> object.

validate_client( $client_id, $client_secret, $grant_type )

This method is used by Token Endpoint. This method will be called all the time, regardless of the grant_type setting.

This is the place to check if the client_id and client credentials are valid, as well as checking if the client is allowed to use this grant_type.

If all the checks are successful, return 1. Otherwise return 0.

get_user_id( $username, $password )

This method is used by Token Endpoint, when requested grant_type is 'password'.

The username and password are provided. You should check if the credentials are valid or not.

If the checks are successful, return the user's identifier. The user's identifier is managed by your service.

create_or_update_auth_info( %params )

Create and save new authorization info. Should return OAuth::Lite2::Model::AuthInfo object.

create_or_update_access_token( %params )

Create and save new access token. Should return OAuth::Lite2::Model::AccessToken object.

get_auth_info_by_code( $code )

This method is used when the client obtains an access_token using an authorization-code that was issued by server with user's authorization.

The Web Server Profile requires this interface.

Should return OAuth::Lite2::Model::AuthInfo object.

get_auth_info_by_refresh_token( $refresh_token )

This method is used when the access_token is refreshed.

Should return OAuth::Lite2::Model::AuthInfo object.

get_access_token( $token )

This interface is used on a protected resource endpoint. See Plack::Middleware::Auth::OAuth2::ProtectedResource.

Returns an access token which allows access to the protected attributes. Should return OAuth::Lite2::Model::AccessToken object.

get_auth_info_by_id( $auth_id )

This method is used on a protected resource endpoint. See Plack::Middleware::Auth::OAuth2::ProtectedResource.

This method is called after the get_access_token method. Returns authorization-info that is related to the $auth_id and access-token.

Should return OAuth::Lite2::Model::AuthInfo object.

validate_client_by_id( $client_id )

This hook is called on protected resource endpoint. See Plack::Middleware::Auth::OAuth2::ProtectedResource.

After checking if the token is valid, you can check if the client related the token is valid in this method.

If the validation of the client_id is successful, return 1. Otherwise return 0.

validate_user_by_id( $user_id )

This hook is called on protected resource endpoint. See Plack::Middleware::Auth::OAuth2::ProtectedResource.

After checking if token is valid, you can check if the user related the token is valid in this method.

If the validation of the user is successful, return 1. Otherwise return 0.

get_group_id_by_client_id ( $client_id )

If client_id has group_id, return it.

validate_grouping_scope ( $client_id, $scope )

If scope value is allowed, return 1.

create_server_state ( $client_id )

Create and save OAuth::Lite2::Model::ServerState object.

get_user_id_by_external_assertion ( %params )

This method is used by Token Endpoint, when requested grant_type is 'federation-bearer'.

The external service assertion is provided. You should check if the related external service account is valid or not. If the checks are successful, return the user's identifier. The user's identifier is managed by your service.

AUTHOR

Ryo Ito, <ritou.06@gmail.com>

Lyo Kato, <lyo.kato@gmail.com>

COPYRIGHT AND LICENSE

Copyright (C) 2010 by Lyo Kato

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.8 or, at your option, any later version of Perl 5 you may have available.