14

Possiedo un'applicazione Asp.Net già sviluppata che utilizza il provider di appartenenze Asp.Net.Miglior approccio per SSO per l'applicazione Asp.Net con accesso da applicazione esterna con più ADFS

Esiste un'applicazione Web client con il proprio login. Una volta effettuato l'accesso, l'utente ottiene alcuni collegamenti. Questi collegamenti sono diretti all'applicazione che ho sviluppato. Attualmente dal momento che si tratta di due diverse applicazioni ospitate in due domini, sono necessari due tempi di accesso.

Quello che sto cercando di ottenere è avere SSO e non è necessario effettuare il login quando l'utente è già registrato nell'applicazione client. Ho letto e sembra che sia possibile farlo tramite un provider STS come ThinkTecture IdentityServer e utlizzando ADFS alla nostra estremità.

È questo l'approccio migliore e se sì, non sono riuscito a trovare gran parte della documentazione rispetto a quali sono gli aggiornamenti che devo chiedere al team principale dell'applicazione di abilitare SSO.

+0

Si sta utilizzando l'autenticazione basata su form? Stai usando l'identità? Per chiarire, tu dici che l'app client esegue accessi ... Suppongo tu intenda qualcosa come un browser o un'app mobile? Significa che il client invia le credenziali al server e ottiene l'autenticazione, o intendi un servizio che il processo del server utilizza per autenticare? –

+0

Cosa hai (controllo) di controllo? l'app web? l'app del cliente? entrambi? Puoi passare "qualcosa" all'app client all'app Web in modo che l'app web possa autenticare da quella? –

+0

Ok, per essere più chiari, c'è un sito www.MainWebApp.com che è ospitato da Party A. Questo sito ha un login che sta facendo l'autenticazione con DB ospitato da Party A. Dopo il login ottengono una pagina con un link che punta a www.mywebapp.com/home/index questo è il sito che stiamo ospitando alla fine con DB ospitato anche alla nostra fine. Al momento, questo link mostrerà una pagina di login, che voglio rimuovere e far sì che la Parte A invii alcune informazioni insieme al link per ottenere l'autorizzazione. – Chinjoo

risposta

7

Ciò potrebbe essere possibile con provider STS o ADFS. Quello che suggerirei è di avere un'applicazione web solo per l'autenticazione dove quando l'utente fa clic sul login sul sito principale, è possibile reindirizzare all'applicazione di autenticazione, autenticare e creare un token e quindi reindirizzare nuovamente all'applicazione principale insieme al token. Successivamente, puoi chiamare qualsiasi applicazione insieme a questo token e verificare se l'utente ha il permesso di accedere a questa applicazione o meno. Il token contiene informazioni come utente autenticato, permesso, ecc. Suppongo che sia necessario creare un modulo http personalizzato per implementarlo.

Se tutte le applicazioni sono sotto un dominio, può essere raggiunto dai cookie.

+0

Il concetto qui è che l'applicazione principale non è gestita da noi e quindi dovrebbe esserci un minimo cambiamento in là e in un dominio diverso. – Chinjoo

0

credo che l'approccio migliore sarebbe quello di ospitare un provider di identità come ADFS o ThinkTecture da qualche altra parte e poi fare sia l'applicazione principale e la vostra applicazione una parte affidabile di questo provider di identità.

Entrambe le applicazioni dovrebbero essere modificate per supportare il protocollo WS-Federation (che asp.net ha già un modulo HTTP per supportarlo).

Avere una lettura di questo https://msdn.microsoft.com/en-gb/library/bb498017.aspx

Poi anche verificare questo blog http://chris.59north.com/post/Configuring-an-ASPNET-site-to-use-WS-Federation

+0

Avete qualche riferimento per i campioni per verificarlo? – Chinjoo

+0

Microsoft ha una procedura dettagliata qui: https://msdn.microsoft.com/en-us/library/hh291061.aspx. Basta ripetere i passaggi due volte in modo da avere due siti e mettere un link su uno di essi all'altro. – DanL

0

Come circa imitando il concetto di SSO?

  • Se si fa clic sul collegamento fornito nel sito Web di Party A, viene generato un token con un Timestamp.
  • caricarlo nel vostro DB tramite Servizi
  • Cifra il token utilizzando RSA con parametri aggiuntivi sia d'accordo su
  • reindirizzamento al tuo URL con questo parametro cifrato convertito in Base64
  • Decrypt su un fianco e verificare il token nel tuo sito Web e quindi consentire al tuo sito web.
  • Scrivere una logica per il token che deve essere defunto in un tempo specificato.
Problemi correlati