2012-05-29 13 views
6

Il mio requisito è implementare SSO utilizzando SAML2.0 in asp.net. Ho 2 venditori alla mia estremità. Vuoi passare l'utente da un sito ad un altro sito senza accedere al secondo. Non ho mai usato SAML2.0 prima. Qualcuno può aiutarmi come posso farlo.SSO con SAML2.0 in asp.net

Grazie, Dipa

risposta

6

vi consiglio di utilizzare il sottosistema di Windows Identity Foundation che semplifica trattare con l'autenticazione basata su SAML.

l'argomento è piuttosto ampia quindi è necessario un buon manuale e per fortuna ce n'è uno, gratuitamente da MS:

http://msdn.microsoft.com/en-us/library/ff423674.aspx

In breve: far passare l'identità tra due server, uno di loro dovrebbe implementare il servizio Identity Provider (Security Token Service) e il secondo deve accettare i token SAML creati e firmati dal primo.

+0

Grazie a Wiktor Zychla per i vostri preziosi commenti. Fammi dare un'occhiata a questo. – dipa

+0

@Wiktor Zychla questo è un bel link – Ravia

21

Per prima cosa differenziare il protocollo con il formato di token. Presumo che tu stia parlando del protocollo e non del formato di token. Ma nel caso qui ci sono le differenze:

  • Formato token SAML 2. Questo è semplicemente il formato del token che la tua applicazione sarà udenrstand. Questo è supportato da WIF out of the box.
  • Protocollo SAML 2. Queste sono le interazioni HTTP che l'applicazione dovrà capire per ottenere un token nell'app. Questo non è supportato da WIF, ma v'è un'estensione è possibile scaricare (http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=36088)

D'altra parte si dispone di uno scenario in cui ci sono più provider di identità. Il libro suggerito da Wiktor (di cui sono stato co-autore) spiega questo scenario in modo più dettagliato su Federated Identity with Multiple Partners chapter. Vi consiglio di leggerlo per ottenere i concetti dietro la federazione delle identità. Permettetemi di darvi la versione breve dell'articolo e alcuni dettagli di implementazione. Ci sono due modi per risolvere questo:

  • sua attuazione a livello di applicazione. WIF ti consentirà di fidarti di più di un token del provider di identità (questo viene fatto con i certificati X509). Quindi dovrai generare richieste di accesso per ciascun provider di identità in base a un url (come https://idp1.yourapp.com o https://yourapp.com/idp1) o all'utente che lo sceglie (avendo una pagina iniziale con due collegamenti, uno per ciascuna identità provdier). Dovrai anche normalizzare le richieste provenienti da quel fornitore di identità (forse una di queste ti invierà una richiesta di "nome" e l'altra una richiesta "upn").

    YourApp --> Identity Provider 1 
         \-> Identity Provider 2 
    
  • Utilizzo di un cosiddetto "provider di federazione". Questo è un altro server che invierà token alla tua applicazione e avrà le relazioni di trust con il tuo provider di identità. Invece di fare in modo che la tua applicazione si fidi dei due provider di identità, ti fidi solo del tuo provider di federazione e il provider fed si affiderà ai provider di identità. È una catena di fiducia.

    YourApp --> Federation Provider --> Identity Provider 1 
               \-> Identity Provider 2 
    

Questa architettura consente di:

  • crescere i tuoi provider di identità, senza toccare l'applicazione
  • se in seguito si dispone di una seconda applicazione è sufficiente copiare l'implementazione del primo
  • si ottiene il single sign on gratuito
  • si ottiene un motore di trasformazione di reclamo (se si usa qualcosa come ADFS)
  • se si utilizza qualcosa come ADFS si ottiene SAML 2 protocollo costruito nel (invece di dover implementare a mano con l'estensione di cui sotto)

Naturalmente il rovescio della medaglia è che si ora ha qualcos'altro da mantenere (il server ADFS).

+0

Un ottimo riassunto. Grazie. È stato sorprendentemente difficile trovarlo condensato a questo. –

3

Si consiglia di utilizzare ComponentSpace. Forniscono una libreria adatta a tutti i casi d'uso di un token SAML 2.0 e del protocollo SAML 2.0. Attualmente WIF non fornisce supporto per il protocollo SAML 2.0 e il formato di token tranne che in un CTP.

+1

.Net 4.0 supporta SAML 2.0 – Ravia

+0

@Ravia - È possibile fornire qualsiasi collegamento in cui è disponibile. Per quanto ne so, vedendo questo link - http://connect.microsoft.com/site1168/Downloads/DownloadDetails.aspx?DownloadID=36088 si tratta di una versione CTP e non di un RTM. – kshbondili

+0

hai ragione, il mio errore ha votato la risposta. – Ravia

4

abbiamo scritto una molto semplice open source C# componente da utilizzare con le applicazioni ASP.NET: https://github.com/jitbit/AspNetSaml (esempi di codice incluso)

E 'molto breve e semplice, ma che era l'obiettivo. Invece di aggiungere un enorme pacchetto di terze parti, basta lanciare un breve file C# nel progetto e sei pronto per SAML. Questa cosa ha funzionato per anni, anche su .NET 3.x

[Disclaimer] Sono uno dei contributori.

PS. Forks e contributi sono i benvenuti.

Problemi correlati