A plugin for implementing an OAuth2 server in CakePHP 3

Overview

OAuth2 Server for CakePHP 3

Software License Build Status

A plugin for implementing an OAuth2 server in CakePHP 3. Built on top of the PHP League's OAuth2 Server. Currently we support the following grant types: AuthCode, RefreshToken, ClientCredentials.

Installation

Installation is done using composer. Run:

$ composer require uafrica/oauth-server

Once composer has installed the package, the plugin needs to be activated by running:

$ bin/cake plugin load -r OAuthServer

Finally the database migrations need to be run.

$ bin/cake migrations migrate --plugin OAuthServer

Configuration

It is assumed that you already have working Form based authentication using the built in CakePHP 3 authentication component. If you do not, please read the authentication chapter.

Set OAuthServer as an authentication adaptor.

In your AppController::beforeFilter() method, add (or modify)

$this->Auth->config('authenticate', [
    'Form',
    'OAuthServer.OAuth'
]);

Change your login method to look as follows:

public function login()
{
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();
        if ($user) {
            $this->Auth->setUser($user);
            $redirectUri = $this->Auth->redirectUrl();
            if ($this->request->query['redir'] === 'oauth') {
                $redirectUri = [
                    'plugin' => 'OAuthServer',
                    'controller' => 'OAuth',
                    'action' => 'authorize',
                    '?' => $this->request->query
                ];
            }
            return $this->redirect($redirectUri);
        } else {
            $this->Flash->error(
                __('Username or password is incorrect'),
                'default',
                [],
                'auth'
            );
        }
    }
}

Alternatively, if you are using the Friends Of Cake CRUD plugin, add

'login' => [
    'className' => 'OAuthServer.Login'
]

to your CRUD actions config.

Usage

The base OAuth2 path is example.com/oauth.

In order to add clients and OAuth scopes you need to create a ClientsController and a ScopesController (Which is not part of this plugin)

The simplest way is to make use of the Friends Of Cake CRUD-View plugin.

Install it by running

$ composer require friendsofcake/bootstrap-ui:dev-master
$ composer require friendsofcake/crud:dev-master
$ composer require friendsofcake/crud-view:dev-master

Then create a ClientsController that looks like:


namespace App\Controller;

use Crud\Controller\ControllerTrait;

/**
 * OauthClients Controller
 *
 * @property \OAuthServer\Model\Table\ClientsTable $Clients
 */
class ClientsController extends AppController
{

    use ControllerTrait;

    public $modelClass = 'OAuthServer.Clients';

    /**
     * @return void
     */
    public function initialize()
    {
        parent::initialize();
        $this->viewClass = 'CrudView\View\CrudView';
        $tables = [
            'Clients',
            'Scopes'
        ];
        $this->loadComponent('Crud.Crud', [
            'actions' => [
                'index' => [
                    'className' => 'Crud.Index',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
                'view' => [
                    'className' => 'Crud.View',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
                'edit' => [
                    'className' => 'Crud.Edit',
                    'scaffold' => [
                        'tables' => $tables,
                        'fields' => [
                            'name',
                            'redirect_uri',
                            'parent_model',
                            'parent_id' => [
                                'label' => 'Parent ID',
                                'type' => 'text'
                            ]
                        ]
                    ]
                ],
                'add' => [
                    'className' => 'Crud.Add',
                    'scaffold' => [
                        'tables' => $tables,
                        'fields' => [
                            'name',
                            'redirect_uri',
                            'parent_model',
                            'parent_id' => [
                                'label' => 'Parent ID',
                                'type' => 'text'
                            ]
                        ]
                    ]
                ],
                'delete' => [
                    'className' => 'Crud.Delete',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
            ],
            'listeners' => [
                'CrudView.View',
                'Crud.RelatedModels',
                'Crud.Redirect',
                'Crud.Api'
            ],
        ]);
    }
}

And a ScopesController that looks like:


namespace App\Controller;

use Crud\Controller\ControllerTrait;

/**
 * Scopes Controller
 *
 * @property \OAuthServer\Model\Table\ScopesTable $Scopes
 */
class ScopesController extends AppController
{

    use ControllerTrait;

    public $modelClass = 'OAuthServer.Scopes';

    /**
     * @return void
     */
    public function initialize()
    {
        parent::initialize();
        $this->viewClass = 'CrudView\View\CrudView';
        $tables = [
            'Clients',
            'Scopes'
        ];
        $this->loadComponent('Crud.Crud', [
            'actions' => [
                'index' => [
                    'className' => 'Crud.Index',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
                'view' => [
                    'className' => 'Crud.View',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
                'edit' => [
                    'className' => 'Crud.Edit',
                    'scaffold' => [
                        'tables' => $tables,
                        'fields' => [
                            'id' => [
                                'label' => 'ID',
                                'type' => 'text'
                            ],
                            'description',
                        ]
                    ]
                ],
                'add' => [
                    'className' => 'Crud.Add',
                    'scaffold' => [
                        'tables' => $tables,
                        'fields' => [
                            'id' => [
                                'label' => 'ID',
                                'type' => 'text'
                            ],
                            'description',
                        ]
                    ]
                ],
                'delete' => [
                    'className' => 'Crud.Delete',
                    'scaffold' => [
                        'tables' => $tables
                    ]
                ],
            ],
            'listeners' => [
                'CrudView.View',
                'Crud.RelatedModels',
                'Crud.Redirect',
            ],
        ]);
    }
}

Customisation

The OAuth2 Server can be customised, the look for the various pages can be changed by creating templates in Template/Plugin/OAuthServer/OAuth

The server also fires a number of events that can be used to inject values into the process. The current events fired are:

  • OAuthServer.beforeAuthorize - On rendering of the approval page for the user.
  • OAuthServer.afterAuthorize - On the user authorising the client
  • OAuthServer.afterDeny - On the user denying the client
  • OAuthServer.getUser - On loading user details for authentication requests.

You can customise the OAuth authorise page by creating a overriding template file in src/Template/Plugin/OAuthServer/OAuth/authorize.ctp

Comments
  • General questions about the library and its future

    General questions about the library and its future

    Hello, I've been looking at this project lately. It's definitely a good start for me, but to be able to use it, I would need some changes done. So I guess what I'm asking is whether you are planing to develop and support this package in the future? I'll do the work either way, would you accept pull requests, or should I just create my own fork?

    Specifically, I'm looking to improve following:

    • security; if I'm not mistaken (and I might be), getting user id (owner id) from authorization request (here: https://github.com/uafrica/oauth-server/blob/master/src/Controller/OAuthController.php#L123) is a huge security problem; an attacker can basically authorize the client for any user (or all of them)
    • there are hardcoded login routes https://github.com/uafrica/oauth-server/blob/master/src/Controller/OAuthController.php#L123 and Auth component offers nice ways how to get rid of it
    • hardcoded model name https://github.com/uafrica/oauth-server/blob/master/src/Controller/OAuthController.php#L82 which can also be overriden by attacker to any random string (I dont see any risk in that now, but still)
    • CakePHP 3.3 is now PSR-7 compatible, league/oauth2-server 5 also is, maybe we can use that

    Thanks for the response ;)

    opened by sukihub 7
  • Removed hardcoded dependency on App\Controller\AppController

    Removed hardcoded dependency on App\Controller\AppController

    Should be perfectly backwards compatible (not tested though).

    Usage, in app.php:

    'OAuthServer' => [
        'appController' => 'MyApp\Controller\AppController'
    ]
    
    opened by sukihub 6
  • Removed hardcoded login route

    Removed hardcoded login route

    (these pull requests depend on each other, so they always contain all the stuff from previous ones)

    In this one, I removed hardcoded login route and rely on Auth plugin configuration.

    Also, by using default Auth plugin behavior, (1) we don't have to pass all the oauth parameters (client_id, etc.) to login action and back (they are kept in session) and (2) we can also remove the if ($this->request->query['redir'] === 'oauth') ... part from app's login action - which makes the plugin just simpler to use :-)

    Last but not least, I removed OAuthComponent::checkAuthParams method:

    1. after putting redirect in oauth action, it was now only used once in the entire plugin
    2. it was catching \OAuthException
      • whitch is something from PECL oauth library and PHP League's implementation does not use it
      • the whole catch was basically a dead code and cake's default error handling was used
      • default error handling is now still being used, which I personally like, the change ensures that correct http status code is sent
    opened by sukihub 5
  • How to ask for permission just once

    How to ask for permission just once

    Hi,

    I am implementing an OAuth server using the plugin but I am not sure how to avoid asking for perms each time the user logs in..

    I am not sure if this is a client issue or a server issue but I want to simulate the following workflow:

    • User clicks 'Login with my own server'
    • Browser goes to ownserver and asks for credentials
    • User enters credentials and system asks to approve/deny client
    • User approves client and system redirects to redirectURI
    • Client gets auth code and requires access_token, etc
    • User logs out from client

    Now:

    • User clicks 'Login with my own server'
    • Browser goes to ownserver and asks for credentials
    • User enters credentials and system asks to approve/deny client again which is wrong because it should know the user have already authorized the client.

    The thing is that from server perspective the client is asking for an auth code so I dont know if we should detect the client/owner and redirect automatically without asking OR on the other hand the client should not ask for an auth code but the thing is the client does not know anything about the owner/user because you are not logged in, you are just clicking Log in with my own server.

    Please let me know if you need that I clarify something.

    Thanks

    opened by ajibarra 5
  • Added option to change class names for storages and resource/authorize server

    Added option to change class names for storages and resource/authorize server

    Now you can change the class names for storages in OAuthAuthenticate and OAuthComponent by supplying a config array formated like this:

    [
        'storages' => [
            'scope' => [
                'className' => '...'
            ]
        ]
    ]
    

    Additionally changing the resource and authorize server is possible:

    [
        'resourceServer' => [
              'className' => '...'
         ]
    ]
    
    [
        'authorizationServer' => [
              'className' => '...'
         ]
    ]
    

    The advantage is that users can swap easily the storage implementation with their own one.

    opened by sean-nicholas 5
  • parent_model and parent_id having no effect with Client Credentials flow

    parent_model and parent_id having no effect with Client Credentials flow

    I am trying to use the OAuth server with an existing database. I created the databases via migration and login works.

    In the oauth_clients table I got my id and client_secret as well as parent_model (set to 'Customers') and parent_id to 1 (which should link to the record with the ID 1 in the Customers table.

    However, after logining in via client credentials, it sets owner_model to "client" and owner_id to "22" (which is the first two letters of the client_id => 22b5...).

    When trying to authenticate with the token received, it's unable to find a client with the given id and attempts to access the "client" model, which fails as there's no such table, cause in the code below (OAuthAuthenticate class)

    public function getUser(Request $request)
    {
        try {
            $this->Server->isValidRequest(true, $request->query('access_token'));
            $ownerModel = $this->Server->getAccessToken()->getSession()->getOwnerType();
            $ownerId = $this->Server->getAccessToken()->getSession()->getOwnerId();
            $event = new Event('OAuthServer.getUser', $request, [$ownerModel, $ownerId]);
            EventManager::instance()->dispatch($event);
            if ($event->result) {
                return $event->result;
            } else {
                $model = TableRegistry::get($ownerModel);
                return $model->get($ownerId)->toArray();
            }
        } catch (OAuthException $e) {
            $this->_exception = $e;
            return false;
        }
    }
    

    When I manually fix the owner_model to "Customers" and owner_id to 1, it works and I can successfully authenticate against the RestApi. Trying to change

        $result = $query->first();
        if ($result) {
            $client = new ClientEntity($this->server);
            $client->hydrate([
                'id' => $result->id,
                'name' => $result->name,
                'parent_model' => $result->parent_model, // added
                'parent_id' => $result->parent_id // added
            ]);
    
            return $client;
        }
    

    in ClientStorage class failed of course, since parent_model and parent_id aren't valid properties of the Clients class.

    How to get it working?

    opened by TsengSR 5
  • Cakephp3 header format (adopted to coding standards)

    Cakephp3 header format (adopted to coding standards)

    Cakephp3 accepts header in different notation than the oAuth2 package (league/oauth2-server). HTTP/1.1 400 Bad Request should be HTTP/1.1 400: Bad Request in Cakephp3 in order not to cause an error in the header method of Network/Respone.

    opened by klickagent 5
  • Client Credentials

    Client Credentials

    Hey @dakota (and contributers),

    In issue #1 I requested for the Client Credentials Grant. Today I've started to dig into the plugin and the oauth2-server-library (league).

    This is what I've done:

    • Added the Grant Client Credentials (https://github.com/bobmulder/oauth-server/commit/3550108a834be0bf3a752e32093f9b9e94ca449a)
    • Tried the following request: http://localhost/oauth/access_token with the post-data:
      "grant_type": "client_credentials",
      "client_id": "test",
      "client_secret": "test"
    
    • Got this result:
    {
        "error": "invalid_request",
        "message": "The request is missing a required parameter, includes an invalid parameter value, includes a parameter more than once, or is otherwise malformed. Check the \"grant_type\" parameter."
    }
    
    • Debugging on \League\OAuth2\Server\AuthorizationServer::issueAccessToken line 264 gives us a clear view on the bug. Let me explain.

    The issueAccessToken method tries to get the grant-type with the following code:

    $grantType = $this->getRequest()->request->get('grant_type');
    

    When debugging the result of $this->getRequest() you will see the following (shortened):

    object(Symfony\Component\HttpFoundation\Request) {
            attributes => object(Symfony\Component\HttpFoundation\ParameterBag) {
            [protected] parameters => []
        }
        request => object(Symfony\Component\HttpFoundation\ParameterBag) {
            [protected] parameters => []
        }
        query => object(Symfony\Component\HttpFoundation\ParameterBag) {
            [protected] parameters => []
        }
    

    You see the request object is empty. (When you will do this request via the query like access_token?grant_type=client_credentials&client_id=test&client_secret=test, the query object will be filled).

    Reading the docs about the Symfony\Component\HttpFoundation\Request Object documents: request: equivalent of $_POST; (http://symfony.com/doc/current/components/http_foundation/introduction.html#accessing-request-data).

    This is where the bug happens. It seems CakePHP clears the $_POST data and will add it to its own request-object, while the used Request-object gets the post-data from $_POST.

    I am motivated to work on this, however I would be happy with getting some support on this issue. I don't know what to do now ;)

    Greetz,

    Bob

    opened by bobmulder 5
  •  CakePHP 3.4 uses query param instead of session for login redirect

    CakePHP 3.4 uses query param instead of session for login redirect

    Since CakePHP 3.4, query parameter is being used to store redirect URL for login, instead of session. Using AuthComponent's redirectUrl() to store it no longer works.

    Also, to be more "Cake-ish", we should let AuthComponent handle login redirect. That is easily done by setting authorize action as denied.

    OAuth spec however requires to validate OAuth params (client_id, redirect_uri, ...) before login redirect, so I moved these into beforeFilter.

    Since change is using default Cake behavior, it should even be 3.3 compatible, did not test it though.

    opened by sukihub 3
  • Error handling in OAuthAuthenticate

    Error handling in OAuthAuthenticate

    Error handling in OAuthAuthenticate was crashing, for 2 reasons:

    1. getUser() is selecting a user from db and:
      • was catching Cake\Database\Exception
      • assigning it to _exception property, which is then used in unauthenticated() method
      • the code in unauthenticated() method however assumes instance of League\OAuth2\Server\Exception\OAuthException
      • therefore it crashed
      • my solution is to ignore the exception completely, let the app crash if there is problem selecting user from db
    2. unauthenticated() method was outputing headers wrong
      • it was adding colon to a http header line containing status code: HTTP/1.1 401 Unauthorized was changed to HTTP/1.1 401: Unauthorized
      • Cake's response object does not accept that and crashes
      • my solution is to wrap the OAuthException in Cake's HttpException

    I also added getUser() call to authenticate(), which is just a small improvement (BasicAuthenticate class from Cake is doing the same thing).

    opened by sukihub 3
  • Cannot use custom namespace for my Cake app

    Cannot use custom namespace for my Cake app

    The plugin's controller ./vendor/uafrica/oauth-server/src/Controller/OAuthController.php has use App\Controller\AppController; hardcoded which does not allow for a different namespace other than App\.

    My workaround was to create a ./src/Controller/UafricaAppController.php:

    namespace App\Controller;
    
    class AppController extends \MyCustomNamespace\Controller\AppController
    {
        //
    }
    

    and load it from composer.json with:

        "autoload": {
            "psr-4": {
                "MyCustomNamespace\\": "src"
            },
            "files": ["src/Controller/UafricaAppController.php"]
        },
    
    opened by ccimpoi 3
  • Update to CakePHP 3.7

    Update to CakePHP 3.7

    I get some depreciation warnings. Is there already a version planned/in progress which will use the new getter and setters (may I create a pull request for it)? OAuthServer\Auth\OAuthAuthenticate::config() is deprecated. Use setConfig()/getConfig() instead ServerRequest::query() is deprecated. Use getQuery() or the PSR-7 getQueryParams() and withQueryParams() methods instead. etc.

    opened by klickagent 1
  • composer Install problem with CakePHP 3.6.13

    composer Install problem with CakePHP 3.6.13

    I am using CakePHP 3.6.13 and When I try to install the plugin, I got this error

    `Your requirements could not be resolved to an installable set of packages.

    Problem 1 - Installation request for uafrica/oauth-server ^0.2.0 -> satisfiable by uafrica/oauth-server[v0.2.0]. - uafrica/oauth-server v0.2.0 requires cakephp/migrations ~1.0 -> satisfiable by cakephp/migrations[1.0.0, 1.0.1, 1.0.2, 1.1.0, 1.1.1, 1.1.2, 1.1.3, 1.1.4, 1.1.5, 1.2, 1.2.1, 1.2.2, 1.3, 1.3.1, 1.3.2, 1.3.x-dev, 1.4, 1.5.0, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.5.6, 1.5.7, 1.5.8, 1.6.0, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.7.0, 1.7.1, 1.7.2, 1.8.0, 1.8.1] but these conflict with your requirements or minimum-stability.`

    So I started installing the plugin dependencies first. I installed oauth2-server with the latest version, and not I am getting this error when I try to install the plugin.

    `Your requirements could not be resolved to an installable set of packages.

    Problem 1 - Installation request for uafrica/oauth-server ^0.2.0 -> satisfiable by uafrica/oauth-server[v0.2.0]. - uafrica/oauth-server v0.2.0 requires league/oauth2-server ~4.1 -> satisfiable by league/oauth2-server[4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.1.6, 4.1.7, 4.1.x-dev] but these conflict with your requirements or minimum-stability.`

    Any fix?

    opened by karmadice 0
  • Editing Scopes fails

    Editing Scopes fails

    Hello, when Im trying to edit a scope, crud saids that AccesTokensScope.oauth_scope_id field does not exists, and thats true cause the field is scope_id. I dont know where the oauth server or the crud plugin is adding that field with the consecuence of error at query.

    Any help is apreciated.

    opened by NachoGotaki 0
  • Composer install problem

    Composer install problem

    $ composer require uafrica/oauth-server Using version ^0.2.0 for uafrica/oauth-server ./composer.json has been updated Loading composer repositories with package information Updating dependencies (including require-dev) Your requirements could not be resolved to an installable set of packages.

    Problem 1 - Installation request for uafrica/oauth-server ^0.2.0 -> satisfiable by uafrica/oauth-server[v0.2.0]. - Conclusion: remove symfony/http-foundation v4.1.1 - Conclusion: don't install symfony/http-foundation v4.1.1 - uafrica/oauth-server v0.2.0 requires league/oauth2-server ~4.1 -> satisfiable by league/oauth2-server[4.1.0, 4.1.1, 4.1.2, 4.1.3, 4.1.4, 4.1.5, 4.1.6, 4.1.7]. - league/oauth2-server 4.1.1 requires symfony/http-foundation ~2.4 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9]. - league/oauth2-server 4.1.2 requires symfony/http-foundation ~2.4 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9]. - league/oauth2-server 4.1.3 requires symfony/http-foundation ~2.4 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9]. - league/oauth2-server 4.1.4 requires symfony/http-foundation ~2.4 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9]. - league/oauth2-server 4.1.5 requires symfony/http-foundation ~2.4|~3.0 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9]. - league/oauth2-server 4.1.6 requires symfony/http-foundation ~2.4|~3.0 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9]. - league/oauth2-server 4.1.7 requires symfony/http-foundation ~2.4|~3.0 -> satisfiable by symfony/http-foundation[v2.4.0, v2.4.1, v2.4.10, v2.4.2, v2.4.3, v2.4.4, v2.4.5, v2.4.6, v2.4.7, v2.4.8, v2.4.9, v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9, v3.0.0, v3.0.1, v3.0.2, v3.0.3, v3.0.4, v3.0.5, v3.0.6, v3.0.7, v3.0.8, v3.0.9, v3.1.0, v3.1.1, v3.1.10, v3.1.2, v3.1.3, v3.1.4, v3.1.5, v3.1.6, v3.1.7, v3.1.8, v3.1.9, v3.2.0, v3.2.1, v3.2.10, v3.2.11, v3.2.12, v3.2.13, v3.2.14, v3.2.2, v3.2.3, v3.2.4, v3.2.5, v3.2.6, v3.2.7, v3.2.8, v3.2.9, v3.3.0, v3.3.1, v3.3.10, v3.3.11, v3.3.12, v3.3.13, v3.3.14, v3.3.15, v3.3.16, v3.3.17, v3.3.2, v3.3.3, v3.3.4, v3.3.5, v3.3.6, v3.3.7, v3.3.8, v3.3.9, v3.4.0, v3.4.1, v3.4.10, v3.4.11, v3.4.12, v3.4.2, v3.4.3, v3.4.4, v3.4.5, v3.4.6, v3.4.7, v3.4.8, v3.4.9]. - league/oauth2-server 4.1.0 requires symfony/http-foundation ~2.5 -> satisfiable by symfony/http-foundation[v2.5.0, v2.5.1, v2.5.10, v2.5.11, v2.5.12, v2.5.2, v2.5.3, v2.5.4, v2.5.5, v2.5.6, v2.5.7, v2.5.8, v2.5.9, v2.6.0, v2.6.1, v2.6.10, v2.6.11, v2.6.12, v2.6.13, v2.6.2, v2.6.3, v2.6.4, v2.6.5, v2.6.6, v2.6.7, v2.6.8, v2.6.9, v2.7.0, v2.7.1, v2.7.10, v2.7.11, v2.7.12, v2.7.13, v2.7.14, v2.7.15, v2.7.16, v2.7.17, v2.7.18, v2.7.19, v2.7.2, v2.7.20, v2.7.21, v2.7.22, v2.7.23, v2.7.24, v2.7.25, v2.7.26, v2.7.27, v2.7.28, v2.7.29, v2.7.3, v2.7.30, v2.7.31, v2.7.32, v2.7.33, v2.7.34, v2.7.35, v2.7.36, v2.7.37, v2.7.38, v2.7.39, v2.7.4, v2.7.40, v2.7.41, v2.7.42, v2.7.43, v2.7.44, v2.7.45, v2.7.46, v2.7.47, v2.7.48, v2.7.5, v2.7.6, v2.7.7, v2.7.8, v2.7.9, v2.8.0, v2.8.1, v2.8.10, v2.8.11, v2.8.12, v2.8.13, v2.8.14, v2.8.15, v2.8.16, v2.8.17, v2.8.18, v2.8.19, v2.8.2, v2.8.20, v2.8.21, v2.8.22, v2.8.23, v2.8.24, v2.8.25, v2.8.26, v2.8.27, v2.8.28, v2.8.29, v2.8.3, v2.8.30, v2.8.31, v2.8.32, v2.8.33, v2.8.34, v2.8.35, v2.8.36, v2.8.37, v2.8.38, v2.8.39, v2.8.4, v2.8.40, v2.8.41, v2.8.42, v2.8.5, v2.8.6, v2.8.7, v2.8.8, v2.8.9]. - Can only install one of: symfony/http-foundation[v2.4.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.4.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.5.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.13, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.6.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.13, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.14, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.15, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.16, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.17, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.18, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.19, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.20, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.21, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.22, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.23, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.24, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.25, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.26, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.27, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.28, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.29, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.30, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.31, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.32, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.33, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.34, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.35, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.36, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.37, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.38, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.39, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.40, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.41, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.42, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.43, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.44, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.45, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.46, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.47, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.48, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.7.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.13, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.14, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.15, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.16, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.17, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.18, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.19, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.20, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.21, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.22, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.23, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.24, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.25, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.26, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.27, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.28, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.29, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.30, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.31, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.32, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.33, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.34, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.35, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.36, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.37, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.38, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.39, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.40, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.41, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.42, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v2.8.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.0.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.1.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.13, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.14, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.2.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.13, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.14, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.15, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.16, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.17, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.3.9, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.0, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.1, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.10, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.11, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.12, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.2, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.3, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.4, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.5, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.6, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.7, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.8, v4.1.1]. - Can only install one of: symfony/http-foundation[v3.4.9, v4.1.1]. - Installation request for symfony/http-foundation (locked at v4.1.1) -> satisfiable by symfony/http-foundation[v4.1.1].

    Installation failed, reverting ./composer.json to its original content.

    opened by OneHatRepo 0
Owner
uAfrica Technologies (Pty) Ltd
uAfrica Technologies (Pty) Ltd
StartZ oauth2-etsy compatible League of PHP OAuth2

Etsy Provider for OAuth 2.0 Client This package provides Etsy OAuth 2.0 support for the PHP League's OAuth 2.0 Client. Requirements The following vers

StartZ 2 Nov 10, 2022
documentation for the oauth2-server-php library

OAuth2 Server PHP Documentation This repository hosts the documentation for the oauth2-server-php library. All submissions are welcome! To submit a ch

Brent Shaffer 227 Nov 24, 2022
This is a basic Oauth2 authorization/authentication server implemented using Mezzio.

Mezzio-OAuth2-Authorization-Authentication-Server This is a basic OAuth2 authorization/authentication server implemented using Mezzio. I have found so

null 1 Nov 15, 2022
Static utilitiy classes to bridge PSR-7 http messages to OAuth2 Server requests and responses.

Static utilitiy classes to bridge PSR-7 http messages to OAuth2 Server requests and responses. While this libray is entended for use with Slim 3, it should work with any PSR-7 compatible framework.

Chad Gray 18 Jul 12, 2021
Routes and Middleware for Using OAuth2 Server within a Slim Framework API

Chadicus\Slim\OAuth2 A collection of OAuth2 Server routes, middleware and utilities for use within a Slim 3 Framework API Requirements Chadicus\Slim\O

Chad Gray 126 Oct 8, 2022
Laravel Passport is an OAuth2 server and API authentication package that is simple and enjoyable to use

Introduction Laravel Passport is an OAuth2 server and API authentication package that is simple and enjoyable to use. Official Documentation Documenta

The Laravel Framework 3.1k Dec 31, 2022
A demo application for running an OAuth2 server

OAuth2 Demo PHP This application is designed to demo the workflow between OAuth2.0 Clients and Servers. If this is your first time here, try experimen

Brent Shaffer 738 Dec 16, 2022
This plugin integrates OAuth2 functionality into Guzzle Bundle

Guzzle Bundle OAuth2 Plugin This plugin integrates OAuth2 functionality into Guzzle Bundle, a bundle for building RESTful web service clients. Prerequ

Vlad Gregurco 12 Oct 30, 2022
:atom: Social (OAuth1\OAuth2\OpenID\OpenIDConnect) sign with PHP :shipit:

SocialConnect Auth Getting Started :: Documentation :: Demo Open source social sign on PHP. Connect your application(s) with social network(s). Code e

SocialConnect 518 Dec 28, 2022
:atom: Social (OAuth1\OAuth2\OpenID\OpenIDConnect) sign with PHP :shipit:

SocialConnect Auth Getting Started :: Documentation :: Demo Open source social sign on PHP. Connect your application(s) with social network(s). Code e

SocialConnect 458 Apr 1, 2021
:octocat: Socialite is an OAuth2 Authentication tool. It is inspired by laravel/socialite, you can easily use it without Laravel.

Socialite Socialite is an OAuth2 Authentication tool. It is inspired by laravel/socialite, You can easily use it in any PHP project. 中文文档 This tool no

安正超 1.2k Dec 22, 2022
OAuth client integration for Symfony. Supports both OAuth1.0a and OAuth2.

HWIOAuthBundle The HWIOAuthBundle adds support for authenticating users via OAuth1.0a or OAuth2 in Symfony. Note: this bundle adds easy way to impleme

Hardware Info 2.2k Dec 30, 2022
Cliente OAuth2 para Gov.br

Cliente OAuth2 para Gov.br Este pacote fornece suporte OAuth 2.0 para Gov.br usando a biblioteca cliente do League PHP. Requisitos Versões suportadas

Breno Roosevelt 11 Dec 27, 2022
EvaOAuth provides a standard interface for OAuth1.0(a) / OAuth2.0 client authorization, it is easy to integrate with any PHP project by very few lines code.

EvaOAuth EvaOAuth provides a standard interface for OAuth1.0 / OAuth2.0 client authorization, it is easy to integrate with any PHP project by very few

AlloVince 256 Nov 16, 2022
EvaOAuth provides a standard interface for OAuth1.0(a) / OAuth2.0 client authorization, it is easy to integrate with any PHP project by very few lines code.

EvaOAuth EvaOAuth provides a standard interface for OAuth1.0 / OAuth2.0 client authorization, it is easy to integrate with any PHP project by very few

AlloVince 261 Jan 17, 2022
Social (OAuth1\OAuth2\OpenID\OpenIDConnect) sign with PHP

Open source social sign on PHP. Connect your application(s) with social network(s).

SocialConnect 517 Dec 11, 2022
This library extends the 'League OAuth2 Client' library to provide OpenID Connect Discovery support for supporting providers that expose a .well-known configuration endpoint.

OpenID Connect Discovery support for League - OAuth 2.0 Client This library extends the League OAuth2 Client library to provide OpenID Connect Discove

null 3 Jan 8, 2022
A spec compliant, secure by default PHP OAuth 2.0 Server

PHP OAuth 2.0 Server league/oauth2-server is a standards compliant implementation of an OAuth 2.0 authorization server written in PHP which makes work

The League of Extraordinary Packages 6.2k Jan 4, 2023