In the SASL mechanism draft spec where we went with that is to use LINK 
headers.  See http://tools.ietf.org/html/draft-mills-kitten-sasl-oauth-01 if 
you want to take a look.  WWW-Authenticate headers return the supported 
authentication schemes and LINK headers tell you there are OAuth endpoints you 
can interact with.

It's a swag at discovery in band, might work here too.



________________________________
From: "Manger, James H" <james.h.man...@team.telstra.com>
To: OAuth WG <oauth@ietf.org>
Sent: Thursday, April 7, 2011 6:48 PM
Subject: Re: [OAUTH-WG] OAuth2 scheme


 
We should define a “WWW-Authenticate: OAuth2 …” response header – not to 
encompass the MAC, Bearer, and any other generic HTTP authentication scheme, 
but as a way for a server to tell the client that it can perform an OAuth2 
get-a-token flow to gain access. When the sort of OAuth2 flow depends on the 
error with a current token (eg expired vs invalid) then the “WWW-Authenticate: 
OAuth2 …” response header needs to reflect this. It could do so be including an 
error code. A better, more direct, approach is to explicitly identify “refresh 
flow” and/or “user-delegation flow” and/or “assertion flow” etc.
 
Bearer or OAuth2 WWW-Authenticate response header?
The rule should be:
#1. If the client can fix an error by sending an “Authorization: Bearer …” 
request header (or the query or POST alternative) then the server should return 
“WWW-Authenticate: Bearer …”.
 
#2. If the client can fix an error by performing an OAuth2 flow at an 
authorization server then the resource server should return “WWW-Authenticate: 
OAuth2 …”.
 
The server can return both response headers if both options are possible.
 
There is no point in re-presenting a rejected Bearer token so #1 isn’t that 
useful. It could be appropriate if no token was presented as the client might 
have a token, but didn’t know this resource needed it. It might be appropriate 
if a client presented a token with insufficient scope as the client might have 
another token with the right scope so “WWW-Authenticate: Bearer scope=…” could 
help. #1 is not really necessary when a presented token is invalid or expired 
as the client needs to get a new one (eg using an OAuth2 flow that is outside 
the scope of the Bearer scheme).
 
I don’t think an error code in a “WWW-Authenticate: Bearer …” response helps a 
client retry the request with a “Authorization: Bearer …” header that will work.
An error code might help a client choose the right OAuth2 flow (eg refresh vs 
new user-delegation) so it might have a place in #2, a “WWW-Authenticate: 
OAuth2 …” response header.
 
Eran said to Mike:
> Alternatively, if you have use cases or requirements for introducing just the 
> WWW-Authenticate side of an OAuth2 authorization scheme (your open issue), 
> which includes an ‘error’ attribute for use with the proposed registry, 
> please present those and explain how it will work alongside the Bearer and 
> MAC schemes (as currently drafted).
 
The “discovery” use-case in this email warrants the WWW-Authenticate side of an 
OAuth2 scheme.
An error attribute (plus a registry) might help, but we need the rest of the 
details of the response header first.
It works well alongside Bearer and MAC schemes: a “WWW-Auth.: OAuth2” response 
points to OAuth2 flows the client can try; a “WWW-Auth.: MAC/Bearer” response 
points to retrying a request with “Authz: MAC/Bearer”. Even when a client is 
given multiple options it will know which to choose based on its context (eg if 
it doesn’t have another Bearer token it will ignore the “WWW-Auth: Bearer” 
response and follow the “WWW-Auth: OAuth2” response).
 
 
--
James Manger
_______________________________________________
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