If you ask any search engine “What is a Claim?” and you mean the sort of claim used in the WS-* security space, you’ll likely find an answer somewhere, but that answer is just as likely buried in a sea of complex terminology that is only really comprehensible if you have already wrapped your head around the details of the WS-* security model. I would have thought that by now there would be a simple and not too technical explanation of the concept that’s easy to find on the Web, but I haven’t really had success finding one.
So “What is a Claim?” It’s really simple.
A claim is just a simple statement like “I am Clemens Vasters”, or “I am over 21 years of age”, or “I am a Microsoft employee”, or “I work in the Connected Systems Division”, or “I am authorized to approve corporate acquisitions with a transaction volume of up to $5Bln”. A claim set is just a bundle of such claims.
When I walk up to a service with some client program and want to do something on the service that requires authorization, the client program sends a claim set along with the request. For the client to know what claims to send along, the service lets it know about its requirements in its policy.
When a request comes in, this imaginary (U.S.) service looks at the request knowing “I’m a service for an online game promoting alcoholic beverages!”. It then it looks at the claim set, finds the “I am over 21 years of age” claim and thinks “Alright, I think we got that covered”.
The service didn’t really care who was trying to get at the service. And it shouldn’t. To cover the liquor company’s legal behind, they only need to know that you are over 21. They don’t really need to know (and you probably don’t want them to know) who is talking to them. From the client’s perspective that’s a good thing, because the client is now in a position to refuse giving out (m)any clues about the user’s identity and only provide the exact data needed to pass the authorization gate. Mind that the claim isn’t the date of birth for that exact reason. The claim just says “over 21”.
Providing control over what claims are being sent to a service (I’m lumping websites, SOAP, and REST services all in the same bucket here) is one of the key reasons why Windows CardSpace exists, by the way. The service asks for a set of claims, you get to see what is being asked for, and it’s ultimately your personal, interactive decision to provide or refuse to provide that information.
The only problem with relying on simple statements (claims) of that sort is that people lie. When you go to the Jack Daniel’s website, you are asked to enter your date of birth before you can proceed. In reality, it’s any date you like and an 10-year old kid is easily smart enough to figure that out.
All that complex security stuff is mostly there to keep people honest. Next time …