I have been struggling with the concept of an initial client credential covered 
in the current draft (rev 10):
The Client Registration Endpoint MAY accept an initial authorization
   credential in the form of an OAuth 2.0 [RFC6749] access token in
   order to limit registration to only previously authorized parties.
   The method by which this access token is obtained by the registrant
   is generally out-of-band and is out of scope of this specification.

The use case is very important since it opens the door for a way for trusted 
entities to sign assertions that could be accepted by a set of deployed 
authorization servers.  For potential software API developers (e.g. Oracle 
CRM), the developer could potentially register with Oracle CRMs registration 
service manually, and obtain a signed assertion for use in their client 
software.  Upon initiating dynamic registration, the client software would 
present the assertion as its initial authorization in the HTTP Authorization 
header as Justin describes above.

While this has worked in practice so far, I am concerned about this assertion 
being presented in this way.

The authentication header has special meaning to many servers. Depending on 
implementation architecture, the authorization header will first be intercepted 
by the authentication components in the server.  Here's where I get worried.

1.  The assertion being presented is not an Authn assertion. There is no 
"authentication session" tied to the assertion
2.  The assertion isn't an authentication, but rather signed client metadata.
3.  The bearer assertion is easily copied. Thus the server should only trust 
this as metadata
4.  It ends up performing the same role as software_id

While I think it is ok for existing implementations to continue with this 
practice, I would prefer to standardize passing of client software assertion 
metadata outside of the authentication channel in HTTP.

A further benefit is that the registration endpoint authentication system only 
has to deal with locally issued credentials. The logic for handling federated 
client meta data can be isolated to the registration server logic.

My feeling is that if we keep "initial authorization credential" as being 
passed in the HTTP Authorization header, then strict rules about the contents 
of the token and the processing rules must be defined so that HTTP server 
security systems can be extended to support this.

If we use software_id, and indicate that it can accept a "software registration 
assertion", we can be more flexible and minimize the processing rules we have 
to declare in the draft. That said, if there is a case to adopt strict rules 
here too, I am open.

Phil

@independentid
www.independentid.com
phil.h...@oracle.com





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

Reply via email to