[OpenID] oauth assertion bearer grant - motivation?
Peter Williams
home_pw at msn.com
Fri Jan 24 03:52:32 UTC 2014
So lets summarize.
Opened connect, and bearer auth from saml blobs to jwt blogs, are about millions of (X.500 style) security management domains setting up mutual trust relationship, having a cloud fabric (read X.500 chaining directory agent) enforce and enact lots of reliance policies established by namespace, and otherwise swapping id tokens for API guard-passing tokens, with the possibility that a id_token issued by IDP.X is recognized by the token swappers of another cloud, associated with IDP.Y, where X and Y have some policy agreements.
Ok. I get openid connect now. There are several layers of trust relationships, meta-trust relationship, and meta-meta trust (etc), that account for when one IDP relies on another for some or other purpose, as above.
Still think cross-certs were better suited for all this, particularly with the flexible algebra of policy matching built into X.509 v3, but that's a lost battle.
Thanks for the help. Reasons to at least partially adopt openid connect were made obvious. One sees the writing on the wall, now (and it is good).
Sent from Surface Pro
From: John Bradley
Sent: Thursday, January 23, 2014 3:30 PM
To: peter Msn
Cc: openid-general at lists.openid.net
The Bearer grant allows the SAML assertion to be passed directly to the token endpoint as the grant cutting out the Authorization web redirect and return of the code.
This is a optimization useful where the AS doesn't need to collect consent from the user. However the SAML IdP and the AS need to agree on how the scopes to be granted are represented in the assertion.
In Connect it is possible to ask for a id_token with a 3rd party as the audience. (Google is doing that with the play store) That id_token can be used in the JWT bearer grant http://tools.ietf.org/html/draft-ietf-oauth-jwt-bearer to get a access token for a 3rd party API.
So a native app could do Connect authentication hypothetically Google then use it's refresh token to ask for a id_token with SalesForce or Microsoft as the audience and then use the id_token as the JWT grant to get a access token for SF or Azure as examples. This is more likely than Google being able to issue access tokens for those 3rd party API directly.
Yes you can have the app redirect to the AS and the AS do SSO Connect or SAML to a 3rd party IdP and that works but may disclose more information to the AS than is actually required.
So it is an alternate way to cross security boundaries.
John B.
On Jan 23, 2014, at 6:24 PM, Peter Williams <home_pw at msn.com> wrote:
Say just a little more, since this swapping of “enterprise” issued (saml blob) tokens all overlaps with openid connect in my mind - where the latter has different type of jwt: one for passing (classical oauth-powered) access guards at webapis, and those one's delivering identity claims and attributes from a backroom directory.
Ive built and deployed a websso and oauth hybrid. Invoking authorization via a (embedded)Brower requires one to conclude websso, with a wsfedp idp, that mints saml tokens. Said token opens the consent gate, that controls minting of oath grants. Subsequently, Use of token endpoint, citing a one time code or other proof token, returns a Json object with one or more jwts, and the websso bearer token, and an microsoftonline sts-issued(swapped from bearer) token usable at office365 wstrust/wssecurity/wssecureconversation guarded APIs.
thick clients, phone apps, tablet apps and websites acting as agents are all happy with all that. And it fits with today's devices and middleware now (finally) adopted by us realty, and its 300 vendors.
What the oath bearer grant has done is confuse me more, particularly in understanding how the scopes from grants are aggregated, and WHY. I already don't really get how I'm supposed * to use* different jwts, in the openid connect profile, for “radically innovative” use cases that align with how folks are assuming enterprise, and social, and APIs, and mixed app\browser apps are all supposed to work, next generation.
Prehaps a call for a blog post or two?
Sent from Surface Pro
From: John Bradley
Sent: Thursday, January 23, 2014 11:34 AM
To: peter Msn
Cc: openid-general at lists.openid.net
This is the openID list and not a OAuth list, but I will attempt an answer.
For others on the list the specs are http://tools.ietf.org/html/draft-ietf-oauth-saml2-bearer and http://tools.ietf.org/html/draft-ietf-oauth-assertions
Basically it is a way to do token translation. In some cases when interfacing with Enterprise systems getting them to issue a SAML token may be easier the simplest thing to do.
The resource server (RS) however likely only understands a single access token form. GUID or JWT for the most part. The assertion profiles let the client translate a JWT or SAML assertion into a OAuth access token.
This can be quite useful in crossing security domains where the AS is relying on a 3rd party to authenticate the user. The AS could redirect to a SAML IDP using websso but on mobile devices that might not be optimal.
The scopes associated with the access token can be a subset of the ones granted by the SAML assertion. In some cases with multiple endpoints you may want to down scope the access token.
The biggest user of this flow is SalesForce as far as I know.
John B.
On Jan 23, 2014, at 3:46 PM, Peter Williams <home_pw at msn.com> wrote:
It took me a while (and several years of lateness) to comprehend just what kind of world the classical oauth grants were designed for. One advantage of being late to the party was that I tended to get better variants, such as a grant returning a JWT bearing attributes rather than using grants that returnee guids as tokens - that had to be subsequently resolved.
So what is the “use case” of the saml2 bearer assertion grant?
I makes perfect sense that someone with a bearer assertion might swap it for a JWT, for use at APIs. And it makes perfect sense that such a saml assertion plays much the same role as a does possession of an optional renewal-token - the one native to an OAUTH handshake.
But I don't see what the “generation changing” motivation is for the scopes - that the access token returns all scopes for which tokens (with renewals) have previous been issued.
So what is the 'context’ of control being enabled here? What thing is this scope-aggregation feature working for?
Sent from Surface Pro
_______________________________________________
general mailing list
general at lists.openid.net
http://lists.openid.net/mailman/listinfo/openid-general
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openid.net/pipermail/openid-general/attachments/20140124/2357c140/attachment.html>
More information about the general
mailing list