Developed with love by KnpLabs Hire us for your project!
47

oauth2-bundle

by trikoder

Symfony bundle which provides OAuth 2.0 authorization/resource server capabilities.

Trikoder OAuth 2 Bundle

Build Status
Latest Stable Version
License
Code coverage

Symfony bundle which provides OAuth 2.0 authorization/resource server capabilities. The authorization and resource server actors are implemented using the thephpleague/oauth2-server library.

Important notes

This bundle provides the "glue" between thephpleague/oauth2-server library and Symfony.
It implements thephpleague/oauth2-server library in a way specified by its official documentation.
For implementation into Symfony project, please see bundle documentation and official Symfony security documentation.

Status

This package is currently in the active development.

Features

  • API endpoint for client authorization and token issuing
  • Configurable client and token persistance (includes Doctrine support)
  • Integration with Symfony's Security layer

Requirements

Installation

  1. Require the bundle with Composer:

    composer require trikoder/oauth2-bundle --no-plugins --no-scripts
    

    NOTE: Due to required pre-configuration, this bundle is currently not compatible with Symfony Flex.

  2. Create the bundle configuration file under config/packages/trikoder_oauth2.yaml. Here is a reference configuration file:

    trikoder_oauth2:
    
        authorization_server:
    
            # Full path to the private key file.
            # How to generate a private key: https://oauth2.thephpleague.com/installation/#generating-public-and-private-keys
            private_key:    # Required, Example: /var/oauth/private.key
    
            # The string used as an encryption key.
            # How to generate an encryption key: https://oauth2.thephpleague.com/installation/#string-password
            encryption_key:    # Required
    
            # How long the issued access token should be valid for.
            # The value should be a valid interval: http://php.net/manual/en/dateinterval.construct.php#refsect1-dateinterval.construct-parameters
            access_token_ttl: PT1H
    
            # How long the issued refresh token should be valid for.
            # The value should be a valid interval: http://php.net/manual/en/dateinterval.construct.php#refsect1-dateinterval.construct-parameters
            refresh_token_ttl: P1M
    
        resource_server:
    
            # Full path to the public key file
            # How to generate a public key: https://oauth2.thephpleague.com/installation/#generating-public-and-private-keys
            public_key:    # Required, Example: /var/oauth/public.key
    
        # Scopes that you wish to utilize in your application.
        # This should be a simple array of strings.
        scopes: []
    
        # Configures different persistence methods that can be used by the bundle for saving client and token data.
        # Only one persistence method can be configured at a time.
        persistence:
    
            doctrine:
    
                # Name of the entity manager that you wish to use for managing clients and tokens.
                entity_manager: default # Required
    
            in_memory: ~
    
  3. Enable the bundle in config/bundles.php by adding it to the array:

    Trikoder\Bundle\OAuth2Bundle\TrikoderOAuth2Bundle::class => ['all' => true]
    
  4. Update the database so bundle entities can be persisted using Doctrine:

    bin/console doctrine:schema:update --force
    
  5. Import the routes inside your config/routes.yaml file:

    oauth2:
        resource: '@TrikoderOAuth2Bundle/Resources/config/routes.xml'
    

You can verify that everything is working by issuing a GET request to the /token endpoint.

Configuration

Development

Docker 18.03+ and Docker Compose 1.13+ are required for the development environment.

Building the environment

Make sure your Docker images are all built and up-to-date using the following command:

dev/bin/docker-compose build

After that, install all the needed packages required to develop the project:

dev/bin/php composer install

Testing

You can run the test suite using the following command:

dev/bin/php composer test

Code linting

This bundle enforces the PSR-2 and Symfony code standards during development using the PHP CS Fixer utility. Before commiting any code, you can run the utility so it can fix any potential rule violations for you:

dev/bin/php composer lint

Changes

All the package releases are recorded in the CHANGELOG file.

Reporting issues

Use the issue tracker to report any issues you might have.

License

See the LICENSE file for license rights and limitations (MIT).

  • Merge pull request #20 from ajgarlag/feature/typo
    By web-flow, 5 months ago
  • Fix typos
    By ajgarlag, 5 months ago
  • Relaxed version constraint to allow v7.3 of oauth2-server (#11)
    By spideyfusion, 5 months ago
  • Merge pull request #15 from trikoder/config-override
    By web-flow, 5 months ago
  • Disable merging for "persistence" config node
    By spideyfusion, 5 months ago
  • Update CHANGELOG.md
    By spideyfusion, 5 months ago
  • Merge pull request #13 from trikoder/timed-tests
    By web-flow, 5 months ago
  • Fix incorrect test namespace
    By spideyfusion, 5 months ago
  • Use "php-timecop" for time sensitive tests
    By spideyfusion, 5 months ago
  • Bump test Composer version
    By spideyfusion, 5 months ago
  • Bump test PHP version
    By spideyfusion, 5 months ago
  • Merge pull request #12 from Korikulum/symfony-34
    By web-flow, 5 months ago
  • Merge pull request #9 from trikoder/symfony-34
    By web-flow, 5 months ago
  • Fix bundle creating default connection
    By , 6 months ago
  • Pass CryptKey instance to oauth2 with permission check disabled (#10)
    By spideyfusion, 6 months ago
  • Fix improper class naming
    By spideyfusion, 6 months ago
  • Add testing against multiple Symfony versions
    By spideyfusion, 6 months ago
  • Relax bundle dependency requirements
    By spideyfusion, 6 months ago
  • Fix typo in README.md
    By spideyfusion, 6 months ago
  • Get rid of Symfony 4.2 deprecations
    By spideyfusion, 6 months ago
  • Make the bundle compatible with Symfony 3.4
    By spideyfusion, 6 months ago
  • Remove Symfony deprecation hack
    By spideyfusion, 6 months ago
  • Initial commit
    By spideyfusion, 6 months ago