it-swarm-eu.dev

Implementazione Single Sign-On C # ASP.NET

Ho il compito di implementare il single sign-on per i nostri clienti come parte della nostra prossima versione. Il flusso esiste come segue:

  1. L'utente accede al sistema del portale principale della propria scuola utilizzando un ID/password dello studente fornito dalla scuola.
  2. L'utente fa clic sul collegamento al prodotto della mia azienda.
  3. L'utente viene automaticamente portato alla pagina del dashboard come se avesse appena effettuato l'accesso tramite il modulo di accesso sul nostro sito.

Pertanto, ci sono due meccanismi con cui un utente può essere autenticato nel nostro sito:

  1. Accedere alla home page del nostro prodotto e accedere utilizzando l'e-mail/la password che memorizziamo nel nostro sistema locale.
  2. Utilizzando il single sign-on in cui lo studente ha già effettuato l'accesso al sistema principale della scuola con un ID studente e una password.

Se l'implementazione del nostro prodotto è in ASP.NET (al contrario di Java/Ruby), dovremmo usare CAS, JOSSO o qualche altro prodotto Single Sign-On di terze parti? O c'è qualcosa disponibile per un ambiente .NET che sarebbe più semplice per noi come azienda .NET?

67
Adam Levitt

Esistono più opzioni per implementare SSO per un'applicazione .NET.

Dai un'occhiata ai seguenti tutorial online:

Nozioni di base di Single Sign on , Luglio 2012

http://www.codeproject.com/Articles/429166/Basics-of-Single-Sign-on-SSO

GaryMcAllisterOnline: ASP.NET MVC 4, ADFS 2.0 e integrazione STS di terze parti (IdentityServer2) , Jan 2013

http://garymcallisteronline.blogspot.com/2013/01/aspnet-mvc-4-adfs-20-and-3rd-party-sts.html

Il primo utilizza ASP.NET Web Form, mentre il secondo utilizza ASP.NET MVC4.

Se i tuoi requisiti ti consentono di utilizzare una soluzione di terze parti, prendi in considerazione anche OpenID. C'è una libreria open source chiamata DotNetOpenAuth .

Per ulteriori informazioni, leggere il post sul blog MSDN Integrare OpenAuth/OpenID con l'applicazione ASP.NET esistente utilizzando Universal Provider .

Spero che sia di aiuto!

54
Shahed C - MSFT

Sono in ritardo alla festa, ma per l'opzione n. 1, sceglierei IdentityServer (. NET 4.6 o precedente) o IdentityServer4 (compatibile con Core ).

Puoi riutilizzare il tuo archivio utenti esistente nella tua app e collegarlo come archivio utenti di IdentityServer. Quindi i client devono essere indirizzati a IdentityServer come provider di ID aperto.

10
Evdzhan Mustafa

Esistono diversi provider di identità con supporto SSO pronto all'uso, anche prodotti di terze parti **.

** L'unico problema con i prodotti di terze parti è che fanno pagare per utente/mese e può essere piuttosto costoso.

Alcuni degli strumenti disponibili e con le API per .NET sono:

Se decidi di procedere con la tua implementazione, puoi utilizzare i framework di seguito classificati in base al linguaggio di programmazione.

  • C #

    • IdentityServer3 (protocolli OAuth/OpenID, OWIN/Katana )
    • IdentityServer4 (protocolli OAuth/OpenID, ASP.NET Core )
    • OAuth 2.0 di Okta
  • Javascript

    • passport-openidconnect (node.js)
    • oidc-provider (node.js)
    • openid-client (node.js)
  • Python

    • pyoidc
    • Fornitore OIDC di Django

Vorrei andare con IdentityServer4 e ASP.NET Core application, è facilmente configurabile e puoi anche aggiungere il tuo provider di autenticazione. Utilizza protocolli OAuth/OpenID che sono più recenti di SAML 2.0 e WS-Federation.

7
Alex.H

UltimateSAML SSO è un toolkit .NET conforme alle specifiche SAML v1.xe v2.0 di OASIS. Offre un modo elegante e semplice per aggiungere il supporto per Single Sign-On e Single Logout SAML alle tue applicazioni ASP.NET, ASP.NET MVC, ASP.NET Core, Desktop e Service. La libreria leggera ti aiuta a fornire l'accesso SSO ai siti Web cloud e intranet utilizzando un'unica voce di credenziali.

La recensione dettagliata di UltimateSAML SSO è disponibile qui

3
brunoid