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).
Grazie a Wiktor Zychla per i vostri preziosi commenti. Fammi dare un'occhiata a questo. – dipa
@Wiktor Zychla questo è un bel link – Ravia