Messages 2.2.1 - Should client_secret_basic and client_secret_post be collapsed?

Issue #728 resolved
Michael Jones created an issue

See the discussion thread below...

From: Justin Richer [mailto:jricher@mitre.org] Sent: Wednesday, January 23, 2013 10:12 AM To: Mike Jones Cc: John Bradley; openid-specs-ab@lists.openid.net Subject: Re: [Openid-specs-ab] token_endpoint_auth_method Registration example error?

That's not an unreasonable interpretation. I think we should consider collapsing the client_secret_post and client_secret_basic at a future point, then.

-- Justin On 01/23/2013 12:45 PM, Mike Jones wrote: I’d say no. The client has already made its choice. Giving it options it didn’t ask for after that would likely only create interop problems in many cases.

                                                        -- Mike

From: Justin Richer [mailto:jricher@mitre.org] Sent: Wednesday, January 23, 2013 9:43 AM To: Mike Jones Cc: John Bradley; openid-specs-ab@lists.openid.net Subject: Re: [Openid-specs-ab] token_endpoint_auth_method Registration example error?

All of that I agree with. Question remains if the server, in its response to the client, wants to tell the client it has several of the X options found in discovery.

-- Justin On 01/23/2013 12:36 PM, Mike Jones wrote: I agree they're complimentary.

Discovery tells the client what the server can do. It uses that information to pick the option to use that will work for both of them, then registers with that option.

-- Mike


From: Justin Richer Sent: 1/23/2013 9:28 AM To: Mike Jones Cc: John Bradley; openid-specs-ab@lists.openid.net Subject: Re: [Openid-specs-ab] token_endpoint_auth_method Registration example error? Not all clients can necessarily use all forms of auth that a server supports, so I see the two values as complimentary.

-- Justin On 01/23/2013 12:14 PM, Mike Jones wrote: The server expresses what the client should do in the discovery phase – not during registration. See the “token_endpoint_auth_methods_supported” discovery result parameter in http://openid.net/specs/openid-connect-discovery-1_0-12.html.

                                                        -- Mike

From: John Bradley [mailto:ve7jtb@ve7jtb.com] Sent: Wednesday, January 23, 2013 9:02 AM To: Justin Richer Cc: Mike Jones; openid-specs-ab@lists.openid.net Subject: Re: [Openid-specs-ab] token_endpoint_auth_method Registration example error?

Like discovery the response could be multi value. However the client souls only register one value if it wants to restrict what the server accepts for that client_id.

Sent from my iPhone

On 2013-01-23, at 4:33 PM, Justin Richer jricher@mitre.org wrote: But now that the server responds with the current configuration, it's no longer just about client preference but also about the server expressing to the client what it should do. So if a client gets a client_secret, and the server is OK with it using basic, post, or jwt with that secret, how can the server tell the client this?

The simplest thing is to keep it a single value as it is now, but that's (as always) a tradeoff between flexibility and complexity.

-- Justin On 01/23/2013 11:28 AM, John Bradley wrote: If you want a client to authenticate multiple ways just don't register a prefrence.

This was intended to prevent IdP from accepting weaker methods of authentication from attackers. If you are not doing that then the client should be able to use anything the server supports.

Now if the client doesn't register a public key then some methods will fail, but that is a client decision.

I think trying to say I only want to use 2 of the 5 available methods is overkill.

The client should just pick the one it is going to use.

If it really needs two methods maybe it is really two clients and somebody is fudging things a bit.

John B.

On 2013-01-23, at 4:18 PM, Justin Richer jricher@mitre.org wrote:

Actually come to think of it, why wouldn't a client be able to do both client_secret_basic and client_secret_post to a server that supports them? It's the same info presented in almost the same way.

This combination may be the exceptional case, though, as the other types (client_secret_jwt,private_key_jwt, or even "none" that OIDC hasn't adopted yet) aren't particularly mutually compatible.

-- Justin On 01/23/2013 10:53 AM, Justin Richer wrote: OK, thanks for catching that. I'll file a bug against Oauth2 Dynreg as well (which has the same examples). John is right that it is defined as a single value and the examples are off.

-- Justin On 01/23/2013 10:03 AM, Mike Jones wrote: That’s what I thought. Thanks for confirming.

                                                        -- Mike

From: John Bradley [mailto:ve7jtb@ve7jtb.com] Sent: Wednesday, January 23, 2013 7:02 AM To: Mike Jones Cc: openid-specs-ab@lists.openid.net Subject: Re: [Openid-specs-ab] token_endpoint_auth_method Registration example error?

The server may support multiple methods, but the client MUST only register one, so it shouldn't be multi value for simplicity.

If you need two auth methods they should be different client_id.

This is intended mostly to enhance security and prevent a server from taking client_secret_basic from an attacker when the real client is using private_key_jwt.

John B.

On 2013-01-23, at 9:07 AM, Mike Jones Michael.Jones@microsoft.com wrote:

Registration contains the following definition:

token_endpoint_auth_method OPTIONAL. Requested authentication method for the Token Endpoint. The options areclient_secret_post, client_secret_basic, client_secret_jwt, and private_key_jwt, as described in Section 2.2.1 of [OpenID.Messages]. Other Authentication methods may be defined by extension. If unspecified or omitted, the default is client_secret_basic HTTP Basic Authentication Scheme as specified in Section 2.3.1 of [RFC6749].

It later uses “token_endpoint_auth_method” in two example result values in this manner:

"token_endpoint_auth_method": "client_secret_basic client_secret_post",

This looks like a bug to me, since the string appears to be trying to contain multiple values.

Thus, I’m changing the string used to just

Comments (3)

  1. Brian Campbell

    Based on John's assertion that the auth methods are "intended to prevent IdP from accepting weaker methods of authentication from attackers" it would make sense to collapse client_secret_basic and client_secret_post. But from the perspective of an OP/AS advertising what it supports, they make sense as distinct things. I.e. an OP that supports client_secret_basic but not client_secret_post doesn't seem totally unlikely.

  2. Michael Jones reporter

    While they have similar security properties, they are actually syntactically different, and so should remain distinct.

  3. Log in to comment