Yaron,

> how can you ding client assertions credentials for doing exactly what client 
> basic credentials do?

I don't like client basic credentials in request bodies either. We should ditch 
that as well. I am sure I have dinged it in the past. It offers too little 
benefit for the cost of confusing APIs (& code) by mixing the content and 
authentication. And you lose a well-established discovery method: a response 
with WWW-Authenticate: BASIC ....

At least with basic credentials they can fit in a URI. Consequently, they don't 
prevent GET, HEAD, or DELETE requests, or even non-form PUT and POST requests 
in an API. Plus the Authorization header equivalent approach always works as 
well.
[You can almost consider an "endpoint with client_id and client_secret" as a 
single base URI for the API -- and almost pretend that it doesn't compromise 
the HTTP model.]


> How about we edit the client assertion proposal to include the ability to put 
> assertions both in the HTTP authorization header as well as in the body? Then 
> the assertion proposal will be 100% equivalent to the existing basic 
> credentials proposal.

It is hardly 100% equivalent when the header option will fail in some cases 
(large assertions), and the other option fails for GETs, HEADs, DELETEs, and 
non-form requests.


I would like OAuth2 to say: "The token API will often require client auth; a 
service MAY support any auth mechanisms; BASIC is a recommended mechanism; 
BASIC MUST be supported if the service issues shared secrets to clients".
Using a client assertion would fit right in if it could be defined as a 
standalone HTTP auth mechanism (even with a option to use form params for POSTs 
of forms). This would be best as its own standalone spec.

If such a spec gets support (despite sometimes failing for non-POST or non-form 
requests), we are done. If such a spec isn't supported it suggests we should 
define a specific API that accepts client assertions, instead of an 
"orthogonal" auth mechanism (still best in its own spec).


P.S. When are client_assertion/client_assertion_type used, as opposed to 
assertion/assertion_type? It is not clear to me from the existing and proposed 
spec text. I don't think the OAuth2 spec has enough context for the assertion 
parts. It would be better outside the OAuth2 spec, where more details could be 
provided about how it hooks up with the rest of a claims-based system.

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

Reply via email to