<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I believe that was one of the arguments traditional hypertext people made in the beginning of the web: "how do we know that following a link necessarily leads anywhere?" -- the same problem, essentially.<div><br></div><div>Did not prevent the web from being used, however ;-)</div><div><br></div><div>Worse is the OpenID-lost-and-lost-access-to-account problem that I just wrote about re possible future work for OpenID:</div><div><span class="Apple-tab-span" style="white-space:pre">        </span><a href="http://netmesh.info/jernst/Digital_Identity/openid-whats-next-200807.html">http://netmesh.info/jernst/Digital_Identity/openid-whats-next-200807.html</a></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br><div><div><div>On 2008/07/16, at 7:07, Andrew Arnott wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">Agreed.&nbsp; Pinging in advance in any fashion probably isn't the answer.&nbsp; But it's a shame that, aside from frames which suffer from fear of phishing as I described, there's no way for an RP to recover after an OP fails.&nbsp; The user just needs to learn to click Back if that happens.&nbsp; But even then, what is the user to do?&nbsp; Logging in again will surely fail again..... so he leaves the RP site.&nbsp; To an RP that really doesn't want to lose users to this, they may want to seriously consider the extra checkbox saying "choose your provider."&nbsp; <br> <br>But then, 99.9% of OpenID users today don't have an XRDS listing more than one OP anyway.&nbsp; Most of them have <a href="http://yahoo.com">yahoo.com</a> or some other extremely reliable OP though, so it's mostly a non-issue I guess.<br> <br>Just ramblings as you can tell.<br><br><div class="gmail_quote">On Wed, Jul 16, 2008 at 1:02 AM, James Tindall &lt;<a href="mailto:james@atomless.com">james@atomless.com</a>> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"> Yes, a redirect does not solve the problem of an offline OP. I think<br> you're right 'pinging' the OP prior to authenticating to ensure that<br> it's online may be the only solution.<br> It just seems unfortunate to have to add yet another RP to OP<br> communication step just to cater for any, probably extremely infrequent,<br> OP downtime?<br> <div><div></div><div class="Wj3C7c"><br> =james.tindall<br> <br> Andrew Arnott wrote:<br> > As I understand it, checkid_immediate is an optional step the RP can take,<br> > that was added for AJAX scenarios. &nbsp;In my mind, this is a useless feature as<br> > checkid_setup also tends to be 'immediate' if checkid_immediate would have<br> > worked, and if checkid_immediate fails, then the very next thing the RP<br> > inevitably does is follow up with a checkid_setup request.<br> ><br> > As far as testing for OP-deadness, checkid_immediate is no good because it's<br> > a redirect of the browser just as checkid_setup is. &nbsp;If the OP is dead, the<br> > user gets a dead-end error page regardless of what the openid.mode is set<br> > to.<br> ><br> > Now, assuming all OPs are alive, the idea of running through all endpoints<br> > with checkid_immediate first to see if any happen to authenticate, and only<br> > if that fails doing a checkid_setup on the first good OP in the list is an<br> > interesting idea. &nbsp;It would serve the user as he/she would have a higher<br> > likelihood of not being prompted for credentials, which is cool. &nbsp;On the<br> > negative side, it means that if the user has 3+ OPs listed, he gets<br> > redirected *4 times* before finally seeing his first OP's authentication<br> > page if none of them are willing to checkid_immediate.<br> ><br> > On Tue, Jul 15, 2008 at 9:16 AM, James Tindall &lt;<a href="mailto:james@atomless.com">james@atomless.com</a>> wrote:<br> ><br> ><br> >> I've not double checked what the spec has to say about this Andrew but it<br> >> seems to me that if an association with the chosen OP exists and is alive<br> >> then the RP should simply attempt authorization using 'checkid_immediate'<br> >> and if that then fails the RP should try authentication using the next<br> >> endpoint in the list?<br> >><br> >><br> >><br> >><br> >> Andrew Arnott wrote:<br> >><br> >><br> >>> Another thought: since a responsible RP only creates a single association<br> >>> with an OP and stores it until it expires, and these associations often<br> >>> last<br> >>> days, if the user has an endpoint in the XRDS doc that points to an OP<br> >>> that<br> >>> is currently down, but with whom the RP has an existing, unexpired<br> >>> association with, the RP shouldn't try to create an association with that<br> >>> OP. &nbsp;Instead, it might say to itself "yes, I successfully have an<br> >>> association with this OP, so I'll redirect the user to it", but the OP<br> >>> happens to be down for 5 hours that day, effectively disabling the user's<br> >>> ability to log in, in spite of the multiple OPs listed in the XRDS doc.<br> >>><br> >>> So... perhaps OpenID can have a "ping, are you alive?" message in its<br> >>> protocol. &nbsp;But then we're no better than "dumb" RPs having to make<br> >>> multiple<br> >>> hits to the OP instead of just one.<br> >>><br> >>> Another idea that keeps occuring to me is that the RP can use a frameset<br> >>> to<br> >>> keep an RP frame around and have the OP authentication happen in another<br> >>> frame (iframe or frameset would work). &nbsp;That way, the RP frame could have<br> >>> something like "Is your Provider not responding? &nbsp;Click here to try your<br> >>> next best choice..." or something to that effect. &nbsp;The problem with this<br> >>> idea is that the URL on the browser will always be the RP, so the user<br> >>> will<br> >>> have one less way to confirm that this is indeed his genuine Provider and<br> >>> not one of those notorious OpenID RP phishing attacks.<br> >>><br> >>> Anyone have any idea how to solve this dead OP problem?<br> >>><br> >>> On Tue, Jul 15, 2008 at 1:52 AM, James Tindall &lt;<a href="mailto:james@atomless.com">james@atomless.com</a>><br> >>> wrote:<br> >>><br> >>><br> >>><br> >>><br> >>>> I've recently been writing an openid relying party library for the<br> >>>> Kohana php framework and I think you're right, the way I've tried to<br> >>>> handle multiple enpoints returned from the discovery phase is to first<br> >>>> sort them by their priority values and then also filter out any that do<br> >>>> not meet the (extension / security / openid-version) requirements set in<br> >>>> the current relying party configuration and then finally attempt to<br> >>>> establish an association with each endpoint in turn until a successfull<br> >>>> association response is returned.<br> >>>><br> >>>> I feel that all this is best done invisibly rather than requesting the<br> >>>> user to jump through extra hoops. The user has after all -at some point-<br> >>>> set the priority of the endpoints listed in the xrds and I suspect that<br> >>>> most would not wish for further input during the process of<br> >>>> authentication. My assumption being that the point of multiple endpoints<br> >>>> is to hopefully cater for the requirements of as many different relying<br> >>>> parties as possible and to have alternative/backup endpoints incase of<br> >>>> errors or failures with any of the other endpoints in the list during<br> >>>> authentication?<br> >>>><br> >>>> =james.tindall<br> >>>><br> >>>> Andrew Arnott wrote:<br> >>>><br> >>>><br> >>>><br> >>>>> I'm curious how other libraries do (or plan to) handle multiple<br> >>>>> endpoints<br> >>>>><br> >>>>><br> >>>>><br> >>>> in<br> >>>><br> >>>><br> >>>><br> >>>>> a single XRDS document. &nbsp;I see a few considerations, in order:<br> >>>>><br> >>>>> &nbsp; 1. Enumerate the services in the XRDS-defined priority order<br> >>>>> &nbsp; 2. Skip the services that do not expose OpenID endpoints.<br> >>>>> &nbsp; 3. Skip the OpenID endpoints with Providers that do not quality<br> >>>>> &nbsp; (whitelist/blacklist or advertised extension support<br> >>>>> &nbsp; 4. Take the first endpoint that is left after these filters.<br> >>>>><br> >>>>> But what about the rest of the endpoints listed? &nbsp;Here are some<br> >>>>> possibilities:<br> >>>>><br> >>>>> &nbsp; 1. Just use the first endpoint and trust it works.<br> >>>>> &nbsp; 2. Try each one successively. &nbsp;That is, the RP should attempt to<br> >>>>> &nbsp; establish an association with each one until it succeeds with one, and<br> >>>>><br> >>>>><br> >>>>><br> >>>> then<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; redirect the user to that one for authentication. &nbsp;Redirecting the<br> >>>>><br> >>>>><br> >>>>><br> >>>> user to<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; an unavailable Provider will result in a dead end failure page and the<br> >>>>><br> >>>>><br> >>>>><br> >>>> RP<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; will lose the opportunity at this point to try the next endpoint.<br> >>>>> &nbsp; 3. A variant on the last, except that in addition to skipping OPs that<br> >>>>><br> >>>>><br> >>>>><br> >>>> do<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; not respond to association requests, allow the user to "fail" or<br> >>>>><br> >>>>><br> >>>>><br> >>>> cancel the<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; authentication on the first provider and proceed to the second<br> >>>>><br> >>>>><br> >>>>><br> >>>> provider<br> >>>><br> >>>><br> >>>><br> >>>>> &nbsp; listed for another authentication attempt.<br> >>>>> &nbsp; 4. Offer the user a list of his/her providers to choose from for<br> >>>>> &nbsp; authentication.<br> >>>>><br> >>>>> Have thoughts been written already on which of these are best and/or<br> >>>>><br> >>>>><br> >>>>><br> >>>> common<br> >>>><br> >>>><br> >>>><br> >>>>> in existing libraries?<br> >>>>><br> >>>>><br> >>>>> ------------------------------------------------------------------------<br> >>>>><br> >>>>> _______________________________________________<br> >>>>> general mailing list<br> >>>>> <a href="mailto:general@openid.net">general@openid.net</a><br> >>>>> <a href="http://openid.net/mailman/listinfo/general" target="_blank">http://openid.net/mailman/listinfo/general</a><br> >>>>><br> >>>>><br> >>>>><br> >>>>><br> <br> _______________________________________________<br> general mailing list<br> <a href="mailto:general@openid.net">general@openid.net</a><br> <a href="http://openid.net/mailman/listinfo/general" target="_blank">http://openid.net/mailman/listinfo/general</a><br> </div></div></blockquote></div><br> _______________________________________________<br>general mailing list<br><a href="mailto:general@openid.net">general@openid.net</a><br>http://openid.net/mailman/listinfo/general<br></blockquote></div><br></div></div></body></html>