Internet DRAFT - draft-seitz-ace-ticket-token-transfer
draft-seitz-ace-ticket-token-transfer
ACE Working Group L. Seitz
SICS Swedish ICT
Internet-Draft April 12, 2016
Intended Status: Standards Track
Expires: October 14, 2016
Transporing access tokens in session resumption tickets
draft-seitz-ace-ticket-token-transfer-00 (TTT)
Abstract
This memo presents a method of transferring an access token from a
client to a resource server in a (D)TLS handshake, based on Session
Resumption without Server-Side State (RFC 5077).
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as
Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress".
The list of current Internet-Drafts can be accessed at
http://www.ietf.org/1id-abstracts.html
The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html
Copyright and License Notice
Copyright (c) 2016 IETF Trust and the persons identified as the
document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must
Seitz, L. Expires October 14, 2016 [Page 1]
INTERNET DRAFT Ticket-based token transport April 12, 2016
include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License.
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1 Terminology . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Ticket format . . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Security Considerations . . . . . . . . . . . . . . . . . . . . 4
4. Privacy Considerations . . . . . . . . . . . . . . . . . . . . 4
5. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 5
6. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 5
7. References . . . . . . . . . . . . . . . . . . . . . . . . . . 5
10.1 Normative References . . . . . . . . . . . . . . . . . . . 5
10.2 Informative References . . . . . . . . . . . . . . . . . . 5
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 5
Seitz, L. Expires October 14, 2016 [Page 2]
INTERNET DRAFT Ticket-based token transport April 12, 2016
1. Introduction
The default way of transferring an OAuth access token to a resource
server (RS) via CoAP is defined in [I-D.ietf-ace-oauth-authz] as
POSTing to a well-known resource, namely /authz-info on the RS. This
solution might not be ideal in all cases, as it requires an extra
message exchange and the RS needs to perform a lookup when the
request arrives to determine which token matches this request.
Therefore this memo describes how to transfer an access token inside
a server state ticket used for (D)TLS session resumption without
server state [RFC5077].
1.1 Terminology
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 [RFC2119]. These
words may also appear in this document in lowercase, absent their
normative meanings.
2. Ticket format
The StatePlaintext structure from section 4 of RFC 5077 is modified
as follows:
struct {
ProtocolVersion protocol_version;
CipherSuite cipher_suite;
CompressionMethod compression_method;
opaque master_secret[48];
ClientIdentity client_identity;
uint32 timestamp;
uint16 access_token_length;
opaque access_token;
} StatePlaintext;
Where the access_token field contains a representation of the access
token, readable for the RS, and the access_token_length field gives
the length of this token in bytes.
Furthermore the following changes are made to
ClientAuthenticationType structure in order to support raw public
keys (RPK):
enum {
anonymous(0),
certificate_based(1),
psk(2),
Seitz, L. Expires October 14, 2016 [Page 3]
INTERNET DRAFT Ticket-based token transport April 12, 2016
rpk(3)
} ClientAuthenticationType;
Finally the ClientIdentity structure is modified as follows, also to
support RPK:
struct {
ClientAuthenticationType client_authentication_type;
select (ClientAuthenticationType) {
case anonymous: struct {};
case certificate_based:
ASN.1Cert certificate_list<0..2^24-1>;
case psk:
opaque psk_identity<0..2^16-1>; /* from [RFC4279] */
case rpk:
opaque ASN.1_subjectPublicKeyInfo<1..2^24-1>;
/* from [RFC7250] */
};
} ClientIdentity;
All other parts of RFC 5077 remain unchanged. The RS MUST process
the ticket as specified in RFC 5077, and additionally it MUST verify
the validity of the token contained in the access_token field, and if
it is valid it MUST store it for future use. The validity check MUST
include a check of the token binding to the client identity given in
the client_identity field. If the token is not a bearer token, the
RS MUST reject a ClientAuthenticationType of anonymous and abort the
handshake with an illegal_parameter error.
3. Security Considerations
All security considerations from RFC 5077 apply equally to this memo.
Furthermore the methods for verifying the validity of an access
token may vary widely depending on the token type. Implementers
should carefully consider how to avoid mixing up different token
types (e.g. bearer tokens vs proof-of-possession tokens) which
require different verification methods. Resource Servers MUST NOT
accept a session resumption ticket containing a token for which the
RS can not determine the validity (e.g. because it cannot interpret
the token format).
4. Privacy Considerations
The privacy considerations from RFC 5077 apply equally to this memo.
The length of the ticket might leak information about the fact that
it contains a access token, and possibly about the format and
Seitz, L. Expires October 14, 2016 [Page 4]
INTERNET DRAFT Ticket-based token transport April 12, 2016
contents of the token. Adversaries having good knowledge of the
different possible access tokens in a specific application, could
determine which kind of access the token authorizes based on its
length. If such attacks are of concern, a padding method for the
token should be considered.
5. IANA Considerations
This document does not require any actions or assignments from IANA.
6. Acknowledgements
Jim Schaad originally suggested this approach, and Hannes Tschofenig
explained the rudimentary details at IETF 95.
7. References
10.1 Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI
10.17487/RFC2119, March 1997, <http://www.rfc-
editor.org/info/rfc2119>.
[RFC5077] Salowey, J., Zhou, H., Eronen, P., and H. Tschofenig,
"Transport Layer Security (TLS) Session Resumption without
Server-Side State", RFC 5077, DOI 10.17487/RFC5077,
January 2008, <http://www.rfc-editor.org/info/rfc5077>.
[RFC6347] Rescorla, E. and N. Modadugu, "Datagram Transport Layer
Security Version 1.2", RFC 6347, DOI 10.17487/RFC6347,
January 2012, <http://www.rfc-editor.org/info/rfc6347>.
[RFC7250] Wouters, P., Ed., Tschofenig, H., Ed., Gilmore, J.,
Weiler, S., and T. Kivinen, "Using Raw Public Keys in
Transport Layer Security (TLS) and Datagram Transport
Layer Security (DTLS)", RFC 7250, DOI 10.17487/RFC7250,
June 2014, <http://www.rfc-editor.org/info/rfc7250>.
10.2 Informative References
Author's Address
Ludwig Seitz
Seitz, L. Expires October 14, 2016 [Page 5]
INTERNET DRAFT Ticket-based token transport April 12, 2016
SICS Swedish ICT AB
Scheelevagen 17
22370 Lund
SWEDEN
EMail: ludwig@sics.se
Seitz, L. Expires October 14, 2016 [Page 6]