5

Ho diverse applicazioni ospitate sullo stesso IIS (diverse root di contesto), che sono tutte protette utilizzando i pacchetti NuGet di Microsoft.ASPNet.Identity 2.1. Al momento, tuttavia, quando accedo a una delle applicazioni, la prossima visita a una delle altre applicazioni mi richiede di accedere di nuovo. Non riesco ad accedere a più di una sola applicazione contemporaneamente.Utilizzo dell'identità ASP.Net su più applicazioni Web

Suppongo che tutti stiano utilizzando lo stesso cookie per memorizzare il token di accesso, quindi quando si accede a un'app, si resetta il cookie che diventa non valido per le richieste alle altre applicazioni.

Quali sono le opzioni per risolvere questo problema? Non mi interessa dover accedere a ciascuna app singolarmente, quindi ogni app può essere configurata per utilizzare un cookie diverso?

In alternativa, ogni app in effetti condividono la stessa tabella utente nel DB, quindi potrebbe essere possibile configurarlo in modo che quando si accede a una delle applicazioni, gli altri diventano anche registrati.

+0

Quando si dice WebAPI identità, intendi identità ASP.NET? – Luke

+0

Siamo spiacenti, i pacchetti Microsoft.AspNet.Identity Nuget. Non so perché ho pensato che si chiamasse WebApi Identity. Grazie per avermi corretto –

+0

Okey Dokes.Mi spiace, semplicemente assicurandomi :) – Luke

risposta

2

Sì, questo perché su "localhost" si condivide lo stesso cookie. Questo non accadrà in produzione, perché i cookie sono solo dominio. (a meno che, ovviamente, tutte le applicazioni siano distribuite nello stesso dominio).

Questo è un po 'fastidioso su localhost ma facile da risolvere. Basta cambiare il nome del cookie per ogni applicazione.

Questo varia da versione identità alla versione, ma qualcosa di simile a questo è quello che stai cercando:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    CookieName = "MyApp1", // <-- add this, with different names for each app 
    // ... 
}); 

normalmente presenti sulla Startup.Auth.cs o Startup.cs file.

Come di utilizzare lo stesso cookie su tutte le applicazioni (se condividono subdomain.domain) è necessario per ottenere MachineKey (validationKey, e decryptionKey) E stesso nome del cookie su tutte le applicazioni.

qualcosa di simile sul web.config:

<machineKey 
    validationKey="..." <-- some valid validation key 
    decryptionKey="..." <-- some valid decryption key 
    validation="SHA1" 
    decryption="AES"/> 
+0

Grazie Bart - Coulton è stato un po 'più veloce con la risposta, quindi ho contrassegnato il suo come corretto, mi dispiace ... ma controllerò sicuramente il tuo addendum sulla condivisione dei cookie su tutte le app - grazie ancora –

+0

@SimonGreen sicuro! non c'è bisogno di scusarsi. Sono contento che l'hai risolto (questo è il punto, nient'altro). –

+0

btw, per il single sign on, la cosa più complicata è rendere CORS che non è un problema che hai. Avere le stesse chiavi crittografiche/crittografiche in modo che possano essere lette da tutte le app e otterrai il single sign on gratuitamente. ** nota che ** questo è * solo * perché ti trovi nello stesso sottodominio/dominio. –

Problemi correlati