Tutto l'impianto di sicurezza di WCF si basa sul concetto di claim. Partiamo quindi dalla definizione di Claim: "An assertion of the truth of something, typically one which is disputed or in doubt."
Possiamo allora pensare ad una claim come il numero della nostra carta d'identità, il numero della patente, la nostra data di nascita, la nostra user name di dominio ecc ecc. Un insieme di claims possono quindi identificarci univocamente oppure classificarci (es. siamo maggiorenni).
La classe System.Security.Authorization.Claim fornisce un set di claims predefiniti, come il Dns (CreateDnsClaim) il SID windows (CreateWindowsSidClaim) e così via. Per ogni claim abbiamo 3 proprietà:
- ClaimType - deinisce il tipo di claim (es. Dns, File, Sid)
- Right - defnisce i diritti sul claim (lettura, scrittura, identità o possesso)
- Resource - definisce il contenuto del claim
Ecco quindi ce se eseguiamo il seguente codice:
Claim claim = Claim.CreateWindowsSidClaim(WindowsIdentity.GetCurrent().User);
Console.WriteLine("Type: {0}", claim.ClaimType);
Console.WriteLine("Right: {0}", claim.Right);
Console.WriteLine("Value: {0}", claim.Resource);
vedremo che il mio claim sid ha le seguenti caratteristiche:
Type: http://schemas.microsoft.com/xsi/2005/05/ClaimType/Sid
Right: http://schemas.microsoft.com/xsi/2005/05/Right/PossessProperty
Value: S-1-5-21-912560629-2153810346-1555082130-2321
A che serve tutto questo ? Se utilizziamo le claims standard fornite da WCF a poco o nulla, ma se ci serve per capire come creare le nostre claims allora comprendere come sono e come si usano diventa importante...