[OpenID] Multiple Domains and State

Trey Long trey at propeller.com
Thu Apr 24 13:30:36 UTC 2008


I don't know openId as well as I should either but your insights are  
very informative.

On Apr 23, 2008, at 11:04 PM, Nate Klingenstein wrote:

> Trey,
>
> Bear in mind I'm relatively new to this spec, and going pretty deep  
> into it to answer you, so I might make a mistake.
>
>> In the example auth.com would be a trusted resource and if the user  
>> had no session would ask about his identity (openid.com/trey).  
>> Auth.com would confirm the authentication in the standard way and  
>> communicate with the original domain that this users identity  
>> "openid.com/trey" has been verified.
>
> "Communicate with the original domain" is the tricky step.  How?  It  
> can't forward the claimed identity because the claim was issued for  
> auth.com's eyes only.  It can't claim the identity openid.com/trey  
> because it doesn't control the URL.  It also can't spoof the  
> response because it's signed.
>
> It could spoof a request on behalf of the original domain to  
> openid.com, getting the right return URL, but then why route the  
> flows through auth.com in the first place, since it's not  
> maintaining state?  It becomes a lookup service for OP's exactly  
> like Shibboleth's WAYF; useful in some situations, but probably not  
> what you're looking for.
>
> This is a generic feature of security protocols that use bearer  
> tokens, I'm afraid.  It's a deliberate measure to prevent a  
> legitimate recipient of an assertion from replaying it at another RP.
>
> You're trying to circumvent this security measure in a legitimate  
> way, but doing so requires either:
>
> A) extra trust between auth.com and the end domain (and, in this  
> case, a different protocol if you want to remain spec-valid); or
> B) a trust fabric between openid.com, auth.com, and the end domain  
> so that you can make use of the Realms feature in 2.0 Auth(section  
> 9.2).

I apologize but the language of the spec (9.2) from a standpoint of  
speculation is hard to follow. I can't quite grasp how realms would  
facilitate the task at hand. Also I would assume auth.com is a trusted  
resource of some kind which is given permission to act as a proxy from  
which openId authentication occurs from.

>
>
>> I would expect auth.com to act as a proxy for the entire  
>> authorization chain and would be the return URL. This would allow  
>> auth.com to establish state and then return the user to the  
>> original domain. The original domain would then do the requisite  
>> communication directly with auth.com to confirm.
>
> Depending on how you do it, various things would fail, again by  
> design.
>
> A)  If you pass along the entire assertion unmodified, the original  
> domain MUST dump it because the return URL doesn't match (11.1);
> B)  If you try to send openid.com/trey from auth.com, the signature  
> won't be verifiable, because you don't control the domain it  
> resolves to; or
> C)  If you send auth.com/trey, the original domain will be receiving  
> the wrong identifier.
>
>> If you think it's a resource that would help with this problem send  
>> it on. Ideally it would be great if I could either fit this within  
>> openId or extend openId to support trusted chains or proxies. If  
>> not, home brew will do.
>
> Probably, but it's pretty dense.  I'd just homebrew this part, or  
> hardcode some overrides into your validation code if you really want  
> to use OpenID.
>
> Peter's suggestion to use attributes would work too.  That's what we  
> did in Shibboleth.  There's just too much riding on successful  
> identifier validation in OpenID, so deliberately breaking that's  
> kinda dangerous.
>
>> It does seem though that single sign on for multiple domains is  
>> desired elsewhere. I would like to hear other thoughts on the topic  
>> as well, outside of my original idea that may apply. Perhaps I am  
>> being stupid about the solution, it certainly wouldn't be the first  
>> time.
>
> It's definitely not the first time I've heard the use case.  The  
> trouble is that there's no good, lightweight solution. ;D
>
> Take care,
> Nate.

Thanks for the ideas, if auth.com is just a home brew session state  
server that will be fine. This problem seems so close to openId though  
I really wanted to see a solution that involved it. It seems a logical  
next step anyway.

Trey






More information about the general mailing list