[OpenID] Claimed Identifiers and Query String Parameters

Martin Atkins mart at degeneration.co.uk
Thu Sep 4 07:17:20 UTC 2008


SitG Admin wrote:
> 
> As described in my first reply to Joe Tele, the idea is to look for (a 
> hash of) the typed-in ("claimed") ID *and* the Directed ("final") ID, 
> requiring a match on *both* of those strings to proceed. I designed mine 
> this way because I didn't understand what was going on with Directed 
> Identity well enough to be *certain* there weren't any risks in relying 
> on just the Directed identifier.
> 

One of the steps in verifying a positive assertion from an OP -- in the 
directed identity flow or otherwise -- is ensuring that the OP that 
provided the assertion is declared as a provider for the URL it is 
asserting for, using the same discovery steps that found the OP in the 
first step.

Most of the time you can optimise this by retaining some information at 
your end when you initiate the request so that you don't need to repeat 
discovery. For example, you can cache the discovery results for a given 
URL so that when you need to repeat discovery to process the positive 
assertion you don't need to make a further HTTP request. In the directed 
identity case though, you won't have yet done discovery on the final 
identifier so the right time to do this is when verifying the positive 
assertion.

If you verify that the final identifier declares the asserting OP as an 
allowed provider as required by the spec then there ought to be no more 
risk to it than the standard claimed identifier flow. Certainly I can't 
think of any advantage you gain by storing the OP identifier. If you 
want to "lock" an identifier to a given OP (which I don't think is a 
good idea anyway) it's probably better to use the OP *endpoint* URL as 
the key, since this is what the spec itself uses as the primary 
identifier for an OP.





More information about the general mailing list