[OpenID] Trying to understand OpenID/OAuth (hybrid)
SitG Admin
sysadmin at shadowsinthegarden.com
Sun Feb 22 00:54:38 UTC 2009
I understand enough to see that this is an important problem, but not
enough to really contribute to the discussion. To test (and hopefully
develop further) my understanding, I'll disclose the most informative
links I've found and explain as best as I can what I've got so far;
in case others here share my frustration, I'll disclose it on this
list instead of asking an OAuth architect off-list.
http://www.pointy-stick.com/blog/2008/03/13/explanation-difference-between-openid-and-oauth/
http://portalzone.blogspot.com/2007/12/openid-oauth-complimentary-or-competing.html
http://softwareas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing
Standard relationships on the 'net are between two parties: a user
and a site, usually. If there were graphics here, I would be drawing
a single line with a blob at either end of it.
OpenID involves three parties (delegation can make this more
complicated, but I'm beginning with the simple), a user and URI/IDP
who have an existing relationship, and another site that the user is
asking to recognize as the URI/IDP because the URI/IDP vouches for
this.
(I realize that this is not the traditional model of OpenID, that we
have *users* - people - not sites, but in practice this is what we
have: the identity is centered on a URI, and the RP is dealing with
the user through that user's browser rather than the URI/IDP through
the web-server there.)
OAuth involves three parties (the hybrid simplifies this, but would
then introduce additional complications), the user, a site that has
the user's data, and another site (presumably the RP) that the user
wants to share *some* of their data with.
Both of these would have THREE blobs if using graphics; add unique
icons (instead of just formless blobs) for each role, and we have
what's beginning to look like a rudimentary molecular diagram.
OpenID starts with the user telling their URI/IDP "Give me a writ of
authority so that I may act on your behalf." (it may even start
before that, at the RP, who says "I don't know you, anyone can claim
to be acting on behalf of that URI/IDP; go and fetch me a letter to
prove that you act with their blessing."), who then carries it to the
RP (which may confirm it by actually learning the 'unique
handwriting' of the URI/IDP so the signature can be verified) and is
granted access to services, or whatever the RP is offering.
OAuth starts with the user telling some site (presumably a RP) that
they want to import data from *another* site (known as "SP" for
Service Provider), but the RP says "I don't have the authority to
seize their data, I'll need a permission slip from the SP site. If
*you* can bring me such a slip, *then* we can proceed." and
dispatches the user to the SP site, where the user has an opportunity
to prove to the SP that *this* user has the authority to make the SP
sign a permission slip authorizing the release of whatever data was
requested. The user then brings this slip back to the RP, and the RP
does appropriate things with it without bothering the user, unless
the signature on that permission slip turns out to be a forgery (or
for any other reason the SP rejects it).
There are *two* problems with combining OpenID and OAuth, when the OP
is not the same as the SP: the first problem is that single-sign-on
breaks because the user must log on to *each* SP holding data they
want to share with another site. An obvious solution to this is
letting some OAuth-specific site (such as the OP) act as an
intermediary between the user and all their OAuth sites, and this
leads straight to the *other* problem: just because Alice (the user)
has okayed Bob (the RP) to access data from Dave (the SP), doesn't
mean that Alice wants Carol (the OP) to have that access as well.
Venturing into complicated territory, Dave might check Alice's URI to
see if Carol is still authorized to sign writs of authority for that
URI (imagine that Carol used to be Alice's boss at their company, but
then the company fired Carol - and though Carol is still Carol, she
doesn't represent the company anymore). Alice might keep an XRDS file
about her SP's (including Dave) at her URI, but then everyone in the
world knows where Alice keeps her data (and what permissions she has
given to various OP's to access that data). Anyone can tell, at a
glance, whether Alice has any data types they would be interested in,
and - if so - which OP's they should compromise to gain access to it.
Encryption (using keys held only by each SP) could help in case of
breaches, but it seems that the ready, stop-gap measure is simply to
protect the XRDS file with another OAuth provider.
-Shade
More information about the general
mailing list