[Symfony] Form login en Basic Auth onder dezelfde applicatie

Pagina: 1
Acties:

Vraag


  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
Ik heb een symfony 3 website waarop gebruikers zich authenticeren via een login form. Voor bepaalde administratieve taken zou ik een beperkte REST API willen voorzien met basic auth.

Ik weet hoe ik apart form login en basic auth moet opzetten, maar hoe combineer ik de 2 onder dezelfde applicatie? Ik wil vermijden dat een niet geauthenticeerde gebruiker een basic auth prompt krijgt ipv naar de login form gestuurd wordt, en het omgekeerde voor het rest API gedeelte (geen form, wel basic auth). M.a.w. wil ik een stateless (basic auth) zone binnen mijn website die wel stateful (session based) is, al dan niet op een ander subdomein.

De voornaamste reden dat ik dit onder dezelfde applicatie wil is omdat 90% van de codebase gedeeld wordt.
Is dit mogelijk? Indien ja, zijn er bepaalde zaken waar ik extra rekening mee moet houden?

Alle reacties


  • Thijs-jan
  • Registratie: Januari 2002
  • Laatst online: 09-12 20:15
Misschien is de reactie een beetje laat waardoor je het antwoord al gevonden hebt, maar het leek me goed om hier toch nog even te melden dat dit op te lossen is met behulp van meerdere firewalls in de security-configuratie. Meer info op https://symfony.com/doc/c...yaml-setup-authentication of https://knpuniversity.com...-security-firewalls-dinos

  • egonolieux
  • Registratie: Mei 2009
  • Laatst online: 06-01-2024

egonolieux

Professionele prutser

Topicstarter
Dit is inderdaad al even opgelost ;). Ik heb de documentatie eens goed doornomen en heb meerdere firewalls opgezet:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    firewalls:
        api:
            pattern: ^/api
            stateless: true
            anonymous: ~
            http_basic:
                provider: user_entity_provider
                realm: API
        content:
            pattern: ^/content
            security: false
        dev:
            pattern: ^/_profiler
            security: false
        main:
            provider: user_entity_provider
            stateless: false
            anonymous: ~
            logout_on_user_change: true # BUG: see https://github.com/symfony/symfony/issues/24525.
            form_login:
                login_path: /account/sign-in
                check_path: /account/sign-in
                default_target_path: /
                csrf_token_generator: security.csrf.token_manager
            logout: 
                path: /account/sign-out
                target: /
            remember_me:
                name: REMEMBERME
                secret: '%secret%'
                lifetime: 31536000 # 1 year.