2011-09-04 15 views
7

Ho un'applicazione di servizio Web WCF creata e testata su IIS7. Per quanto riguarda l'autenticazione, volevo implementare un ID utente hosted di SQL Server e l'autenticazione tramite password per gli utenti che accedono alle operazioni nel servizio web. Tuttavia mi è stato detto che la politica della mia azienda impone di implementare SAML nel mio servizio web. Ciò significa che qualsiasi client che accede alle operazioni del mio servizio web deve essere autenticato utilizzando SAML 2.0. Non ho familiarità con SAML, ma mi piace sapere e iniziare a implementarlo nel mio servizio web. Continuo a sentire due termini: provider di servizi e provider di identità, in base alle definizioni sul Web, presumo che il fornitore di servizi sia il mio servizio web. il provider di identità è il luogo in cui l'utente effettua l'autenticazione e il provider di identità fornisce un'asserzione al mio servizio Web e quindi il client accede alle operazioni. Capisco la teoria ma non sono sicuro di come metterla in pratica. I client che accedono al mio servizio web non sono interni, cioè esterni (client extranet), quindi in questo caso quale sarà il provider di identità e come posso aggiungere codice al mio servizio di personalizzazione web per renderlo un fornitore di servizi?Come integrare l'autenticazione SAML nell'applicazione di servizio Web WCF

Spero che tu capisca il mio dilemma, qualcuno può spiegare l'approccio che devo prendere e qualsiasi esempio o tutorial che mi aiuti a completare il servizio web è molto apprezzato.

risposta

4

Penso che SAML 2.0 non sia fornito da WCF standard. Per farlo funzionare devi combinare WCF con WIF (Windows identity foundation). Qui hai very complex example di utilizzo WCF con WIF e autorizzazione basata su reclamo. L'esempio utilizza SAML 1.1 ma è solo la modifica della configurazione per farlo funzionare con SAML 2.0.

Il tuo problema è generalmente definito autenticazione federata o identità federata in cui l'utente autentica contro STS (servizio token di servizio) e riceve token di sicurezza (può essere ad esempio il token SAML). Il client chiama il servizio reale (RP - relaying party) dove passa il suo token di sicurezza. Allora, cosa hai intenzione di costruire? Se la tua politica aziendale richiede l'utilizzo di SAML, probabilmente hanno già STS e hai solo bisogno di autenticare i client con token SAML come menzionato nell'articolo.

+0

Avete ragione, abbiamo STS. Quindi, per autenticare i client usando il token saml, l'esempio che hai fornito è la strada da percorrere? – wcfvemi

2

Dal 2011, il supporto per i servizi WCF Claims-Aware ha apparently improved con il rilascio di .NET 4.5. Io copio informazioni da tale articolo nel caso in cui cambia mai, ma a partire dal momento di questa risposta, il processo sembrava essere il più semplice:

  1. L'aggiunta di un riferimento al WIF (Microsoft.IdentityModel.dll) in WCF Progetto di servizio. Poiché questo è fornito con .NET 4.5, non credo che sia necessario un pacchetto NuGet.

  2. utilizzare il seguente esempio di codice per creare un self-hosted service riconoscere attestazioni:

    var host = new ServiceHost (typeof (ClaimsAwareWebService), new Uri ("myUri")); FederatedServiceCredentials.ConfigureServiceHost (host);

    host.Open();

  3. Impostare il servizio WCF per utilizzare l'estensione di comportamento federatedServiceHostConfiguration.

Problemi correlati