My point is that for client_id/client_secret this is not needed because clients are only likely to use it when dealing with a known server with well-known characteristics. Those defining other schemes, including client_assertion will need to figure out their client profile and how to address its needs.
EHL > -----Original Message----- > From: Phil Hunt [mailto:phil.h...@oracle.com] > Sent: Monday, January 24, 2011 3:39 PM > To: Eran Hammer-Lahav > Cc: Torsten Lodderstedt; OAuth WG > Subject: Re: [OAUTH-WG] How to integrated DIGEST or SPNEGO with tokens > endpoint? > > I think the problem comes up if you want to authenticate using some other > means (e.g. client_assertion) using form based authentication. At that point > separation between the token end-point and platform security is not clear. > The client_id and client_secret approach also has the same issue of not > separating client authentication from the token request. > > One possible flow might be: > > Step 1: client: request token (no client credential supplied) Step 2: server > responds with authentication required, returns HTTP 401 as below > 401 Unauthorized > WWW-Authenticate: Basic realm="tokenSvc" > WWW-Authenticate: Digest realm="tokenSvc" > WWW-Authenticate: Form url="/clientAuthenticate.jsp",realm="tokenSvc" > > Step 3: client elects form based authentication by responding to the form > returned from clientAuthenticate.jsp. For example, the form might require > client_assertion, or other form based authentication approaches. > > Step 4: server authenticates and returns a "client" token used token > requests. > Step 5: client goes to original token endpoint and by client authorization > token (in Authorization header) and original request. > > Sure the spec says client_id and secret, but doesn't allow for the form to > specify other required elements the site wants to impose. > > By actually asking for the form, the client can discover what is needed. > Also, > steps 1-4 might only have to be done relatively infrequently. Once a client is > authenticated, it could make multiple OAuth token requests for multiple > grant codes. > > Another variation (combined token and client auth) is a case where > authentication field and token request are combined in one form. Not sure if > WWW-Authenticate should indicate that variation. > > Phil > phil.h...@oracle.com > > > > > On 2011-01-24, at 3:11 PM, Eran Hammer-Lahav wrote: > > > I am not sure I understand this exactly, but I don't see the need. > > Basically, > the token endpoint requires client authentication (yeah, with exceptions). > The spec provides one super-simple way to accomplish that using form- > encoded parameters, but that's really focused on the hardcoded clients - > those pointed at known services. While libraries will support the two > parameters, it is unlikely that clients will use it to obtain a token from an > unfamiliar server (since they are not registered). > > > > IOW, the client password credential authentication described in the spec is > a useful hack for the common needs most API developers today have, based > on existing API keys used. I would hate see this expanded to more hack-ish > client authentication schemes using parameters. In general, alternative client > authentication methods (which have nothing to do directly with the two > parameters), should be defined or adopted for client authentication using > normal HTTP authentication headers. > > > > The way to think about this is to remove client authentication from the > token endpoint and just assume the server doesn't care about client identity. > You give it a grant and get back an access token. Now, since we do care about > client identity, we add client authentication *on-top* of the endpoint. The > two parameters are therefore a hack which adds authentication into the > endpoint. New schemes should work outside the request. > > > > EHL > > > > > >> -----Original Message----- > >> From: Phil Hunt [mailto:phil.h...@oracle.com] > >> Sent: Monday, January 24, 2011 2:56 PM > >> To: Eran Hammer-Lahav > >> Cc: Torsten Lodderstedt; OAuth WG > >> Subject: Re: [OAUTH-WG] How to integrated DIGEST or SPNEGO with > >> tokens endpoint? > >> > >> Why not have the token server specify a form based authentication for > >> OAuth token requests? > >> > >> WWW-Authenticate: Form url="/tokenrequest.jsp" > >> > >> Thus, a server could respond: > >> 401 Unauthorized > >> WWW-Authenticate: Basic realm="example" > >> WWW-Authenticate: Digest realm="example" > >> WWW-Authenticate: Form url="/tokenrequest.jsp",realm="example" > >> > >> Normally, a form would have caused a redirect, but in this case we > >> aren't talking about browser based clients so the redirect doesn't > >> make sense. This gives the clients a choice and a way to discover > parameters (if really needed). > >> By parsing the form, it could discover what form parameters are > >> required. I suspect as Eran indicates below, this wouldn't happen to > >> often as site server documentation would already make this clear. > >> > >> Phil > >> phil.h...@oracle.com > >> > >> > >> > >> > >> On 2011-01-24, at 2:25 PM, Eran Hammer-Lahav wrote: > >> > >>> This is pretty straight-forward. There are no special parameters to > >>> indicated > >> which client authentication is being used. It's either there or not, > >> using whatever the server supports. > >>> > >>> Simply have the token endpoint return a 401 with these WWW- > >> Authenticate headers. As long as you make it clear how to make > >> between the client identifier and the credentials used, you are set. > >>> > >>> For example, a token response can return: > >>> > >>> 401 Unauthorized > >>> WWW-Authenticate: Basic realm="example" > >>> WWW-Authenticate: Digest realm="example" > >>> > >>> There is no discovery for support for the client_id and > >>> client_secret > >> parameters. The client can simply try it or hardcode it based on the > >> server's documentation. > >>> > >>> Does this help? > >>> > >>> EHL > >>> > >>>> -----Original Message----- > >>>> From: oauth-boun...@ietf.org [mailto:oauth-boun...@ietf.org] On > >>>> Behalf Of Torsten Lodderstedt > >>>> Sent: Monday, January 24, 2011 1:10 PM > >>>> To: OAuth WG > >>>> Subject: [OAUTH-WG] How to integrated DIGEST or SPNEGO with > tokens > >>>> endpoint? > >>>> > >>>> Hi all, > >>>> > >>>> I'm currently thinking about the integration of existing HTTP > >>>> authentication schemes with OAuth 2.0 for the purpose of end-user > >>>> authentication on the tokens endpoint. Possible candidates are > "Digest" > >>>> for challenge-response-based username/password authentication and > >>>> "Spnego" for Kerberos-based authentication. Direct support for both > >>>> could be beneficially in enterprise and other security sensitive > >> deployments. > >>>> > >>>> An direct integration with the tokens endpoint would allow to > >>>> leverage existing implementations and infrastructure for > >>>> OAuth/HTTP-based architectures. For example, HTTPClient has direct > >>>> support for Spnego- Authentication. > >>>> > >>>> Both HTTP authentication schemes use dedicated WWW-Authenticate > >> and > >>>> Authorization headers for passing credential and other data between > >>>> client and server. OAuth in contrast uses grant types to indicate > >>>> the authentication method, credentials are passed as URI query > >>>> parameters and it lacks any discovery of available authentication > >>>> methods/ grant > >> types. > >>>> > >>>> How could one integrate existing schemes into that design? What is > >>>> our story? Do we need to define a special grant type "HTTP > >> authorization"? > >>>> Shall Authorization headers overrule URI parameters? > >>>> > >>>> Any ideas of the WG are higly appreciated. > >>>> > >>>> regards, > >>>> Torsten. > >>>> > >>>> > >>>> _______________________________________________ > >>>> 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