Sono interessato a come implementare un sistema di accesso tra domini condivisi, nonché le best practice e le precauzioni di sicurezza da adottare. Se hai familiarità con 37Signals, probabilmente sei abituato a utilizzare un meccanismo di autenticazione universale condiviso per il quale non devi effettuare successivamente il login se utilizzi la navigazione di primo livello per un prodotto diverso. Mi piacerebbe implementare qualcosa in modo simile.Come creare un servizio di accesso condiviso su più domini?
La cosa più vicina che ho trovato online è la voce di Wikipedia su un Central Authentication Service e la risposta a Cross Domain Login - How to login a user automatically when transfered from one domain to another, che potrebbe essere leggermente diversa in questo caso.
Ho ispezionato i cookie di sessione per capire cosa stanno facendo nel processo. Inizialmente, ogni link prodotto ha un uristub "goto", vale a dire:
https://MY_COMPANY.campfirenow.com/id/users/[int_identifier]/goto
Utilizzando Firecookie e la scheda NET in Firebug, sono in grado di vedere i cookie impostati e il redirect che si verificano nel processo. Il goto
URL spara un reindirizzamento 302 a:
https://MY_COMPANY.basecamphq.com/login/authenticate?sig=[BASE64_ENCODED_AND_ENCRYPTED_DATA]
l'identificatore di sessione viene ricreato, molto probabilmente a scopo di CSRF. Alcuni dei dati nei biscotti così come il parametro GET sig stati parzialmente decifrato utilizzando base64_decode al seguente:.
// sig GET param
array(2) {
[0]=>
���ף�:@marshal_with_utc_coercionT7�z��<k��kW"
[1]=>
string(18) "���k�<kn8�f���to��"
}
// _basecamp_session cookie session param
string(247) {
:_csrf_token"1Sj5D6jCwJKIxkZ6oroy7o/mYUqr4R5Ca34cOPNigqkw=:session_id"%060c0804a5d06dafd1c5b3349815d863"
flashIC:'ActionController::Flash::FlashHash{:
@used{: auth{"
MY_COMPANY{:
user_idi�3
:identity_idi�W����������s�]��:�N[��:
߾"
La codifica è rompere il blocco di codice Grazie per il vostro aiuto!
Un servizio di accesso condiviso preconfigurato come OpenID, Facebook, OAuth o Google può funzionare per voi? O, hai assolutamente bisogno del tuo servizio di accesso condiviso? – Flipster