Implementarea semn unic cu privire la aplicarea symfony2

Ce este Single Sign On?


Single Sign On - este o tehnologie prin care un utilizator fiind autentificat la centrul de certificare (furnizorul de identitate, IDP). autentificată automat pe un alt serviciu (furnizor de servicii în continuare, SP sau de consum [1-N]) al companiei.

Mecanismul de conectare unică utilizați site-uri, cum ar fi Habrahabr. Yandex. Google. Avantajele acestei abordări pentru autentificarea utilizatorului sunt evidente:

  • Pierderea unei parole din IDP atrage după sine probleme de intrare în toate serviciile
  • riscul de furt al IDP sesiunii de master a crescut potențial (poate fi redus prin conectarea sesiune de subrețea ISP, și de a folosi HTTPS. HTTP Numai Cookie-urile și SSL Numai Cookies)
  • Potențial risc crescut de furt a parolei de la IDP
  • .

În ciuda acestui fapt, din punctul de vedere al afacerii, precum și experiența utilizatorului, punerea în aplicare a acestei funcționalități depășește toate dezavantajele, și începe o epopee privind punerea în aplicare a SSO în cadrul companiei.

Înainte de a începe punerea în aplicare a SSO în cadrul companiei, ar fi bine să vă asigurați că sunt bine conștienți de faptul că o astfel:

Deci, după ce sa familiarizat cu teoria de bază: ceea ce este CSO, aspectele de securitate, care sunt asociate cu această problemă - putem începe să-l pună în aplicare.

Cum va funcționa


În general, autentificarea va avea loc în următorul scenariu:

Implementarea semn unic cu privire la aplicarea symfony2

În cazul în care IDP a spus că o astfel există și este valabil OTP, SP autentifică utilizatorul prin emiterea unei PreAuthenticatedToken'a.

Producția va funcționa după cum urmează:

Implementarea semn unic cu privire la aplicarea symfony2

Rețineți că tipul de ieșire este considerat din punct de vedere al începutul procesului în SP. Acest lucru este important, deoarece utilizatorul este returnat în cazul în care a început să facă această operație.

Să presupunem că utilizatorul a fost pe o pagină anumită / secured_area și a făcut clic pe „Exit“. În acest moment, local delogat din cadrul SP. Apoi vom merge la IDP la o adresă URL specială / SSO / logout. care va gestiona procesul de eliberare cu toate serviciile pentru utilizator. pentru că utilizatorul a ajuns la SP, atunci IDP selectează serviciul următor, care este disponibil în cadrul companiei, și trimite-l să facă. Serviciul, la rândul său, din nou la finalizare, ne trimite la IDP și în cazul în care serviciile au fost de peste, efectuează o ieșire locală (pag. 5 în schemă). După ce utilizatorul este trimis înapoi la SP, cu care a început să facă afară.

Există un alt scenariu în care utilizatorul începe să iasă din proces și nu cu SP la IDP. Si se pare ca acest lucru:

Implementarea semn unic cu privire la aplicarea symfony2

Autoritatea de Certificare (IdentityProvider)


Pentru a face autoritatea de certificare, trebuie să selectați mai întâi o aplicație în compania dumneavoastră, care va fi responsabil pentru acest lucru, cum ar fi modul în care se face în Yandex (Yandeks.Pasport) sau de la Google (Conturi Google).

În această aplicație, vom fi prima parte a ustanavlivaetsya: SingleSignOnIdentityProviderBundle

SingleSignOnIdentityProviderBundle responsabil pentru:

  • Generarea de parole unice (OTP)
  • Magazine în sesiunea din care utilizatorul a ajuns la SP
  • Funcționalitatea pentru ieșirea din toate SP-uri

Pune prin compozitor:


dependențe de următoarea actualizare și prescrie pachetul nostru în AppKernel:


Conectarea Route / SSO / conectare și / SSO / logout a mănunchiului: