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
auth
to 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
security
section
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 }