I think you are correct - there should be only one scheme per header.

However, there is an issue that a particular token type may be used outside of 
OAuth and then it may also be used within OAuth at the same time. So you do 
have to list protocols twice.  I believe Eran had mentioned an approach of 
sub-categorization that could also work...

WWW-Authenticate: BEARER ...
WWW-Authenticate: OAUTH2_MAC ...
WWW-Authenticate: OAUTH2_BEARER ...

This may have some advantages. E.g. different parameters for each OAuth sub 
category. The big difference would be that this sub-category approach would end 
up requiring more registrations.

I'm neutral on the approach here, but I think the key is that tokens need to be 
usable both inside and outside of OAuth and that servers may need both at the 
same time.

Phil
phil.h...@oracle.com




On 2011-02-05, at 10:21 AM, Torsten Lodderstedt wrote:

> that's not the way WWW-Authenticate headers are used today. Instead the 
> resource server should return a single WWW-Authenticate header _per_ 
> supported authentication scheme, such as
> 
> WWW-Authenticate: MAC realm="somerealm"
> WWW-Authenticate: BEARER realm="somerealm"
> 
> furthermore, I think interdependencies among WWW-Authenticate headers as 
> suggested by Phil
> 
> WWW-Authenticate: OAuth
> token="MAC;BEARER",authorizationUrl="xxxxx",tokenUrl="yyyyy
> 
> could be rather fragile.
> 
> I would expect the WWW-Authenticate header to return all the data required to 
> obtain the credentials/tokens, such as
> 
> WWW-Authenticate: MAC realm="somerealm", tokenUrl="yyyyy&token_secret=yes"
> WWW-Authenticate: BEARER realm="somerealm", tokenUrl=""yyyyy"
> 
> Which raises the question whether the coupling between authentication schemes 
> and the OAuth2 core protocol is stronger than assumed.
> 
> please als see 
> http://www.ietf.org/mail-archive/web/oauth/current/msg04988.html
> 
> regards,
> Torsten.
> 
> Am 04.02.2011 22:39, schrieb William Mills:
> 
>> I was thinking along the lines of simply returning the HTTP Authorization 
>> header schemes that are supported.  In the OAuth 2 context that would be
>> 
>>      WWW-Authenticate: 401 error="blah blah blah"  auth_types="Bearer MAC 
>> Basic"
>> 
>> The client has to be aware of the authentication scheme names.
>> 
>> -bill
>> 
>>> -----Original Message-----
>>> From: Phil Hunt [mailto:phil.h...@oracle.com]
>>> Sent: Friday, February 04, 2011 1:14 PM
>>> To: William Mills
>>> Cc: Marius Scurtescu; OAuth WG
>>> Subject: Re: [OAUTH-WG] Bearer token type and scheme name (deadline:
>>> 2/10)
>>> 
>>> I agree, that is still to be defined. There seems to be some push back
>>> on discovery, but this is likely warranted.  If only because web sites
>>> may have both browser clients and app clients.
>>> 
>>> In a previous message, I did suggest the web site return HTTP 401 as
>>> below...
>>>>> 401 Unauthorized
>>>>> WWW-Authenticate: Basic realm="tokenSvc"
>>>>> WWW-Authenticate: Digest realm="tokenSvc"
>>>>> WWW-Authenticate: Form
>>> url="/clientAuthenticate.jsp",realm="tokenSvc"
>>> 
>>> It could also include other items for "MAC", etc.
>>> 
>>> The only other issue would be determining whether the token is obtained
>>> via an OAuth profile or via some default profile.  That could be
>>> handled with something like:
>>> 
>>> WWW-Authenticate: Basic realm="somerealm"
>>> WWW-Authenticate: MAC realm="somerealm"
>>> WWW-Authenticate: OAuth
>>> token="MAC;BEARER",authorizationUrl="xxxxx",tokenUrl="yyyyyy"
>>> 
>>> The above would suggest that MAC tokens could be used alone as
>>> described in some specification for "MAC".  However, the presence of
>>> the OAuth header indicates that MAC and BEARER tokens can be used in
>>> the OAuth pattern.
>>> 
>>> I think this allows both de-coupling of tokens from OAuth but also
>>> informs clients what tokens can be used with OAuth.
>>> 
>>> There may be other ways to do this. But it does help with the
>>> decoupling.
>>> 
>>> Phil
>>> phil.h...@oracle.com
>>> 
>>> 
>>> 
>>> 
>>> On 2011-02-04, at 11:44 AM, William Mills wrote:
>>> 
>>>> I was thinking more about how the client knows what to use.  The
>>> ubiquitous "service documentation" may come in to play here.  Some form
>>> of serv ice discovery/webfinger thing could also be used.
>>>>> -----Original Message-----
>>>>> From: Phil Hunt [mailto:phil.h...@oracle.com]
>>>>> Sent: Friday, February 04, 2011 11:37 AM
>>>>> To: William Mills
>>>>> Cc: Marius Scurtescu; OAuth WG
>>>>> Subject: Re: [OAUTH-WG] Bearer token type and scheme name (deadline:
>>>>> 2/10)
>>>>> 
>>>>> Yes. This should be defined in each token type specification.
>>>>> 
>>>>> Phil
>>>>> phil.h...@oracle.com
>>>>> 
>>>>> 
>>>>> 
>>>>> 
>>>>> On 2011-02-04, at 11:29 AM, William Mills wrote:
>>>>> 
>>>>>> The only challenge is to know what scheme to use and what the
>>> nuances
>>>>> are of how to present the credential.
>>>>>>> -----Original Message-----
>>>>>>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On
>>>>> Behalf
>>>>>>> Of Phil Hunt
>>>>>>> Sent: Friday, February 04, 2011 9:42 AM
>>>>>>> To: Marius Scurtescu
>>>>>>> Cc: OAuth WG
>>>>>>> Subject: Re: [OAUTH-WG] Bearer token type and scheme name
>>> (deadline:
>>>>>>> 2/10)
>>>>>>> 
>>>>>>> OAuth should be able to support other token schemes.
>>>>>>> 
>>>>>>> Or conversely you don't have to have OAuth to use MAC, JWT, or
>>>>>>> whatever.
>>>>>>> 
>>>>>>> Phil
>>>>>>> phil.h...@oracle.com
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 2011-02-04, at 9:39 AM, Marius Scurtescu wrote:
>>>>>>> 
>>>>>>>> On Thu, Feb 3, 2011 at 11:39 AM, Eran Hammer-Lahav
>>>>>>> <e...@hueniverse.com>  wrote:
>>>>>>>>> Hey Marius,
>>>>>>>>> 
>>>>>>>>>> -----Original Message-----
>>>>>>>>>> From: Marius Scurtescu [mailto:mscurte...@google.com]
>>>>>>>>>> Sent: Thursday, February 03, 2011 10:36 AM
>>>>>>>>>> To: Eran Hammer-Lahav
>>>>>>>>>> Cc: OAuth WG
>>>>>>>>>> Subject: Re: [OAUTH-WG] Bearer token type and scheme name
>>>>>>> (deadline:
>>>>>>>>>> 2/10)
>>>>>>>>>> 
>>>>>>>>>> On Thu, Feb 3, 2011 at 12:34 AM, Eran Hammer-Lahav
>>>>>>>>>> <e...@hueniverse.com>  wrote:
>>>>>>>>>> 
>>>>>>>>>>> 2. Single OAuth2 scheme with sub-schemes
>>>>>>>>>>> 
>>>>>>>>>>> Define a single authentication scheme for all token types with
>>>>>>> some
>>>>>>>>>>> attribute used to detect which scheme is actually being used.
>>>>>>>>>>> 
>>>>>>>>>>> Benefits:
>>>>>>>>>>> 
>>>>>>>>>>> - single scheme, reuse of the 1.0 pattern.
>>>>>>>>>>> 
>>>>>>>>>>> Downsides:
>>>>>>>>>>> 
>>>>>>>>>>> - requires a new registry for authentication header
>>> parameters.
>>>>>>>>>> How is this different from option 1? Wouldn't that need some
>>>>>>> registry?
>>>>>>>>> #1 relies on the existing practice of creating HTTP scheme names
>>>>> (no
>>>>>>> current registry but httpbis might be creating one), as well as
>>> the
>>>>> -12
>>>>>>> token type registry. Using a sub-scheme means you also need a
>>>>> registry
>>>>>>> for the header attributes that each token type will need (unless
>>> you
>>>>>>> just don't care about using the same attribute name for different
>>>>>>> needs).
>>>>>>>> Sure, there is no registry for schemes yet, but we would still
>>> need
>>>>>>>> some coordination. The fact that a sub-scheme needs a registry
>>> that
>>>>>>> we
>>>>>>>> control is a benefit not a downside IMO.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>>>> - schemes are not easily reusable outside OAuth.
>>>>>>>>>> Sure. But I really don't see this group trying to create
>>> generic
>>>>>>> authentication
>>>>>>>>>> schemes.
>>>>>>>>> MAC is exactly that.
>>>>>>>> May or may not be. My point is that this group is not focused on
>>>>>>>> creating generic authentication schemes. Are you aware of any
>>> other
>>>>>>>> protocols that might use MAC or BEARER? Are we willing to put in
>>>>> the
>>>>>>>> effort to create generic schemes? Is it our charter?
>>>>>>>> 
>>>>>>>> 
>>>>>>>>>>> - existing frameworks usually switch on scheme name, not on
>>> sub
>>>>>>>>>>> scheme, which will cause difficulty in some deployments.
>>>>>>>>>> I can see this as a potential problem. But considering that
>>> there
>>>>>>> wasn't much
>>>>>>>>>> objection to use "OAuth" as a scheme name before (total overlap
>>>>>>> with
>>>>>>>>>> OAuth 1, and the suggested solution was to look for the
>>> signature
>>>>>>>>>> parameter) I don't see how this is suddenly an issue.
>>>>>>>>> There was pretty strong objection to reusing OAuth.
>>>>>>>> Yes, because there was no sub-scheme nor version (and the grammar
>>>>> was
>>>>>>>> totally broken). Even so, lots of implementations went ahead and
>>>>> did
>>>>>>>> it. Were there any scheme switching issues we are aware of?
>>>>>>>> 
>>>>>>>> 
>>>>>>>>>> Do we have a concrete problem here or this is just theoretical?
>>>>>>>>> This came up during the review of draft-hammer-http-token-auth
>>>>> [1].
>>>>>>> There was a long thread about it where people posted actual
>>>>> framework
>>>>>>> issues.
>>>>>>>>>>> - potential to produce a very complicated scheme once many sub
>>>>>>> schemes
>>>>>>>>>>> are added.
>>>>>>>>>> Why? I would argue that this option actually produces more
>>>>> uniform
>>>>>>>>>> schemes because it forces all of them to be name/value pairs.
>>>>>>> Beyond
>>>>>>>>>> token_type everything is scheme specific. I really don't see
>>> what
>>>>>>> is very
>>>>>>>>>> complicate here.
>>>>>>>>> It is still a single scheme with many different sub-schemes,
>>> each
>>>>>>> with different key-value pairs that may have conflicting meaning.
>>>>> The
>>>>>>> way I look at it is that if I try to fully implement this mega
>>>>> scheme
>>>>>>> (which means all its sub-schemes), it will likely be a complicated
>>>>>>> task. On the other hand, if you split it across scheme name, we
>>>>> already
>>>>>>> have a well-established system in place to pick and choose HTTP
>>>>>>> authentication schemes.
>>>>>>>> No one has to implement a mega scheme. All schemes must use
>>>>>>> name/value
>>>>>>>> pairs and that's where the common part stops.
>>>>>>>> 
>>>>>>>> 
>>>>>>>>>>> - requires its own discovery method for which schemes are
>>>>>>> supported.
>>>>>>>>>> Why is this a downside only for this option?
>>>>>>>>> Because the other options get this for free by using the WWW-
>>>>>>> Authenticate header (since each scheme has a unique name). You can
>>>>> list
>>>>>>> multiple headers in the 401 response.
>>>>>>>> I thought we dropped WWW-Authenticate. Why cannot WWW-
>>> Authenticate
>>>>>>>> work for sub-schemes as well?
>>>>>>>> 
>>>>>>>> 
>>>>>>>>> Should I record your vote for #2?
>>>>>>>> #2 or #3
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Thanks,
>>>>>>>> Marius
>>>>>>>> _______________________________________________
>>>>>>>> OAuth mailing list
>>>>>>>> OAuth@ietf.org
>>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>>>>>>> _______________________________________________
>>>>>>> OAuth mailing list
>>>>>>> OAuth@ietf.org
>>>>>>> https://www.ietf.org/mailman/listinfo/oauth
>> _______________________________________________
>> OAuth mailing list
>> OAuth@ietf.org
>> https://www.ietf.org/mailman/listinfo/oauth

_______________________________________________
OAuth mailing list
OAuth@ietf.org
https://www.ietf.org/mailman/listinfo/oauth

Reply via email to