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: ~
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
@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