draft-ietf-tokbind-ttrp-04.txt   draft-ietf-tokbind-ttrp-05.txt 
Internet Engineering Task Force B. Campbell Internet Engineering Task Force B. Campbell
Internet-Draft Ping Identity Internet-Draft Ping Identity
Intended status: Standards Track June 6, 2018 Intended status: Standards Track June 21, 2018
Expires: December 8, 2018 Expires: December 23, 2018
HTTPS Token Binding with TLS Terminating Reverse Proxies HTTPS Token Binding with TLS Terminating Reverse Proxies
draft-ietf-tokbind-ttrp-04 draft-ietf-tokbind-ttrp-05
Abstract Abstract
This document defines HTTP header fields that enable a TLS This document defines HTTP header fields that enable a TLS
terminating reverse proxy to convey information to a backend server terminating reverse proxy to convey information to a backend server
about the validated Token Binding Message received from a client, about the validated Token Binding Message received from a client,
which enables that backend server to bind, or verify the binding of, which enables that backend server to bind, or verify the binding of,
cookies and other security tokens to the client's Token Binding key. cookies and other security tokens to the client's Token Binding key.
This facilitates the reverse proxy and backend server functioning This facilitates the reverse proxy and backend server functioning
together as though they are a single logical server side deployment together as though they are a single logical server side deployment
skipping to change at page 1, line 37 skipping to change at page 1, line 37
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at https://datatracker.ietf.org/drafts/current/. Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on December 8, 2018. This Internet-Draft will expire on December 23, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2018 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(https://trustee.ietf.org/license-info) in effect on the date of (https://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Requirements Notation and Conventions . . . . . . . . . . 3 1.1. Requirements Notation and Conventions . . . . . . . . . . 3
2. HTTP Header Fields and Processing Rules . . . . . . . . . . . 3 2. HTTP Header Fields and Processing Rules . . . . . . . . . . . 4
2.1. Encoding . . . . . . . . . . . . . . . . . . . . . . . . 4 2.1. Encoding . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.1. Token Binding ID . . . . . . . . . . . . . . . . . . 4 2.1.1. Token Binding ID . . . . . . . . . . . . . . . . . . 4
2.1.2. Token Binding Type . . . . . . . . . . . . . . . . . 4 2.1.2. Token Binding Type . . . . . . . . . . . . . . . . . 4
2.2. Token Binding ID HTTP Header Fields . . . . . . . . . . . 4 2.2. Token Binding ID HTTP Header Fields . . . . . . . . . . . 4
2.3. Processing Rules . . . . . . . . . . . . . . . . . . . . 5 2.3. Processing Rules . . . . . . . . . . . . . . . . . . . . 5
2.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 6 2.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4.1. Provided Token Binding ID . . . . . . . . . . . . . . 6 2.4.1. Provided Token Binding ID . . . . . . . . . . . . . . 6
2.4.2. Provided and Referred Token Binding IDs . . . . . . . 7 2.4.2. Provided and Referred Token Binding IDs . . . . . . . 7
2.4.3. Provided and Other Token Binding IDs . . . . . . . . 8 2.4.3. Provided and Other Token Binding IDs . . . . . . . . 8
3. Security Considerations . . . . . . . . . . . . . . . . . . . 9 3. Security Considerations . . . . . . . . . . . . . . . . . . . 8
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 9 3.1. HTTP Headers . . . . . . . . . . . . . . . . . . . . . . 9
3.2. TLS Versions and Best Practices . . . . . . . . . . . . . 9
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 10
4.1. HTTP Message Header Field Names Registration . . . . . . 10 4.1. HTTP Message Header Field Names Registration . . . . . . 10
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 10 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.1. Normative References . . . . . . . . . . . . . . . . . . 10 5.1. Normative References . . . . . . . . . . . . . . . . . . 10
5.2. Informative References . . . . . . . . . . . . . . . . . 11 5.2. Informative References . . . . . . . . . . . . . . . . . 11
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 12
Appendix B. Document History . . . . . . . . . . . . . . . . . . 12 Appendix B. Document History . . . . . . . . . . . . . . . . . . 12
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 13 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 14
1. Introduction 1. Introduction
Token Binding over HTTP [I-D.ietf-tokbind-https] provides a mechanism Token Binding over HTTP [I-D.ietf-tokbind-https] provides a mechanism
that enables HTTP servers to cryptographically bind cookies and other that enables HTTP servers to cryptographically bind cookies and other
security tokens to a key held by the browser or other HTTP client, security tokens to a key generated by the client. When the use of
possession of which is proven on the TLS [RFC5246] connections over Token Binding is negotiated in the TLS [RFC5246] handshake
which the tokens are used. When Token Binding is negotiated in the [I-D.ietf-tokbind-negotiation] the client sends an encoded Token
TLS handshake [I-D.ietf-tokbind-negotiation] the client sends an Binding Message [I-D.ietf-tokbind-protocol] as a header in each HTTP
encoded Token Binding Message [I-D.ietf-tokbind-protocol] as a header request, which proves possession of one or more private keys held by
in each HTTP request, which proves possession of one or more private the client. The public portion of the keys are represented in the
keys held by the client. The public portion of the keys are Token Binding IDs of the Token Binding Message and for each one there
represented in the Token Binding IDs of the Token Binding Message and is a signature over some data, which includes the exported keying
for each one there is a signature over some data, which includes the material [RFC5705] of the TLS connection. An HTTP server issuing
exported keying material [RFC5705] of the TLS connection. An HTTP cookies or other security tokens can associate them with the Token
server issuing cookies or other security tokens can associate them Binding ID, which ensures those tokens cannot be used successfully
with the Token Binding ID, which ensures those tokens cannot be used over a different TLS connection or by a different client than the one
successfully over a different TLS connection or by a different client to which they were issued.
than the one to which they were issued.
A fairly common deployment architecture for HTTPS applications is to A fairly common deployment architecture for HTTPS applications is to
have the backend HTTP application servers sit behind a reverse proxy have the backend HTTP application servers sit behind a reverse proxy
that terminates TLS. The proxy is accessible to the internet and that terminates TLS connections from clients. The proxy is
dispatches client requests to the appropriate backend server within a accessible to the internet and dispatches client requests to the
private or protected network. The backend servers are not directly appropriate backend server within a private or protected network.
accessible outside the private network and are only reachable through The backend servers are not directly accessible by clients and are
the reverse proxy. The details of such deployments are typically only reachable through the reverse proxy. The details of such
opaque to clients who make requests to the proxy server and see deployments are typically opaque to clients who make requests to the
responses as though they originated from the proxy server itself. proxy server and see responses as though they originated from the
TLS connections for HTTPS are established between each client and the proxy server itself. Although HTTPS is also usually employed between
reverse proxy server. the proxy and the backend server, the TLS connection that the client
establishes for HTTPS is between itself and the reverse proxy server.
Token Binding facilitates a binding of security tokens to a key held Token Binding facilitates a binding of security tokens to a key held
by the client by way of the TLS connection between that client and by the client by way of the TLS connection between that client and
the server. In a deployment where TLS is terminated by a reverse the server. In a deployment where TLS is terminated by a reverse
proxy, however, the TLS connection is between the client and the proxy, however, the TLS connection is between the client and the
proxy while the backend server is likely the system that will issue proxy while the backend server is likely the system that will issue
and validate cookies or other security tokens. Additional steps are and validate cookies or other security tokens. Additional steps are
therefore needed to enable the use of Token Binding in such therefore needed to enable the use of Token Binding in such
deployment architectures. In the absence of a standardized approach, deployment architectures. In the absence of a standardized approach,
different implementations will address it differently, which will different implementations will address it differently, which will
make interoperability between such implementations difficult or make interoperability between such implementations difficult or
impossible without complex configurations or custom integrations. impossible without complex configurations or custom integrations.
This document standardizes HTTP header field names that a TLS This document standardizes HTTP header field names that a TLS
terminating reverse proxy (TTRP) adds to requests that it sends to terminating reverse proxy (TTRP) adds to requests that it sends to
the backend servers. The headers contain information from the the backend servers. The headers contain information from the
validated Token Binding Message sent by the client to the proxy, thus validated Token Binding Message sent by the client to the proxy, thus
enabling the backend server to bind, or verify the binding of, enabling the backend server to bind, or verify the binding of,
cookies and other security tokens to the client's Token Binding key. cookies and other security tokens to the client's Token Binding key.
The usage of the headers, both the reverse proxy adding it and the The usage of the headers, both the TTRP adding the headers and the
application server using them to bind cookies or other tokens, are to backend application server using the headers to bind cookies or other
be configuration options of the respective systems as they will not tokens, are to be configuration options of the respective systems as
always be applicable. they will not always be applicable.
1.1. Requirements Notation and Conventions 1.1. Requirements Notation and Conventions
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in BCP "OPTIONAL" in this document are to be interpreted as described in BCP
14 [RFC2119] [RFC8174] when, and only when, they appear in all 14 [RFC2119] [RFC8174] when, and only when, they appear in all
capitals, as shown here. capitals, as shown here.
2. HTTP Header Fields and Processing Rules 2. HTTP Header Fields and Processing Rules
skipping to change at page 4, line 30 skipping to change at page 4, line 33
EncodedTokenBindingID = *( DIGIT / ALPHA / "-" / "_" ) EncodedTokenBindingID = *( DIGIT / ALPHA / "-" / "_" )
DIGIT = <Defined in Section B.1 of [RFC5234]> DIGIT = <Defined in Section B.1 of [RFC5234]>
ALPHA = <Defined in Section B.1 of [RFC5234]> ALPHA = <Defined in Section B.1 of [RFC5234]>
Figure 1: Encoded Token Binding ID ABNF Figure 1: Encoded Token Binding ID ABNF
2.1.2. Token Binding Type 2.1.2. Token Binding Type
A Token Binding type value (a single byte) can be represented as an A Token Binding type value (a single byte) can be represented as an
"EncodedTokenBindingType", which is a case-insensitive hex (Section 8 "EncodedTokenBindingType", which is a case-insensitive hex encoding
of [RFC4648]) encoding. The ABNF definition is shown in Figure 2 (Section 8 of [RFC4648]). The ABNF definition is shown in Figure 2
below. below.
EncodedTokenBindingType = 1*2HEXDIG EncodedTokenBindingType = 1*2HEXDIG
HEXDIG = <Defined in Section B.1 of [RFC5234]> HEXDIG = <Defined in Section B.1 of [RFC5234]>
Figure 2: Encoded Token Binding Type ABNF Figure 2: Encoded Token Binding Type ABNF
2.2. Token Binding ID HTTP Header Fields 2.2. Token Binding ID HTTP Header Fields
skipping to change at page 5, line 12 skipping to change at page 5, line 14
Sec-Provided-Token-Binding-ID Sec-Provided-Token-Binding-ID
The Token Binding ID of the provided Token Binding represented as The Token Binding ID of the provided Token Binding represented as
an "EncodedTokenBindingID". an "EncodedTokenBindingID".
Sec-Referred-Token-Binding-ID Sec-Referred-Token-Binding-ID
The Token Binding ID of the referred Token Binding represented as The Token Binding ID of the referred Token Binding represented as
an "EncodedTokenBindingID". an "EncodedTokenBindingID".
Sec-Other-Token-Binding-ID Sec-Other-Token-Binding-ID
Additional Token Bindings, other than provided and referred, that Additional Token Bindings that are sent by the client and
are sent by the client and validated by the TTRP are represented validated by the TTRP are represented as a comma-separated list of
as a comma-separated list of the concatenation of the the concatenation of the "EncodedTokenBindingType", a period (".")
"EncodedTokenBindingType", a period (".") character, and the character, and the "EncodedTokenBindingID" of each.
"EncodedTokenBindingID" of each.
Both "Sec-Provided-Token-Binding-ID" and "Sec-Referred-Token-Binding- Both "Sec-Provided-Token-Binding-ID" and "Sec-Referred-Token-Binding-
ID" are single HTTP header field-valued as defined in Section 3.2 of ID" are single HTTP header field-valued as defined in Section 3.2 of
[RFC7230], which MUST NOT have a list of values or occur multiple [RFC7230], which MUST NOT have a list of values or occur multiple
times in a request. times in a request.
All header fields defined herein are only for use in HTTP requests All header fields defined herein are only for use in HTTP requests
and MUST NOT to be used in HTTP responses. and MUST NOT to be used in HTTP responses.
2.3. Processing Rules 2.3. Processing Rules
This section defines the applicable processing rules for a TLS This section defines the applicable processing rules for a TLS
terminating reverse proxy (TTRP) and backend server(s) to provide terminating reverse proxy (TTRP) and backend server(s) to provide
server side support of Token Binding over HTTP server side support of Token Binding over HTTP
[I-D.ietf-tokbind-https] using the HTTP headers described in [I-D.ietf-tokbind-https] using the HTTP headers described in
Section 2.2. Use of the technique is to be a configuration or Section 2.2. Use of the technique is to be a configuration or
deployment option and the processing rules described herein are for deployment option and the processing rules described herein are for
servers operating with that option enabled. servers operating with that option enabled.
A TTRP negotiates the use of Token Binding with the client per A TTRP negotiates the use of Token Binding with the client, such as
[I-D.ietf-tokbind-negotiation] and validates the Token Binding is described in [I-D.ietf-tokbind-negotiation] and validates the
Message as defined in The Token Binding Protocol Token Binding Message as defined in The Token Binding Protocol
[I-D.ietf-tokbind-protocol] and Token Binding over HTTP [I-D.ietf-tokbind-protocol] and Token Binding over HTTP
[I-D.ietf-tokbind-https] for each HTTP request on the underlying TLS [I-D.ietf-tokbind-https] for each HTTP request on the underlying TLS
connection. Requests with a valid Token Binding Message (and meeting connection. Requests with a valid Token Binding Message (and meeting
any other authorization or policy requirements of the TTRP) are any other authorization or policy requirements of the TTRP) are
dispatched to the backend server with the following modifications. dispatched to the backend server with the following modifications.
1. The "Sec-Token-Binding" header in the original incoming request 1. The "Sec-Token-Binding" header in the original incoming request
MUST be removed from the request that is dispatched to the MUST be removed from the request that is dispatched to the
backend server. backend server.
skipping to change at page 6, line 45 skipping to change at page 6, line 45
2.4. Examples 2.4. Examples
Extra line breaks and whitespace have been added to the following Extra line breaks and whitespace have been added to the following
examples for display and formatting purposes only. examples for display and formatting purposes only.
2.4.1. Provided Token Binding ID 2.4.1. Provided Token Binding ID
The following "Sec-Token-Binding" header is from an HTTP request made The following "Sec-Token-Binding" header is from an HTTP request made
over a TLS connection between the client and the TTRP where the use over a TLS connection between the client and the TTRP where the use
of Token Binding has been negotiated (The base64url-encoded of Token Binding has been negotiated. The base64url-encoded
representation of the exported keying material, which can be used to representation of the exported keying material for that connection is
validate the Token Binding Message, for that connection is "AYVUayPTP9RmELNpGjFl6Ykm2CUx7pUMxe35yb11dgU", which can be used to
"AYVUayPTP9RmELNpGjFl6Ykm2CUx7pUMxe35yb11dgU"). The encoded Token validate the Token Binding Message. The encoded Token Binding
Binding Message has the provided Token Binding that the client uses Message has the provided Token Binding that the client uses with the
with the server. server.
Sec-Token-Binding: AIkAAgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_YKTZfFJv Sec-Token-Binding: AIkAAgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_YKTZfFJv
6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKkAQEtxe4jeUJU0WezxlQ 6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKkAQEtxe4jeUJU0WezxlQ
XWVSBFeHxFMdXRBIH_LKOSAuSMOJ0XEw1Q8DE248qkOiRKzw3KdSNYukYEPmO21bQi XWVSBFeHxFMdXRBIH_LKOSAuSMOJ0XEw1Q8DE248qkOiRKzw3KdSNYukYEPmO21bQi
3YYAAA 3YYAAA
Figure 3: Header in HTTP Request to TTRP Figure 3: Header in HTTP Request to TTRP
After validating the Token Binding Message, the TTRP removes the After validating the Token Binding Message, the TTRP removes the
"Sec-Token-Binding" header and adds the following "Sec-Provided- "Sec-Token-Binding" header and adds the following "Sec-Provided-
skipping to change at page 7, line 26 skipping to change at page 7, line 26
Sec-Provided-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_ Sec-Provided-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_
YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk
Figure 4: Header in HTTP Request to Backend Server Figure 4: Header in HTTP Request to Backend Server
2.4.2. Provided and Referred Token Binding IDs 2.4.2. Provided and Referred Token Binding IDs
The following "Sec-Token-Binding" header is from an HTTP request made The following "Sec-Token-Binding" header is from an HTTP request made
over a TLS connection between the client and the TTRP where the use over a TLS connection between the client and the TTRP where the use
of Token Binding has been negotiated (The base64url-encoded of Token Binding has been negotiated. The base64url-encoded
representation of the exported keying material, which can be used to representation of the exported keying material for that connection is
validate the Token Binding Message, for that connection is "wEWWCP1KPxfq-QL4NxYII_P4ti_9YYqrTpGs28BZEqE", which can be used to
"wEWWCP1KPxfq-QL4NxYII_P4ti_9YYqrTpGs28BZEqE"). The encoded Token validate the Token Binding Message. The encoded Token Binding
Binding Message has the provided Token Binding that the client uses Message has the provided Token Binding that the client uses with the
with the server as well as the referred Token Binding that it uses server as well as the referred Token Binding that it uses with a
with a different server. different server.
Sec-Token-Binding: ARIAAgBBQCfsI1D1sTq5mvT_2H_dihNIvuHJCHGjHPJchPav Sec-Token-Binding: ARIAAgBBQCfsI1D1sTq5mvT_2H_dihNIvuHJCHGjHPJchPav
NbGrOo26-2JgT_IsbvZd4daDFbirYBIwJ-TK1rh8FzrC-psAQMyYIqXj7djGPev1dk NbGrOo26-2JgT_IsbvZd4daDFbirYBIwJ-TK1rh8FzrC-psAQMyYIqXj7djGPev1dk
jV9XxLYGCyqOrBVEtBHrMUCeo22ymLg3OiFcl_fmOPxJbjxI6lKcF0lyfy-dSQmPIe jV9XxLYGCyqOrBVEtBHrMUCeo22ymLg3OiFcl_fmOPxJbjxI6lKcF0lyfy-dSQmPIe
zQ0AAAECAEFArPIiuZxj9gK0dWhIcG63r2-sZ8V3LX9gpNl8Um_oGOtmwoP1v0VHNI zQ0AAAECAEFArPIiuZxj9gK0dWhIcG63r2-sZ8V3LX9gpNl8Um_oGOtmwoP1v0VHNI
HEOzW3BOqcBLvUzVEG6a6KGEj3GrFcqQBAHQm0pzgUTXKLRamuKE1pmmP9I3UBVpoe HEOzW3BOqcBLvUzVEG6a6KGEj3GrFcqQBAHQm0pzgUTXKLRamuKE1pmmP9I3UBVpoe
1DBCe9H2l1VPpsImakUa6crAqZ-0CGBmji7bYzQogpKcyxTTFk5zdwAA 1DBCe9H2l1VPpsImakUa6crAqZ-0CGBmji7bYzQogpKcyxTTFk5zdwAA
Figure 5: Header in HTTP Request to TTRP Figure 5: Header in HTTP Request to TTRP
skipping to change at page 8, line 16 skipping to change at page 8, line 16
HPJchPavNbGrOo26-2JgT_IsbvZd4daDFbirYBIwJ-TK1rh8FzrC-ps HPJchPavNbGrOo26-2JgT_IsbvZd4daDFbirYBIwJ-TK1rh8FzrC-ps
Sec-Referred-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_ Sec-Referred-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_
YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk
Figure 6: Headers in HTTP Request to Backend Server Figure 6: Headers in HTTP Request to Backend Server
2.4.3. Provided and Other Token Binding IDs 2.4.3. Provided and Other Token Binding IDs
The following "Sec-Token-Binding" header is from an HTTP request made The following "Sec-Token-Binding" header is from an HTTP request made
over a TLS connection between the client and the TTRP where the use over a TLS connection between the client and the TTRP where the use
of Token Binding has been negotiated (The base64url-encoded of Token Binding has been negotiated. The base64url-encoded
representation of the exported keying material, which can be used to representation of the exported keying material for that connection is
validate the Token Binding Message, for that connection is "Zr_1DESCcDoaltcZCK613UrEWHRf2B3w9i3bwcxpacc", which can be used to
"Zr_1DESCcDoaltcZCK613UrEWHRf2B3w9i3bwcxpacc"). The encoded Token validate the Token Binding Message. The encoded Token Binding
Binding Message has the provided Token Binding and two other Token Message has the provided Token Binding and two other Token Bindings.
Bindings.
Sec-Token-Binding: AZsAAgBBQA35hcCjI5GEHLLAZ0i2l2ZvQe-bSPAP7jovkZJM Sec-Token-Binding: AZsAAgBBQA35hcCjI5GEHLLAZ0i2l2ZvQe-bSPAP7jovkZJM
4wYHgmmXNd1aRpnQmXK9ghUmrdtS6p_e2uSlMXIVKOIwgysAQJ-TKyVGF37XUXMy79 4wYHgmmXNd1aRpnQmXK9ghUmrdtS6p_e2uSlMXIVKOIwgysAQJ-TKyVGF37XUXMy79
ybwJyPpfCG9Iq6fdIxLX_yJn-L__Z3p_WIL3g17K0OH3XZmJS3qZNNEVu_8HmPN-d9 ybwJyPpfCG9Iq6fdIxLX_yJn-L__Z3p_WIL3g17K0OH3XZmJS3qZNNEVu_8HmPN-d9
hGMAAE0CAEFAR68GbdIQyrHqkorJF0sekYJvf8iV03obGxbaWbqAEJetsYxprB6c3M hGMAAE0CAEFAR68GbdIQyrHqkorJF0sekYJvf8iV03obGxbaWbqAEJetsYxprB6c3M
x5KDHBGZjsFbeFW5Xec_EaxX0Hw3RmJwBA-Fu22kokRbB7G0D0g6_sdCHTbczSCmnm x5KDHBGZjsFbeFW5Xec_EaxX0Hw3RmJwBA-Fu22kokRbB7G0D0g6_sdCHTbczSCmnm
6rqP1x7kRIIj_kJNCCWcwMMFzbsBTXcm5fJrRdBTcsqiiqYD6aJ1SgAACwIAQUCDqt 6rqP1x7kRIIj_kJNCCWcwMMFzbsBTXcm5fJrRdBTcsqiiqYD6aJ1SgAACwIAQUCDqt
6m63By8b1lvhN-n9OsQThoLomzKpMicSZGwR166jplhbkjrFsHzdNqzLFFEhCT9s0p 6m63By8b1lvhN-n9OsQThoLomzKpMicSZGwR166jplhbkjrFsHzdNqzLFFEhCT9s0p
XrcbpOHsZnpRSkmhAEBfOwxjK3Y9EOeMrqjo0IUhmurW2EgtSRBjDwc0r-rDT231Zv XrcbpOHsZnpRSkmhAEBfOwxjK3Y9EOeMrqjo0IUhmurW2EgtSRBjDwc0r-rDT231Zv
_f1oePB8Pkd1kgAtgKX5EDiemfo1YER3_I2cv3AAA _f1oePB8Pkd1kgAtgKX5EDiemfo1YER3_I2cv3AAA
skipping to change at page 8, line 43 skipping to change at page 8, line 42
Figure 7: Header in HTTP Request to TTRP Figure 7: Header in HTTP Request to TTRP
After validating the Token Binding Message, the TTRP removes the After validating the Token Binding Message, the TTRP removes the
"Sec-Token-Binding" header and adds the following "Sec-Provided- "Sec-Token-Binding" header and adds the following "Sec-Provided-
Token-Binding-ID" and "Sec-Other-Token-Binding-ID" headers to the Token-Binding-ID" and "Sec-Other-Token-Binding-ID" headers to the
request that is dispatched to the backend server. request that is dispatched to the backend server.
Sec-Provided-Token-Binding-ID: AgBBQA35hcCjI5GEHLLAZ0i2l2ZvQe-bSPAP Sec-Provided-Token-Binding-ID: AgBBQA35hcCjI5GEHLLAZ0i2l2ZvQe-bSPAP
7jovkZJM4wYHgmmXNd1aRpnQmXK9ghUmrdtS6p_e2uSlMXIVKOIwgys 7jovkZJM4wYHgmmXNd1aRpnQmXK9ghUmrdtS6p_e2uSlMXIVKOIwgys
Sec-Other-Token-Binding-ID: 4d.AgBBQEevBm3SEMqx6pKKyRdLHpGCb3_IldN6 Sec-Other-Token-Binding-ID: 4d.AgBBQEevBm3SEMqx6pKKyRdLHpGCb3_IldN6
GxsW2lm6gBCXrbGMaawenNzMeSgxwRmY7BW3hVuV3nPxGsV9B8N0Zic,b.AgBBQIO GxsW2lm6gBCXrbGMaawenNzMeSgxwRmY7BW3hVuV3nPxGsV9B8N0Zic,B.AgBBQIO
q3qbrcHLxvWW-E36f06xBOGguibMqkyJxJkbBHXrqOmWFuSOsWwfN02rMsUUSEJP2 q3qbrcHLxvWW-E36f06xBOGguibMqkyJxJkbBHXrqOmWFuSOsWwfN02rMsUUSEJP2
zSletxuk4exmelFKSaE zSletxuk4exmelFKSaE
Figure 8: Headers in HTTP Request to Backend Server Figure 8: Headers in HTTP Request to Backend Server
3. Security Considerations 3. Security Considerations
3.1. HTTP Headers
The headers described herein enable a reverse proxy and backend The headers described herein enable a reverse proxy and backend
server to function together as though they are a single logical server to function together as though they are a single logical
server side deployment of HTTPS Token Binding. Use of the headers server side deployment of HTTPS Token Binding. Use of the headers
outside that intended use case, however, may undermine the outside that intended use case, however, may undermine the
protections afforded by Token Binding. Therefore steps MUST be taken protections afforded by Token Binding. Therefore steps MUST be taken
to prevent unintended use, both in sending the headers and in relying to prevent unintended use, both in sending the headers and in relying
on their value. on their value.
Producing and consuming the headers SHOULD be a configurable option, Producing and consuming the headers SHOULD be a configurable option,
skipping to change at page 9, line 48 skipping to change at page 9, line 47
private network such that the backend application is only able to private network such that the backend application is only able to
accept requests from the reverse proxy and the proxy can only make accept requests from the reverse proxy and the proxy can only make
requests to that server. Other deployments that meet the requests to that server. Other deployments that meet the
requirements set forth herein are also possible. requirements set forth herein are also possible.
Employing the "Sec-" header field prefix for the headers defined Employing the "Sec-" header field prefix for the headers defined
herein denotes them as forbidden header names (see [fetch-spec]), herein denotes them as forbidden header names (see [fetch-spec]),
which means they cannot be set or modified programmatically by script which means they cannot be set or modified programmatically by script
running in-browser. running in-browser.
3.2. TLS Versions and Best Practices
TLS 1.2 [RFC5246] is cited in this document because, at the time of
writing, it is the latest version that is widely deployed. However,
this document is applicable with other TLS versions that allow for
negotiating the use of Token Binding. [I-D.ietf-tokbind-tls13], for
example, describes Token Binding for TLS 1.3 [I-D.ietf-tls-tls13].
Implementation security considerations for TLS, including version
recommendations, can be found in Recommendations for Secure Use of
Transport Layer Security (TLS) and Datagram Transport Layer Security
(DTLS) [BCP195].
4. IANA Considerations 4. IANA Considerations
4.1. HTTP Message Header Field Names Registration 4.1. HTTP Message Header Field Names Registration
This document specifies the following new HTTP header fields, This document specifies the following new HTTP header fields,
registration of which is requested in the "Permanent Message Header registration of which is requested in the "Permanent Message Header
Field Names" registry defined in [RFC3864]. Field Names" registry defined in [RFC3864].
o Header Field Name: "Sec-Provided-Token-Binding-ID" o Header Field Name: "Sec-Provided-Token-Binding-ID"
o Applicable protocol: HTTP o Applicable protocol: HTTP
o Status: standard o Status: standard
o Author/change Controller: IETF o Author/change Controller: IETF
skipping to change at page 10, line 32 skipping to change at page 10, line 41
o Header Field Name: "Sec-Other-Token-Binding-ID" o Header Field Name: "Sec-Other-Token-Binding-ID"
o Applicable protocol: HTTP o Applicable protocol: HTTP
o Status: standard o Status: standard
o Author/change Controller: IETF o Author/change Controller: IETF
o Specification Document(s): [[ this specification ]] o Specification Document(s): [[ this specification ]]
5. References 5. References
5.1. Normative References 5.1. Normative References
[BCP195] Sheffer, Y., Holz, R., and P. Saint-Andre,
"Recommendations for Secure Use of Transport Layer
Security (TLS) and Datagram Transport Layer Security
(DTLS)", BCP 195, RFC 7525, DOI 10.17487/RFC7525, May
2015, <http://www.rfc-editor.org/info/bcp195>.
[I-D.ietf-tokbind-https] [I-D.ietf-tokbind-https]
Popov, A., Nystrom, M., Balfanz, D., Langley, A., Harper, Popov, A., Nystrom, M., Balfanz, D., Langley, A., Harper,
N., and J. Hodges, "Token Binding over HTTP", draft-ietf- N., and J. Hodges, "Token Binding over HTTP", draft-ietf-
tokbind-https-12 (work in progress), January 2018. tokbind-https-12 (work in progress), January 2018.
[I-D.ietf-tokbind-negotiation] [I-D.ietf-tokbind-negotiation]
Popov, A., Nystrom, M., Balfanz, D., and A. Langley, Popov, A., Nystrom, M., Balfanz, D., and A. Langley,
"Transport Layer Security (TLS) Extension for Token "Transport Layer Security (TLS) Extension for Token
Binding Protocol Negotiation", draft-ietf-tokbind- Binding Protocol Negotiation", draft-ietf-tokbind-
negotiation-10 (work in progress), October 2017. negotiation-10 (work in progress), October 2017.
skipping to change at page 11, line 38 skipping to change at page 12, line 5
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
5.2. Informative References 5.2. Informative References
[fetch-spec] [fetch-spec]
WhatWG, "Fetch", Living Standard , WhatWG, "Fetch", Living Standard ,
<https://fetch.spec.whatwg.org/>. <https://fetch.spec.whatwg.org/>.
[I-D.ietf-tls-tls13]
Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", draft-ietf-tls-tls13-28 (work in progress),
March 2018.
[I-D.ietf-tokbind-tls13]
Harper, N., "Token Binding for Transport Layer Security
(TLS) Version 1.3 Connections", draft-ietf-tokbind-
tls13-01 (work in progress), May 2018.
[RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration [RFC3864] Klyne, G., Nottingham, M., and J. Mogul, "Registration
Procedures for Message Header Fields", BCP 90, RFC 3864, Procedures for Message Header Fields", BCP 90, RFC 3864,
DOI 10.17487/RFC3864, September 2004, DOI 10.17487/RFC3864, September 2004,
<https://www.rfc-editor.org/info/rfc3864>. <https://www.rfc-editor.org/info/rfc3864>.
Appendix A. Acknowledgements Appendix A. Acknowledgements
The author would like to thank the following people for their various The author would like to thank the following people for their various
contributions to the specification: Vinod Anupam, Dirk Balfanz, John contributions to the specification: Vinod Anupam, Dirk Balfanz, John
Bradley, William Denniss, Nick Harper, Jeff Hodges, Subodh Iyengar, Bradley, William Denniss, Nick Harper, Jeff Hodges, Subodh Iyengar,
Leif Johansson, Michael B. Jones, Yoav Nir, James Manger, Andrei Leif Johansson, Michael B. Jones, Yoav Nir, James Manger, Andrei
Popov, Eric Rescorla, Piotr Sikora, Martin Thomson, and Hans Zandbelt Popov, Eric Rescorla, Piotr Sikora, Martin Thomson, and Hans Zandbelt
Appendix B. Document History Appendix B. Document History
[[ to be removed by the RFC Editor before publication as an RFC ]] [[ to be removed by the RFC Editor before publication as an RFC ]]
draft-ietf-tokbind-ttrp-05
o Editorial updates.
o Change one character in the last example to help emphasize the
case-insensitivity of hex.
o Add a TLS Versions and Best Practices section with BCP195 and also
mention of ietf-tokbind-tls13 and ietf-tls-tls13.
draft-ietf-tokbind-ttrp-04 draft-ietf-tokbind-ttrp-04
o Add an example with Sec-Other-Token-Binding-ID. o Add an example with Sec-Other-Token-Binding-ID.
o Use the HEXDIG core ABNF rule for EncodedTokenBindingType and o Use the HEXDIG core ABNF rule for EncodedTokenBindingType and
mention case-insensitive in the text. mention case-insensitive in the text.
o Minor editorial fixes. o Minor editorial fixes.
o Add to the Acknowledgements and remove the 'and others' bit. o Add to the Acknowledgements and remove the 'and others' bit.
draft-ietf-tokbind-ttrp-03
o Add a header to allow for additional token binding types other o Add a header to allow for additional token binding types other
than provided and referred to be conveyed. than provided and referred to be conveyed.
o Reword the Abstract somewhat for (hopefully) improved readability. o Reword the Abstract somewhat for (hopefully) improved readability.
o Minor editorial and formatting updates. o Minor editorial and formatting updates.
draft-ietf-tokbind-ttrp-02 draft-ietf-tokbind-ttrp-02
o Add to the Acknowledgements. o Add to the Acknowledgements.
skipping to change at page 13, line 5 skipping to change at page 13, line 37
o Prefix the header names with "Sec-" so that they are denoted as o Prefix the header names with "Sec-" so that they are denoted as
forbidden header names by Fetch https://fetch.spec.whatwg.org/ forbidden header names by Fetch https://fetch.spec.whatwg.org/
o Removed potentially confusing sentence from Security o Removed potentially confusing sentence from Security
Considerations per Considerations per
https://mailarchive.ietf.org/arch/msg/unbearable/ https://mailarchive.ietf.org/arch/msg/unbearable/
O0IpppyyEqMrQjEkyEi8p8CeBGA O0IpppyyEqMrQjEkyEi8p8CeBGA
o Editorial fixes. o Editorial fixes.
draft-ietf-tokbind-ttrp-00
o Initial WG draft from draft-campbell-tokbind-ttrp. o Initial WG draft from draft-campbell-tokbind-ttrp.
draft-campbell-tokbind-ttrp-01 draft-campbell-tokbind-ttrp-01
o Minor editorial fixes. o Minor editorial fixes.
o Add to the Acknowledgements. o Add to the Acknowledgements.
draft-campbell-tokbind-ttrp-00 draft-campbell-tokbind-ttrp-00
o Initial draft based on 'consensus to work on the problem' from the o Initial draft based on 'consensus to work on the problem' from the
Seoul meeting [1][2] and reflecting the consensus approach from Seoul meeting [1][2] and reflecting the consensus approach from
discussions at the Chicago meeting [3]. discussions at the Chicago meeting [3].
[1] https://www.ietf.org/proceedings/97/minutes/minutes-97- [1] https://www.ietf.org/proceedings/97/minutes/minutes-97-
tokbind-01.txt (minutes from Seoul) tokbind-01.txt (minutes from Seoul)
[2] https://www.ietf.org/proceedings/97/slides/slides-97-tokbind- [2] https://www.ietf.org/proceedings/97/slides/slides-97-tokbind-
reverse-proxies-00.pdf (slides from Seoul) reverse-proxies-00.pdf (slides from Seoul)
[3] https://mailarchive.ietf.org/arch/msg/ [3] https://mailarchive.ietf.org/arch/msg/
unbearable/_ZHI8y2Vs5WMP8VMRr7zroo_sNU (summary of discussion) unbearable/_ZHI8y2Vs5WMP8VMRr7zroo_sNU (summary of discussion)
 End of changes. 26 change blocks. 
69 lines changed or deleted 108 lines changed or added

This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/