reb3r / oauth2-server-httpfoundation-bridge
A bridge to HttpFoundation for oauth2-server-php
Requires
- php: ^8.0
- reb3r/oauth2-server-php: >=0.9
- symfony/http-foundation: ^5.4||^6.0
Requires (Dev)
- phpunit/phpunit: ^9.5
README
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 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": {
"bshaffer/oauth2-server-httpfoundation-bridge": "v1.0",
...
},
...
}
And then run composer.phar install
Match tags with the oauth2-server-php library when possible.
v2.2
is the latest tag.
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 Christian Reber (christian.reber fujitsu com) for more information
Acknowledgements
Very big "Thank you" goes to Brent Shaffer (https://github.com/bshaffer) for the original version which I forked.