Raw-Public-Key and Pre-Shared-Key as OAuth client credentials
RISE SICSScheelevaegen 17223 70LundSWEDENludwig@ri.seSpotify ABBirger Jarlsgatan 61, 4tr113 56StockholmSwedenerdtman@spotify.com
Security
ACE Working Group
OAuth 2.0, Client Credentials, DTLS, TLS, Raw-Public-Key, Pre-Shared-Key
This document describes Transport Layer Security (TLS)
authentication using Raw-Public-Key and Pre-Shared-Key as new mechanisms
for OAuth client authentication. Although defined for TLS the mechanisms are
equally applicable for DTLS.
This document describes Transport Layer Security (TLS)
authentication using Raw-Public-Key and Pre-Shared-Key as the mechanism
for OAuth client authentication. Examples of endpoint requiering client
authentication are token and introspection.
The OAuth 2.0 Authorization Framework defines a
shared secret method of client authentication but also allows for the
definition and use of additional client authentication mechanisms when
interacting with the authorization server's token endpoint. This document
describes two additional mechanisms of client authentication utilizing
Raw-Public-Key and Pre-Shared-Key TLS
, which provide better security characteristics
than shared secrets.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in RFC 2119.
The following section defines, as an extension of
OAuth 2.0, Section 2.3, using
Pre-Shared-Key with TLS to authenticate
the client. This method is registered as 'tls_client_psk' in "OAuth
Token Endpoint Authentication Methods" registry.
The (D)TLS handshake MUST be done according to ,
with the client indicating support for one or more Pre-Shared-Key cipher
suites and authorization server selecting a Pre-Shared-Key cipher suite.
In order to enable authorization server to select the correct
pre-shared-key the client MUST send its client identifier in the
psk-identity field of the ClientKeyExchange message. How the
authorization server maps a client identifier to the pre-shared-key
is out of scope for this specification.
Note that the client identity MUST be 2^16 bytes or shorter, in order
to fit into the psk-identity field.
The following section defines, as an extension of
OAuth 2.0, Section 2.3, the use of
Raw-Public-Key with (D)TLS to authenticate
the client. This method is registered as'tls_client_rpk' in "OAuth Token
Endpoint Authentication Methods" registry.
The (D)TLS handshake MUST be done according to ,
with the client indicating support for Raw-Public-Key certificates and
the authorization server asking client send its Raw Public Key
certificate. To enable authorization server to validate the client RPK
it MUST send its client identifier in the ClientHello or
ClientKeyExchange message.
Authorization servers MAY use the following method to map a Raw Public
Key to a client identifier: The client identifier is generated from
the Raw Public Key using the procedure specified in section 3 of. The digest is calculated
on the Raw Public Key only (not on the SubjectPublicKeyInfo used in the
handshake).
An example is shown in .
This document is highly inspired by
written by B. Campbell, J. Bradley, N. Sakimura and T. Lodderstedt.
This specification requests registration of the following value
in the IANA "OAuth Token Endpoint Authentication Methods" registry
established by .
Token Endpoint Authentication Method Name: tls_client_rpkChange Controller: IESGSpecification Document(s): [[ this specification ]]Token Endpoint Authentication Method Name: tls_client_pskChange Controller: IESGSpecification Document(s): [[ this specification ]]TBDOAuth ParametersIANA