Discussione:
WCF security
(troppo vecchio per rispondere)
Fabry
2009-03-29 14:34:01 UTC
Permalink
Ciao a tutti,
ho l'esigenza di riprogettare un'applicazione asp.net abbastanza corposa
in un'architettura SOA basata su WCF. Con l'evolvere del tempo
l'applicazione è cresciuta molto ed ora deve offrire una serie di
servizi e funzionalità proprie ad applicazioni terze.

L'esigenza in particolare è quella di rendere autenticato l'utilizzo
delle varie funzionalità che verranno esposte con lo strato di servizi
WCF. Mi rifaccio al classico modello che si vede su molte applicazioni
famose (da paypal a facebook) in cui l'utilizzo delle API (che all'atto
pratico sono web service) è profilato in vari modi che vanno dal
certificato digitale alla chiave crtiptata passando per i vali
user/password.

Mi sembra di aver capito che il modello di security di WCF già includa
questa metodologia con l'utilizzo della sicurezza basata sul messaggio.
Dato però che sto approfondendo l'argomento in questo periodo
(consultando msdn, libri, i più svariati blog oltre ai riferimenti vari
come codeplex etc..) volevo capire se l'idea che mi sono fatto è
corretta o se sto mal interpretando lo scopo del sistema di security di
wcf. In sintesi : è corretto utilizzare la security message
(eventualmente con uso ti token o username) per la necessità esposta?
Inoltre l'uso della security message mi impone sempre l'utilizzo di un
certificato digitale, è sicuramente corretto per l'ambiente di
produzione ma scomodo per lo sviluppo (ho creato il finto certificato
con makecert etc...), è proprio così o si può abbassare il livello di
sicurezza e farne a meno?

Tralascio le problematiche di interoperabilità tra sistemi diversi
perché credo di aver abbastanza chiara l'esigenza, almeno trasposta al
mio contesto.

Grazie
Fabrizio
Raffaele Rialdi [MVP]
2009-03-31 17:53:25 UTC
Permalink
Post by Fabry
L'esigenza in particolare è quella di rendere autenticato l'utilizzo
delle varie funzionalità che verranno esposte con lo strato di servizi
WCF. Mi rifaccio al classico modello che si vede su molte applicazioni
famose (da paypal a facebook) in cui l'utilizzo delle API (che all'atto
pratico sono web service) è profilato in vari modi che vanno dal
certificato digitale alla chiave crtiptata passando per i vali
user/password.
WCF supporta diversi tipi di sicurezza (messaggio e/o trasporto) e
diversi tipi di credenziali che dipendono dal tipo di messaggio e
trasporto utilizzato.
Non tutte le permutazioni sono supportate ma puoi sbizzarrirti.
Post by Fabry
Mi sembra di aver capito che il modello di security di WCF già includa
questa metodologia con l'utilizzo della sicurezza basata sul messaggio.
Anche sul trasporto
Post by Fabry
Dato però che sto approfondendo l'argomento in questo periodo
(consultando msdn, libri, i più svariati blog oltre ai riferimenti vari
come codeplex etc..) volevo capire se l'idea che mi sono fatto è
corretta o se sto mal interpretando lo scopo del sistema di security di
wcf. In sintesi : è corretto utilizzare la security message
(eventualmente con uso ti token o username) per la necessità esposta?
Prima devi stabilire se vuoi usare la sicurezza sul messaggio
(ws-security) o trasporto (ssl). La scelta non è sempre banale perché
dipende anche dalla presenza di eventuali proxy, ruoter, ... intermedi.

Fatto questo decidi il tipo di credenziali. Pur scegliendo la sicurezza
sul messaggio puoi optare comunque per le credenziali sul trasporto e
quindi usare SSL se sono in chiaro oppure un certificato client.
Post by Fabry
Inoltre l'uso della security message mi impone sempre l'utilizzo di un
certificato digitale, è sicuramente corretto per l'ambiente di
produzione ma scomodo per lo sviluppo (ho creato il finto certificato
con makecert etc...), è proprio così o si può abbassare il livello di
sicurezza e farne a meno?
In WCF non è possibile usare un canale totalmente insicuro per evitare
possibili errori di deploy. Quindi è necessario generarsi dei
certificati, dargli i permessi, etc. etc.
--
Raffaele Rialdi
Microsoft .NET MVP http://mvp.support.microsoft.com -
http://italy.mvps.org UGIdotNET - User Group Italiano .NET
http://www.ugidotnet.org Weblog: http://blogs.ugidotnet.org/raffaele
Loading...