Condivisione dell'autenticazione tra sottodomini utilizzando i cookie

4

So che in generale i cookie stessi non sono considerati abbastanza robusti per archiviare le informazioni di autenticazione.

Quello che mi chiedo è se esiste un modello di progettazione esistente o un framework per condividere l'autenticazione attraverso i sottodomini senza dover usare qualcosa di più complesso come OpenID.

Idealmente, il processo sarebbe che l'utente visita abc.example.org, acceda e continui su xyz.example.org dove viene riconosciuto automaticamente (idealmente, dovrebbe anche essere possibile il contrario - un login tramite xyz significa login automatico in abc). L'intoppo è che abc.example.org e xyz.example.org sono entrambi su server diversi e diversi framework di applicazioni web, sebbene possano entrambi utilizzare un database condiviso.

Le piattaforme di applicazioni web includono PHP, ColdFusion e Python (Django), anche se mi interessa anche da una prospettiva più generale (cioè agnostica del linguaggio).

    
posta Jordan Reiter 09.11.2011 - 18:10
fonte

2 risposte

2

puoi memorizzare i cookie sul dominio example.org e utilizzare il valore lì per accedere con le informazioni specifiche che collegano l'utente ai cookie (più altre cose per assicurarti che sia lo stesso utente) nel DB condiviso

o implementa il tuo OpenID con l'inoltro a auth.example.org che autentica l'utente e lo registra (il DB condiviso può anche essere usato come canale laterale per scambiare dati in modo sicuro tra abc.example.org e auth.example .org)

    
risposta data 09.11.2011 - 18:19
fonte
0

In generale, memorizzerai un valore hash nel tuo cookie, che farà riferimento ad un archivio di sessioni, lato server. La sessione conterrà le informazioni di autenticazione, come una chiave utente.

Il modello è configurare entrambe le app per utilizzare lo stesso:

  • dominio padre per il cookie di sessione
  • archivio di sessioni lato server

Con ASP.NET e SQL Server, puoi utilizzare lo stesso archivio di sessione di SQL Server e impostare il dominio dei cookie di sessione in web.config di ogni app:

<configuration>
    <system.web>
        <httpCookies domain=".example.org" />
        <sessionState 
            mode="SQLServer"
            allowCustomSqlDatabase="true"
            sqlConnectionString="Data Source=localhost;Integrated Security=SSPI;Application Name=example"
            cookieless="false"
            timeout="20"
        />
    </system.web>
</configuration>
    
risposta data 30.11.2011 - 03:02
fonte

Leggi altre domande sui tag