- composer require bshaffer/oauth2-server-php and
- composer require bshaffer/oauth2-server-httpfoundation-bridge
Seed your database using the provided script : Download test database contents from the link given below and add it in tables. (https://github.com/julien-c/laravel-oauth2-server/commit/8895c54cbf8ea8ba78aafab53a5a0409ce2f1ba2 ) (php artisan db:seed)
- Add the code give below in App Service Provider file. ( app->providers->AppServiceProvider.php ) or create a new service provider and add it.
public function register()
{
App::singleton('oauth2', function()
{
$storage = new OAuth2\Storage\Pdo(array('dsn' => 'mysql:dbname=laravel_test;host=localhost', 'username' => 'root', 'password' => ''));
$server = new OAuth2\Server($storage);
$server->addGrantType(new OAuth2\GrantType\ClientCredentials($storage));
$server->addGrantType(new OAuth2\GrantType\UserCredentials($storage));
$server->addGrantType(new OAuth2\GrantType\RefreshToken($storage));
return $server;
});
}}
To generate & regenerate token :
- Add the code give below in routes file
Route::post('oauth/token', function()
{
$bridgedRequest = OAuth2\HttpFoundationBridge\Request::createFromRequest(Request::instance());
$bridgedResponse = new OAuth2\HttpFoundationBridge\Response();
$bridgedResponse = App::make('oauth2')->handleTokenRequest($bridgedRequest, $bridgedResponse);
return $bridgedResponse;
});
Parameters used to generate token:URL : http://localhost:8000/api/oauth/token
Headers Parameters:
- Authorization → Basic dGVzdGNsaWVudDp0ZXN0cGFzcw== [ Basic base64_encode(client_id:client_password) ]
- grant_type → password
- username → user's name
- password → user's password
| { "access_token": "9cf3edc9f6d7437712a0f344872b04641eb336eb", "expires_in": 3600, "token_type": "Bearer", "scope": null, "refresh_token": "5d975d306fb0c28813caf2c79916890a2f4dbfe4" } |
Parameters used to re-generate token:
URL : http://localhost:8000/api/oauth/token
Headers Parameters:
- Authorization → Basic dGVzdGNsaWVudDp0ZXN0cGFzcw== [ Basic base64_encode(client_id:client_password) ]
- grant_type → refresh_token
- refresh_token → refresh token stored in oauth_refresh_tokens table
| { "access_token": "205edda287528d136d2ec0be32d8b5e1b572cc77", "expires_in": 3600, "token_type": "Bearer", "scope": null } |
To authenticate token and to get token details (Authentication Server):
- Add the code give below in routes file
Route::get('private', function()
{
$bridgedRequest = OAuth2\HttpFoundationBridge\Request::createFromRequest(Request::instance());
$bridgedResponse = new OAuth2\HttpFoundationBridge\Response();
if (App::make('oauth2')->verifyResourceRequest($bridgedRequest, $bridgedResponse)) {
$token = App::make('oauth2')->getAccessTokenData($bridgedRequest);
return Response::json(array(
'private' => 'stuff',
'user_id' => $token['user_id'],
'client' => $token['client_id'],
'expires' => $token['expires'],
));
}
else
{
return Response::json(array(
'error' => $bridgedResponse->getParameter('error'),
'error_description' => $bridgedResponse->getParameter('error_description'),
), $bridgedResponse->getStatusCode());
}
});
Parameters used to authenticate token:
URL : http://localhost:8000/api/ private
Headers Parameters:
Authorization → Bearer 9b50c978cca15802000beaf13ef95c33e14f1a81 [Bearer Token]
| { "private": "stuff", "user_id": "bshaffer", "client": "testclient", "expires": 1478822036 } |
No comments:
Post a Comment