In openID 1.0 there was a clear relationship between the input identifier and the resulting authentication.
If I delegate my openID to Linksafe eg:
I include in the html returned by a GET on httpL//thread-safe.net
If I log in and get a positive assertion I have proved the claim that I control the URL http://thread-safe.net.
In OpenID 2.0 things change sometimes:)
If I do the same thing with openID 2.0
The OP might do exactly the same thing in exactly the same way.
Going to the OP openid.claimed_id="http://thread-safe.n et" and openid.identity="=thread-safe"
The OP could return both unchanged with a positive assertion. This results in the same proof we had in openID 1.0.
The OP may however choose to alter the openid.claimed_id and could return something like openid.claimed_id="https://linksafe.nam e/=thread-safe"
Changing the openid.claimed_id is something Yahoo for example is doing with there OP. The RP preforms discovery on the new openid.claimed_id and if the OP is authoritative for the URL according to the rules, the RP must ether use the new openid.claimed_id or reject the login.
In the case where the person is coming directly from there OP without first being redirected from the RP (Unsolicited positive assertion, Sec 11.2), there is no Input identifier that the RP knows about.
In the case where directed identity is requested by the RP by sending openid.identity="http://specs.openid.ne t/auth/2.0/identifier_select", the RP should be smart enough to know that the input identifier has nothing to do with the verified resource and should not be used for any purpose.
The question is what to do in the case of a solicited response.
Consider something like the Yahoo case. There endpoint ignores the incoming openid.identity and asks me to login to my, or anyones yahoo account for that matter.
The RP sends openid.claimed_id="http://thread-safe.n et" and openid.identity="https://me.yahoo.com/v e7jtb"
If I choose https://me.yahoo.com/ve7jtb as my Yahoo openID, yahoo sends a positive assertion for openid.claimed_id="http://thread-safe.n et/" and openid.identity="https://me.yahoo.com/v e7jtb".
The RP accepts it like any delegation and my primary key at the RP is http://thread-safe.net/
Consider now if I log into yahoo as jbradley and select https://me.yahoo.com/jbradley as my openID
openid.claimed_id="http://thread-safe.n et/" and openid.identity="https://me.yahoo.com/j bradley" are retuned by Yahoo.
There is now no relation between my input identifier, my claimed_id and my authentication.
The openID 2.0 spec talks about what to do if the openid.claimed_id changes and how we re validate that. In this case the openid.claimed_id hasn't changed only the openid.identity is different.
Clearly I was a fool for delegating my ID to Yahoo without understanding the consequences.
I did find that Plaxo detected the modification of openid.identity and failed to reverify that Yahoo was authoritative.
Other sites we won't talk about. I need to verify that my failure at Plaxo was Michael correctly detecting something was wrong or some other error I might be able to overcome.
OpenID 2.0 adds some good and powerful features. However RP's and OP's need to understand the changes to the architecture.
I am just starting to look at Directed Identity issues for XRI and how a iName OP would support the new features.
=jbradley
PS I have changed my rel tags back on thread-safe.net so forget trying to get into my accounts using this:)
If I delegate my openID to Linksafe eg:
I include in the html returned by a GET on httpL//thread-safe.net
If I log in and get a positive assertion I have proved the claim that I control the URL http://thread-safe.net.
In OpenID 2.0 things change sometimes:)
If I do the same thing with openID 2.0
The OP might do exactly the same thing in exactly the same way.
Going to the OP openid.claimed_id="http://thread-safe.n
The OP could return both unchanged with a positive assertion. This results in the same proof we had in openID 1.0.
The OP may however choose to alter the openid.claimed_id and could return something like openid.claimed_id="https://linksafe.nam
Changing the openid.claimed_id is something Yahoo for example is doing with there OP. The RP preforms discovery on the new openid.claimed_id and if the OP is authoritative for the URL according to the rules, the RP must ether use the new openid.claimed_id or reject the login.
In the case where the person is coming directly from there OP without first being redirected from the RP (Unsolicited positive assertion, Sec 11.2), there is no Input identifier that the RP knows about.
In the case where directed identity is requested by the RP by sending openid.identity="http://specs.openid.ne
The question is what to do in the case of a solicited response.
Consider something like the Yahoo case. There endpoint ignores the incoming openid.identity and asks me to login to my, or anyones yahoo account for that matter.
The RP sends openid.claimed_id="http://thread-safe.n
If I choose https://me.yahoo.com/ve7jtb as my Yahoo openID, yahoo sends a positive assertion for openid.claimed_id="http://thread-safe.n
The RP accepts it like any delegation and my primary key at the RP is http://thread-safe.net/
Consider now if I log into yahoo as jbradley and select https://me.yahoo.com/jbradley as my openID
openid.claimed_id="http://thread-safe.n
There is now no relation between my input identifier, my claimed_id and my authentication.
The openID 2.0 spec talks about what to do if the openid.claimed_id changes and how we re validate that. In this case the openid.claimed_id hasn't changed only the openid.identity is different.
Clearly I was a fool for delegating my ID to Yahoo without understanding the consequences.
I did find that Plaxo detected the modification of openid.identity and failed to reverify that Yahoo was authoritative.
Other sites we won't talk about. I need to verify that my failure at Plaxo was Michael correctly detecting something was wrong or some other error I might be able to overcome.
OpenID 2.0 adds some good and powerful features. However RP's and OP's need to understand the changes to the architecture.
I am just starting to look at Directed Identity issues for XRI and how a iName OP would support the new features.
=jbradley
PS I have changed my rel tags back on thread-safe.net so forget trying to get into my accounts using this:)



Comments
As for yahoo behavior, do I get it right that you pass to yahoo
claimed_id=threadsafe
identity=some-yahoo-identity
and get back a
claimed_id=threadsafe
identity=some-other-yahoo-identity
right? If so, I'd think it a bug. But harmless one, due to proper RP behaviour. As long as the confirmed by yahoo identity is not in agreement with the discovery results the assertion is righteously denied rights to exist.
You can, of course, add both endpoints to your XRDS and then you should get authorized.
identity=some-other-yahoo-identity
while still asserting
claimed_id=thread-safe.net
Which is the RP doing discovery on?
If the XRDS for thread-safe.net has a URI https://open.login.yahooapis.com/op
as it would if I were doing delegation, would doing discovery validate the asertian made by https://open.login.yahooapis.com/op
As far as I know the validation of the OP being authoritative doesn't look at the LocalID.
It may or may not be a bug, on the Yahoo side.
If they asserted a changed claimed_ID for use by the RP as the primary key it would be clearer.
=jbradley
Well, definitely OP URI is not enough to validate identity. LocalID is very important. Suppose we both have accounts with myopenid.com (which I'm sure we do) and you get assertion for YOUR claimed id with MY local id. That would basically mean that I can impersonate you unless I also check LocalID.
I do think it's a bug on their part. Perhaps "bug" is a strong word, but it's weird behavior.