2012-08-03 14 views
6

Mam aplikację Symfony z 2 obszarami, po jednym dla klientów uzyskujących dostęp ze strony internetowej lub dla wywołań API z AJAX i usług internetowych.Jak uwierzytelnić się na 2 różnych zaporach symfony2 w tym samym czasie?

Każdy z tych obszarów jest chroniony zaporą sieciową. Interfejs WEB jest uwierzytelniany za pomocą formularza logowania i interfejsu API pod numerem http_basic.

Obie zapory działają poprawnie, ale kiedy interfejs WEB wywołuje AJAX do interfejsu API, przeglądarka prosi użytkownika o ponowne zalogowanie, nawet gdy był już zalogowany (poprzez formularz logowania). Tego właśnie chcę uniknąć. Chciałbym, aby obie ściany ogniowe zostały uwierzytelnione w tym samym czasie, aby zapobiec temu zgłoszeniu.

Widziałem inne pytanie z dokładnie ten sam problem. Ale są one za pomocą uwierzytelniania http_basic obu zapór, więc rozwiązanie proponowane did't pracę nad moim przypadku:

Authenticate multiple symfony2 firewalls with one login form

Moja security.yml

#.... 
firewalls: 
    api: 
     pattern: ^/API 
     context: primary_auth 
     stateless: true 
     http_basic: 
      realm: "API: Please log in" 

    web: 
     pattern: ^/ 
     context: primary_auth 
     form_login: 
      check_path: /login_check 
      login_path: /login 
      provider: fos_userbundle 
     logout: 
      path: /logout 
      target:/
     anonymous: ~ 

Odpowiedz

6

Czasami warto zajrzeć tutaj: Authenticate multiple symfony2 firewalls with one login form jest rozwiązaniem podobnym problemem tam

cytowany:

security: 
# providers etc ... 

    firewall: 
     main: 
      pattern: # ... 
      provider: my_users 
      http_basic: ~ 
      context: primary_auth # new 
     api: 
      pattern: # ... 
      provider: my_users 
      http_basic: ~ 
      context: primary_auth # new 
+3

Cytowałem tę odpowiedź, jest to bardzo podobny problem, różnica polega na tym, że używam dwóch różnych metod uwierzytelniania (bezpaństwowy http podstawowy i drugi używający plików cookie). Już wypróbowałem proponowaną konfigurację, ale po prostu nie wyszło – Xocoatzin

+1

@Xocoatzin, różne metody uwierzytelniania nie powinny stanowić problemu dla współdzielonego kontekstu między zaporami ogniowymi. Na przykład robię to samo ze standardową zaporą logowania i inną, która uwierzytelnia się na serwerze SSO. Mają różne typy tokenów uwierzytelniania. – Dziamid

Powiązane problemy