At this time, library allow to auth using JWT with OAuth2 Authorization Code flow.
Install package using composer
composer req cosmonova-rnd/auth
- Enable session handler in your application
framework:
session:
handler_id: ~- Configure DB connection, then add new entity manager
authto your application config
doctrine:
orm:
entity_managers:
auth:
connection: default ## may be your custom connection
default_repository_class: 'CosmonovaRnD\Auth\Repository\UserRepository'
mappings:
Auth:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/vendor/cosmonova-rnd/auth/src/Entity'
prefix: 'CosmonovaRnD\Auth\Entity'
alias: Auth- Configure encoder and provider in
securitysection
security:
encoders:
CosmonovaRnD\Auth\Entity\User:
algorithm: plaintext
providers:
auth_provider:
id: CosmonovaRnD\Auth\Security\UserProvider- Configure your main firewall to use package provider and set login form config like bellow
security:
firewalls:
main:
### If you want to use OAuth2 Access Code authentication flow
provider: auth_provider
anonymous: ~
logout: ~
form_login:
login_path: auth
check_path: auth - Add access control rules
access_control:
- { path: ^/auth, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }In this case we use Authorization: Bearer <MY JWT> header
- Configure any provider (such like a
memory)
security:
providers:
in_memory: { memory: ~ }- Then add to your main firewall this provider and guard authenticator
security:
firewalls:
main:
provider: in_memory
guard:
authenticators:
- CosmonovaRnD\Auth\Security\Authenticator\JwtAuthenticator
stateless: true- Also configure your access rules if needed
access_control:
- { path: ^/, roles: IS_AUTHENTICATED_FULLY }