micropole-idea / oauth2-server-httpfoundation-bridge
Symfony 4 bridge to HttpFoundation for oauth2-server-php
Requires
- php: >=7.4
- ext-json: *
- bshaffer/oauth2-server-php: >=0.9
- symfony/http-foundation: 4.4.x
Requires (Dev)
- phpunit/phpunit: ^9.5
README
Fork A bridge to HttpFoundation for oauth2-server-php.
oauth2-server-httpfoundation-bridge
is a wrapper for oauth2-server-php
which returns Symfony\Component\HttpFoundation\Response
instead of OAuth2\Response
, and uses Symfony\Component\HttpFoundation\Request
instead of OAuth2\Request
.
If you are integrating OAuth2 into a Silex, Symfony, or Laravel 4 app, (or any app using HttpFoundation
), this will make your application much cleaner
Installation
Composer is the best way to install this library. Add this line to composer.json:
{
"require": {
"micropole-idea/oauth2-server-httpfoundation-bridge": "v1.0",
...
},
...
}
And then run composer install
Match tags with the oauth2-server-php library when possible.
Creating the request
Creating the request object is the same as before, except now you use the
OAuth2\HttpFoundationBridge\Request
class:
$request = OAuth2\HttpFoundationBridge\Request::createFromGlobals(); $app->run($request);
The Request object is now compatible with both HttpFoundation and oauth2-server-php
// getBaseUrl is unique to HttpFoundation $baseUrl = $request->getBaseUrl(); // call oauth server $server->grantAccessToken($request);
If the HttpFoundation request already exists, you can use the static createFromRequest
function to build the OAuth2\HttpFoundationBridge\Request instance:
use OAuth2\HttpFoundationBridge\Request as BridgeRequest; // in your controller layer, the $request object is passed in public function execute(Request $request) { //... (instantiate server/response objects) $bridgeRequest = BridgeRequest::createFromRequest($request); $server->grantAccessToken($bridgeRequest, $response); }
Creating the response
The OAuth2\HttpFoundationBridge\Response
object extends Symfony\Component\HttpFoundation\JsonResponse
,
and implements OAuth2\ResponseInterface
, allowing you to pass this in and return it from your controllers.
In Symfony and Silex, this will be all that is needed to integrate the server:
use OAuth2\HttpFoundationBridge\Response as BridgeResponse; // in your controller layer, the $request object is passed in public function execute(Request $request) { //... (instantiate server/response objects) $response = new BridgeResponse(); return $server->handleTokenRequest($request, $response); }
Note: this object will return JSON. Implement your own class using
OAuth2\ResponseInterface
to support a different content-type.
Examples
- OAuth2 Request - Silex Integration
- OAuth2 Response - Silex Integration
Contact
Please contact Brent Shaffer (bshafs gmail com) for more information