80 messaggi dal 17 maggio 2011
Ciao a tutti,

Ho costruito una web app con due dbcontext diversi per ora.
Uno fa riferimento alla parte identity di microsoft l'altro a tutte le mie tabelle dell'applicazione.
L'idea iniziare era di usare due dbcontext per fare in modo che una seconda applicazione usasse lo stesso dbcontext per l'identity.
L'idea finale è fare in modo che l'utente autenticato sulla app numero 1 sia anche autenticato sulla app numero 2.
E' la strada corretta da intraprendere oppure sto sbagliando e avete suggerimenti migliori?

Ciao
Paolo
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao Paolo,
si tratta di ASP.NET 4.x, non di ASP.NET Core, giusto?
Modificato da BrightSoul il 08 gennaio 2019 08.53 -

Enjoy learning and just keep making
80 messaggi dal 17 maggio 2011
Esatto ASP.NET 4.x, errore mio non l'ho indicato.
Correggo subito il titolo
11.886 messaggi dal 09 febbraio 2002
Contributi
Avevi postato nel gruppo ASP.NET 4.0, quindi diciamo che era già chiaro ma volevo esserne sicuro.

Quello che hai proposto può funzionare ma bisogna chiarire due questioni.
  • I cookie di autenticazione. Quando un utente fa il login dall'applicazione A, ASP.NET emette un cookie di autenticazione che il browser reinvierà al server in tutte le successive richieste. Affinché il browser possa reinviarlo anche quando l'utente visita l'applicazione B, è necessario che entrambe le applicazioni siano ospitate nello stesso dominio di secondo livello. Questa non è una limitazione di ASP.NET ma il funzionamento normale dei cookie. Quindi il requisito è che le due applicazioni siano pubblicate ad esempio in www.miosito.it/app1 e www.miosito.it/app2. Oppure in app1.miosito.it e app2.miosito.it.
    Oppure, per evitare questa limitazione, inventi una procedura come quella di aspitalia.com: quando fai il login, vieni ridirezionato su vari domini affinché ciascuno di essi possa emettere un proprio cookie di autenticazione che ti consentirà di risultare autenticato su tutti i siti del network (aspitalia.com, linqitalia.com, html5italia.com, ...).
    Probabilmente dovrai impostare anche il nome del cookie in modo che sia identico sulle due applicazioni.
    Vedi se questo ti può aiutare.
    https://docs.microsoft.com/en-us/aspnet/core/security/cookie-sharing?view=aspnetcore-2.2;
  • Le machine keys. Affinché l'applicazione B possa decifrare il contenuto dei cookie di autenticazione o far fare il login agli utenti, è necessario che utilizzi le stesse chiavi crittografiche usate dall'applicazione A. Puoi generare delle machine keys da IIS in questo modo:
    http://docs.orchardproject.net/en/latest/Documentation/Setting-up-a-machine-key/
    Una volta che le hai generate per la prima applicazione, le copi e incolli nel web.config dell'altra applicazione.


ciao,
Moreno
Modificato da BrightSoul il 08 gennaio 2019 13.55 -

Enjoy learning and just keep making
80 messaggi dal 17 maggio 2011
Che dire sei stato cristallino.
Immaginavo potesse funzionare, e che la procedura di aspitalia servisse a quello.

Solo una piccola domand, se io utilizzo 2 app sullo stesso dominio oppure uso due domini di secondo livello è obbligatorio impostare il discorso "machine keys" corretto?

Grazie mille per il tuo aiuto.
11.886 messaggi dal 09 febbraio 2002
Contributi
Ciao, prego.
In linea generale, se sono due applicazioni che appartengono a due application pool diversi che girano con ApplicationPoolIdentity, allora avranno machine key diverse, a meno che non le setti tu dal web.config.
Non ci sono controindicazioni, quindi tanto vale farlo.

Comunque, siccome non so come sono configurati i tuoi application pool, leggi qui:
https://gyorgybalassy.wordpress.com/2013/12/07/how-unique-is-your-machine-key/

In particolare questo frammento:

if you have two applications in IIS which are running with the same process identity, they will use the same machine key


ciao,
Moreno
Modificato da BrightSoul il 10 gennaio 2019 22.43 -

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.