bshaffer / oauth2-server-httpfoundation-bridge
A bridge to HttpFoundation for oauth2-server-php
Installs: 2 054 803
Dependents: 17
Suggesters: 0
Security: 0
Stars: 51
Watchers: 4
Forks: 46
Open Issues: 0
Requires
- php: >=8.0
- bshaffer/oauth2-server-php: ^1.13
- symfony/http-foundation: ^5.4||^6.0||^7.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 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": {
"bshaffer/oauth2-server-httpfoundation-bridge": "v1.0",
...
},
...
}
And then run composer.phar install
Match tags with the oauth2-server-php library when possible.
v1.1
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 Brent Shaffer (bshafs gmail com) for more information