draft-ietf-tokbind-ttrp-02.txt | draft-ietf-tokbind-ttrp-03.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 January 29, 2018 | Intended status: Standards Track February 25, 2018 | |||
Expires: August 2, 2018 | Expires: August 29, 2018 | |||
HTTPS Token Binding with TLS Terminating Reverse Proxies | HTTPS Token Binding with TLS Terminating Reverse Proxies | |||
draft-ietf-tokbind-ttrp-02 | draft-ietf-tokbind-ttrp-03 | |||
Abstract | Abstract | |||
This document defines common HTTP header fields that enable a TLS | This document defines HTTP header fields that enable a TLS | |||
terminating reverse proxy to convey information about the validated | terminating reverse proxy to convey information to a backend server | |||
Token Binding Message sent by the client to a backend server, which | about the validated Token Binding Message received from a client, | |||
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. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 August 2, 2018. | This Internet-Draft will expire on August 29, 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 | |||
skipping to change at page 2, line 11 ¶ | skipping to change at page 2, line 11 ¶ | |||
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 . . . . . . . . . . . 3 | |||
2.1. Encoding . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2.1. Encoding . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
2.1.1. Token Binding ID . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . . . . . . . . . . 4 | 2.3. Processing Rules . . . . . . . . . . . . . . . . . . . . 5 | |||
2.4. Examples . . . . . . . . . . . . . . . . . . . . . . . . 5 | 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 . . . . . . . 6 | 2.4.2. Provided and Referred Token Binding IDs . . . . . . . 7 | |||
3. Security Considerations . . . . . . . . . . . . . . . . . . . 7 | 3. Security Considerations . . . . . . . . . . . . . . . . . . . 8 | |||
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 8 | |||
4.1. HTTP Message Header Field Names Registration . . . . . . 8 | 4.1. HTTP Message Header Field Names Registration . . . . . . 9 | |||
5. References . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. References . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
5.1. Normative References . . . . . . . . . . . . . . . . . . 8 | 5.1. Normative References . . . . . . . . . . . . . . . . . . 9 | |||
5.2. Informative References . . . . . . . . . . . . . . . . . 9 | 5.2. Informative References . . . . . . . . . . . . . . . . . 10 | |||
Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 9 | Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 10 | |||
Appendix B. Document History . . . . . . . . . . . . . . . . . . 10 | Appendix B. Document History . . . . . . . . . . . . . . . . . . 11 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
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 held by the browser or other HTTP client, | |||
possession of which is proven on the TLS [RFC5246] connections over | possession of which is proven on the TLS [RFC5246] connections over | |||
which the tokens are used. When Token Binding is negotiated in the | which the tokens are used. When Token Binding is negotiated in the | |||
TLS handshake [I-D.ietf-tokbind-negotiation] the client sends an | TLS handshake [I-D.ietf-tokbind-negotiation] the client sends an | |||
encoded Token Binding Message [I-D.ietf-tokbind-protocol] as a header | encoded Token Binding Message [I-D.ietf-tokbind-protocol] as a header | |||
skipping to change at page 3, line 13 ¶ | skipping to change at page 3, line 15 ¶ | |||
opaque to clients who make requests to the proxy server and see | opaque to clients who make requests to the proxy server and see | |||
responses as though they originated from the proxy server itself. | responses as though they originated from the proxy server itself. | |||
TLS connections for HTTPS are established between each client and the | TLS connections for HTTPS are established between each client and the | |||
reverse proxy server. | 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 | |||
cookies or other security tokens. Additional steps are therefore | and validate cookies or other security tokens. Additional steps are | |||
needed to enable the use of Token Binding in such deployment | therefore needed to enable the use of Token Binding in such | |||
architectures. In the absence of a standardized approach, different | deployment architectures. In the absence of a standardized approach, | |||
implementations will address it differently, which will make | different implementations will address it differently, which will | |||
interoperability between such implementations difficult or impossible | make interoperability between such implementations difficult or | |||
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 the information from the | the backend servers. The headers contain information from the | |||
validated Token Binding Message sent by the client to the proxy with | validated Token Binding Message sent by the client to the proxy, thus | |||
the "Sec-Token-Binding" header, thus enabling the backend server to | enabling the backend server to bind, or verify the binding of, | |||
bind, or verify the binding of, cookies and other security tokens to | cookies and other security tokens to the client's Token Binding key. | |||
the client's Token Binding key. The usage of the headers, both the | The usage of the headers, both the reverse proxy adding it and the | |||
reverse proxy adding it and the application server using them to bind | application server using them to bind cookies or other tokens, are to | |||
cookies or other tokens, are to be configuration options of the | be configuration options of the respective systems as they will not | |||
respective systems as they will not always be applicable. | 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 | |||
2.1. Encoding | 2.1. Encoding | |||
The field-values of the HTTP headers defined herein utilize the | The field-values of the HTTP headers defined herein utilize the | |||
following encoded forms. | following encoded forms. | |||
A Token Binding ID is represented as an "EncodedTokenBindingID", for | 2.1.1. Token Binding ID | |||
which the ABNF [RFC5234] syntax is shown in Figure 1 below. | ||||
EncodedTokenBindingID = *( DIGIT / ALPHA / "-" / "_" ) | A Token Binding ID is represented as an "EncodedTokenBindingID", | |||
which is thea base64url encoding of the TokenBindingID byte sequence | ||||
(see section 3 of [I-D.ietf-tokbind-protocol]) using the URL and | ||||
filename safe alphabet described in Section 5 of [RFC4648], with all | ||||
trailing pad characters '=' omitted and without the inclusion of any | ||||
line breaks, whitespace, or other additional characters. ABNF | ||||
[RFC5234] syntax for "EncodedTokenBindingID" is shown in Figure 1 | ||||
below. | ||||
DIGIT = <Defined in Section B.1 of [RFC5234]> | EncodedTokenBindingID = *( DIGIT / ALPHA / "-" / "_" ) | |||
ALPHA = <Defined in Section B.1 of [RFC5234]> | ||||
Figure 1: Encoded Token Binding ID Header ABNF | DIGIT = <Defined in Section B.1 of [RFC5234]> | |||
ALPHA = <Defined in Section B.1 of [RFC5234]> | ||||
The value of an "EncodedTokenBindingID" is a base64url encoding of | Figure 1: Encoded Token Binding ID ABNF | |||
the TokenBindingID byte sequence (see section 3 of | ||||
[I-D.ietf-tokbind-protocol]) using the URL and filename safe alphabet | 2.1.2. Token Binding Type | |||
described in Section 5 of [RFC4648], with all trailing pad characters | ||||
'=' omitted and without the inclusion of any line breaks, whitespace, | A Token Binding type can be represented as an | |||
or other additional characters. | "EncodedTokenBindingType", which is the base16 encoding (Section 8 of | |||
[RFC4648]) of the single TokenBindingType byte. ABNF [RFC5234] | ||||
syntax for "EncodedTokenBindingType" is shown in Figure 2 below. | ||||
EncodedTokenBindingType = 1*2( DIGIT / | ||||
"A" / "B" / "C" / "D" / "E" / "F" / | ||||
"a" / "b" / "c" / "d" / "e" / "f" ) | ||||
Figure 2: Encoded Token Binding Type ABNF | ||||
2.2. Token Binding ID HTTP Header Fields | 2.2. Token Binding ID HTTP Header Fields | |||
The Token Binding Protocol [I-D.ietf-tokbind-protocol] recommends | The Token Binding Protocol [I-D.ietf-tokbind-protocol] recommends | |||
that implementations make Token Binding IDs available to the | that implementations make Token Binding IDs available to the | |||
application as opaque byte sequences, enabling those applications to | application as opaque byte sequences, enabling those applications to | |||
use the Token Binding IDs when generating and verifying bound tokens. | use the Token Binding IDs when generating and verifying bound tokens. | |||
In the context of a TLS terminating reverse proxy (TTRP) deployment, | In the context of a TLS terminating reverse proxy (TTRP) deployment, | |||
the TTRP makes the Token Binding ID(s) available to the backend | the TTRP makes the Token Binding ID(s) available to the backend | |||
application, when applicable, with the following header fields. | application with the following header fields. | |||
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" as defined in Section 2.1. | 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" as defined in Section 2.1. | an "EncodedTokenBindingID". | |||
Sec-Other-Token-Binding-ID | ||||
Additional Token Bindings, other than provided and referred, that | ||||
are sent by the client and validated by the TTRP are represented | ||||
as a comma-separated list of the concatenation of the | ||||
"EncodedTokenBindingType", a period (".") character, and the | ||||
"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. An "EncodedTokenBindingID" is only for use in | times in a request. | |||
HTTP requests and MUST NOT to be used in HTTP responses. | ||||
All header fields defined herein are only for use in HTTP requests | ||||
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 | |||
deployments 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 per | |||
[I-D.ietf-tokbind-negotiation] and validates the Token Binding | [I-D.ietf-tokbind-negotiation] and validates the Token Binding | |||
Message as defined in The Token Binding Protocol | 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. | |||
skipping to change at page 5, line 30 ¶ | skipping to change at page 6, line 7 ¶ | |||
Binding-ID" header field of the dispatched request using the | Binding-ID" header field of the dispatched request using the | |||
format defined in Section 2.2. | format defined in Section 2.2. | |||
3. If the Token Binding Message contains a referred Token Binding, | 3. If the Token Binding Message contains a referred Token Binding, | |||
the referred Token Binding ID MUST be placed in the "Sec- | the referred Token Binding ID MUST be placed in the "Sec- | |||
Referred-Token-Binding-ID" header field of the dispatched request | Referred-Token-Binding-ID" header field of the dispatched request | |||
using the format defined in Section 2.2. Otherwise, the "Sec- | using the format defined in Section 2.2. Otherwise, the "Sec- | |||
Referred-Token-Binding-ID" header field MUST NOT be present in | Referred-Token-Binding-ID" header field MUST NOT be present in | |||
the dispatched request. | the dispatched request. | |||
4. Any occurrence of the "Sec-Provided-Token-Binding-ID" or "Sec- | 4. If the Token Binding Message contains any additional validated | |||
Referred-Token-Binding-ID" header in the original incoming | Token Bindings, they are placed in the "Sec-Other-Token-Binding- | |||
request MUST be removed or overwritten before forwarding the | ID" header field using the format defined in Section 2.2. If the | |||
request. | Token Binding Message contains no additional valid Token | |||
Bindings, the "Sec-Referred-Token-Binding-ID" header field MUST | ||||
NOT be present in the dispatched request. | ||||
Requests made over a TLS connection where the use of Token Binding | 5. Any occurrence of the "Sec-Provided-Token-Binding-ID", "Sec- | |||
was not negotiated MUST be sanitized by removing any occurrences of | Referred-Token-Binding-ID", and "Sec-Other-Token-Binding-ID" | |||
the "Sec-Provided-Token-Binding-ID" and "Sec-Referred-Token-Binding- | headers in the original incoming request MUST be removed or | |||
ID" header fields prior to dispatching the request to the backend | overwritten before forwarding the request. | |||
server. | ||||
Requests made over a connection where the use of Token Binding was | ||||
not negotiated MUST be sanitized by removing any occurrences of the | ||||
"Sec-Provided-Token-Binding-ID", "Sec-Referred-Token-Binding-ID", and | ||||
"Sec-Other-Token-Binding-ID" header fields prior to dispatching the | ||||
request to the backend server. | ||||
Forward proxies and other intermediaries MUST NOT add the "Sec- | Forward proxies and other intermediaries MUST NOT add the "Sec- | |||
Provided-Token-Binding-ID" or "Sec-Referred-Token-Binding-ID" header | Provided-Token-Binding-ID" "Sec-Referred-Token-Binding-ID", or "Sec- | |||
to requests. | Other-Token-Binding-ID" header to requests. | |||
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 | |||
skipping to change at page 6, line 21 ¶ | skipping to change at page 6, line 50 ¶ | |||
validate the Token Binding Message, for that connection is | validate the Token Binding Message, for that connection is | |||
"AYVUayPTP9RmELNpGjFl6Ykm2CUx7pUMxe35yb11dgU"). The encoded Token | "AYVUayPTP9RmELNpGjFl6Ykm2CUx7pUMxe35yb11dgU"). The encoded Token | |||
Binding Message has the provided Token Binding the client uses with | Binding Message has the provided Token Binding the client uses with | |||
the server. | the server. | |||
Sec-Token-Binding: AIkAAgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_YKTZfFJv | Sec-Token-Binding: AIkAAgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_YKTZfFJv | |||
6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKkAQEtxe4jeUJU0WezxlQ | 6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKkAQEtxe4jeUJU0WezxlQ | |||
XWVSBFeHxFMdXRBIH_LKOSAuSMOJ0XEw1Q8DE248qkOiRKzw3KdSNYukYEPmO21bQi | XWVSBFeHxFMdXRBIH_LKOSAuSMOJ0XEw1Q8DE248qkOiRKzw3KdSNYukYEPmO21bQi | |||
3YYAAA | 3YYAAA | |||
Figure 2: 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- | |||
Token-Binding-ID" header with the provided Token Binding ID to the | Token-Binding-ID" header with the provided Token Binding ID to the | |||
request that is dispatched to the backend server. | request that is dispatched to the backend server. | |||
Sec-Provided-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_ | Sec-Provided-Token-Binding-ID: AgBBQKzyIrmcY_YCtHVoSHBut69vrGfFdy1_ | |||
YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk | YKTZfFJv6BjrZsKD9b9FRzSBxDs1twTqnAS71M1RBumuihhI9xqxXKk | |||
Figure 3: 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, which can be used to | |||
validate the Token Binding Message, for that connection is | validate the Token Binding Message, for that connection is | |||
"wEWWCP1KPxfq-QL4NxYII_P4ti_9YYqrTpGs28BZEqE"). The encoded Token | "wEWWCP1KPxfq-QL4NxYII_P4ti_9YYqrTpGs28BZEqE"). The encoded Token | |||
Binding Message has the provided Token Binding the client uses with | Binding Message has the provided Token Binding the client uses with | |||
the server as well as the referred Token Binding that it uses with a | the server as well as the referred Token Binding that it uses 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 4: Header in HTTP Request to TTRP | Figure 5: 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-Referred-Token-Binding-ID" headers, with | Token-Binding-ID" and "Sec-Referred-Token-Binding-ID" headers, with | |||
the provided and referred Token Binding IDs respectively, to the | the provided and referred Token Binding IDs respectively, to the | |||
request that is dispatched to the backend server. | request that is dispatched to the backend server. | |||
Sec-Provided-Token-Binding-ID: AgBBQCfsI1D1sTq5mvT_2H_dihNIvuHJCHGj | Sec-Provided-Token-Binding-ID: AgBBQCfsI1D1sTq5mvT_2H_dihNIvuHJCHGj | |||
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 5: Headers in HTTP Request to Backend Server | Figure 6: Headers in HTTP Request to Backend Server | |||
3. Security Considerations | 3. Security Considerations | |||
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 single logical server | server to function together as though they are single logical server | |||
side deployment of HTTPS Token Binding. Use of the headers outside | side deployment of HTTPS Token Binding. Use of the headers outside | |||
that intended use case, however, may undermine the protections | that intended use case, however, may undermine the protections | |||
afforded by Token Binding. Therefore steps MUST be taken to prevent | afforded by Token Binding. Therefore steps MUST be taken to prevent | |||
unintended use, both in sending the headers and in relying on their | unintended use, both in sending the headers and in relying on their | |||
value. | value. | |||
skipping to change at page 8, line 32 ¶ | skipping to change at page 9, line 22 ¶ | |||
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 ]] | |||
o Header Field Name: "Sec-Referred-Token-Binding-ID" | o Header Field Name: "Sec-Referred-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 ]] | |||
o Header Field Name: "Sec-Other-Token-Binding-ID" | ||||
o Applicable protocol: HTTP | ||||
o Status: standard | ||||
o Author/change Controller: IETF | ||||
o Specification Document(s): [[ this specification ]] | ||||
5. References | 5. References | |||
5.1. Normative References | 5.1. Normative References | |||
[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] | |||
skipping to change at page 10, line 4 ¶ | skipping to change at page 10, line 48 ¶ | |||
[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, Yoav Nir, Andrei Popov, Eric Rescorla, Piotr Sikora, | Leif Johansson, Michael B. Jones, Yoav Nir, Andrei Popov, Eric | |||
Martin Thomson, Hans Zandbelt and others (please let me know, if | Rescorla, Piotr Sikora, Martin Thomson, Hans Zandbelt and others | |||
you've contributed and I've forgotten you). | (please let me know, if you've contributed and I've forgotten you). | |||
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-03 | ||||
o Add a header to allow for additional token binding types other | ||||
than provided and referred to be conveyed. | ||||
o Reword the Abstract somewhat for (hopefully) improved readability. | ||||
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. | |||
o Update references for Token Binding negotiation, protocol, and | o Update references for Token Binding negotiation, protocol, and | |||
https. | https. | |||
o Use the boilerplate from RFC 8174. | o Use the boilerplate from RFC 8174. | |||
o Reformat the "HTTP Header Fields and Processing Rules" section to | o Reformat the "HTTP Header Fields and Processing Rules" section to | |||
skipping to change at page 10, line 47 ¶ | skipping to change at page 12, line 5 ¶ | |||
draft-ietf-tokbind-ttrp-00 | 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 | ||||
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. 31 change blocks. | ||||
71 lines changed or deleted | 116 lines changed or added | |||
This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |