WS-Security
Definizione
Da Wikipedia: Web Services Security (WS-Security, WSS) è una estensione di SOAP per estendere la sicurezza ai servizi web ed è una specifica redatta da OASIS. Il protocollo specifica come può essere rafforzata l'integrità e la confidenzialità e permette la comunicazione di vari token di sicurezza, come SAML, Kerberos e X.509. Il principale obiettivo è l'utilizzo della firma XML e della crittazione XML per garantire la sicurezza end-to-end a livello di messaggio.
Contesto
Solitamente i meccanismi di sicurezza a livello di trasporto sono quelli più utilizzati quando si opera in un contesto popolato da intermediari o pari livello come negli ambienti di Enterprise Service Bus. Può però sorgere l'esigenza di criptare campi diversi con chiavi diverse e in questi casi servono dei meccanismi a livello di messaggio o applicazione (end-to-end).
Introdurre la sicurezza a livello di trasporto non hanno nessun impatto sulle applicazioni né tantomeno, nello specifico a livello di WSDL, mentre la sicurezza a livello di messaggio impatta sicuramente su vincoli, implementazioni di web service e specifiche e quindi anche sul WSDL.
Cosa è
WS-Security punta ad un arricchimento del messaggio SOAP in modo da garantire l'integrità e la confidenza supportando PKI, Kerberos, SSL e altre tecnologie di firma e criptazione.
Come funziona
La specifica si basa su un token e definisce un meccanismo generico per fare in modo che il token sia associato al contenuto del messaggio (supportando tipi diversi di token). La specifica WS-Security descrive anche come criptare tokens e includere chiavi "opache" (ricevute incapsulate o criptate).
Vengono definiti tre meccanismi di sicurezza. Assieme alla possibilità di inviare tokens di sicurezza come parte del messaggio, ci sono altri due meccanismi per garantire l'integrità e la confidenzialità del messaggio.
Usandone solo uno di questi non si può garantire la sicurezza completa di un Web Service, ma possono essere combinati fra loro come, ad esempio, firmando e criptando parte di un messaggio e fornendo un security token associato alla chiave usata per la firma e la criptazione.
Definizioni
Security Token: una collezione di uno o più claims, in particolare un Signed Security Token è un Security Token firmato e criptato da un’autorità (ad esempio con un certificato X.509 o un ticket Kerberos);
Trust: caratteristica di un’entità che è disposta a contare su un’altra per eseguire azioni e/o fare asserzioni su un insieme di argomenti o ambiti.
Certificato X.509: è uno standard proposto dall'Unione internazionale delle telecomunicazioni (ITU-T), usato per definire il formato dei certificati a chiave pubblica (PKC) e delle autorità di certificazione (CA). I certificati vengono utilizzati per la validazione dell'identità e la trasmissione di dati criptati che solo il possessore (persona, organizzazione o applicazione) di uno specifico certificato è in grado di decifrare e leggere. Questi vengono rilasciati dalle Certificate authority (CA), un soggetto terzo fidato che assicura la corrispondenza di una chiave pubblica a una determinata identità. Uno degli usi più diffusi di X.509 è nell'ambito internet, il certificato SSL/TLS viene usato nell'omonimo protocollo per criptare le comunicazioni tra un sito web e il nostro browser.
Il modello di sicurezza dei messaggi WS-Security
Le componenti del messaggio
wsse:SecurityToken: sezione dedicata a gestire le informazioni d'autenticazione
Message confidentiality: Sezione destinata a gestire le informazioni di cifratura del messaggio (XML Encryption
Message integrity: Sezione destinata a gestire le informazioni di firma del messaggio o relative parti (XML Signature)
wsu:TimeStamp: sezione destinata a contenere le informazioni temporali del messaggio, che possono essere usate dal destinatario per stabilire la validità dell'informazione contenuta.
Gli attributi del messaggio
/wsse:Security/@S12:role : Attributo (SOAP 1.2) opzionale per identificare un ruolo
/wsse:Security/@S11[S12]:mustUnderstand : Attributo (SOAP 1.1 [1.2]) opzionale utilizzato per indicare se un header è opzionale o obbligatorio per un destinatario. Quando un header include un attributo mustUnderstand="true" il destinatario deve generare un errore SOAP se non implementa le specifiche WSS:SOAP Message Security corrispondenti al namespace o se non in grado di processare i security tokens inclusi nell’haeder. In base a policies di sicurezza locali, il destinatario potrebbe comunque ignorare alcuni elementi o estensioni dell’header.
/wsse:Security/{any} : Meccanismo estensibile che consente di passare diversi tipi di informazioni di sicurezza; le informazioni passate dovrebbero rispettare uno schema, viceversa potrebbero generare errori durante l’esecuzione
/wsse:Security/@{any} : Meccanismo estensibile che consente di passare diversi attributi; gli attributi dovrebbero rispettare uno schema, viceversa potrebbero generare errori durante l’esecuzione
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale
Commenti
Posta un commento