diff options
author | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
---|---|---|
committer | Thomas Voss <mail@thomasvoss.com> | 2024-11-27 20:54:24 +0100 |
commit | 4bfd864f10b68b71482b35c818559068ef8d5797 (patch) | |
tree | e3989f47a7994642eb325063d46e8f08ffa681dc /doc/rfc/rfc6595.txt | |
parent | ea76e11061bda059ae9f9ad130a9895cc85607db (diff) |
doc: Add RFC documents
Diffstat (limited to 'doc/rfc/rfc6595.txt')
-rw-r--r-- | doc/rfc/rfc6595.txt | 1235 |
1 files changed, 1235 insertions, 0 deletions
diff --git a/doc/rfc/rfc6595.txt b/doc/rfc/rfc6595.txt new file mode 100644 index 0000000..f8fedf7 --- /dev/null +++ b/doc/rfc/rfc6595.txt @@ -0,0 +1,1235 @@ + + + + + + +Internet Engineering Task Force (IETF) K. Wierenga +Request for Comments: 6595 Cisco Systems, Inc. +Category: Standards Track E. Lear +ISSN: 2070-1721 Cisco Systems GmbH + S. Josefsson + SJD AB + April 2012 + + +A Simple Authentication and Security Layer (SASL) and GSS-API Mechanism + for the Security Assertion Markup Language (SAML) + +Abstract + + The Security Assertion Markup Language (SAML) has found its usage on + the Internet for Web Single Sign-On. The Simple Authentication and + Security Layer (SASL) and the Generic Security Service Application + Program Interface (GSS-API) are application frameworks to generalize + authentication. This memo specifies a SASL mechanism and a GSS-API + mechanism for SAML 2.0 that allows the integration of existing SAML + Identity Providers with applications using SASL and GSS-API. + +Status of This Memo + + This is an Internet Standards Track document. + + This document is a product of the Internet Engineering Task Force + (IETF). It represents the consensus of the IETF community. It has + received public review and has been approved for publication by the + Internet Engineering Steering Group (IESG). Further information on + Internet Standards is available in Section 2 of RFC 5741. + + Information about the current status of this document, any errata, + and how to provide feedback on it may be obtained at + http://www.rfc-editor.org/info/rfc6595. + + + + + + + + + + + + + + + + +Wierenga, et al. Standards Track [Page 1] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +Copyright Notice + + Copyright (c) 2012 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 + 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 ................................................4 + 1.2. Applicability ..............................................4 + 2. Authentication Flow .............................................5 + 3. SAML SASL Mechanism Specification ...............................7 + 3.1. Initial Response ...........................................8 + 3.2. Authentication Request .....................................8 + 3.3. Outcome and Parameters .....................................9 + 4. SAML GSS-API Mechanism Specification ...........................10 + 4.1. GSS-API Principal Name Types for SAML .....................11 + 5. Examples .......................................................11 + 5.1. XMPP ......................................................11 + 5.2. IMAP ......................................................15 + 6. Security Considerations ........................................17 + 6.1. Man-in-the-Middle and Tunneling Attacks ...................17 + 6.2. Binding SAML Subject Identifiers to Authorization + Identities ................................................17 + 6.3. User Privacy ..............................................18 + 6.4. Collusion between RPs .....................................18 + 6.5. Security Considerations Specific to GSS-API ...............18 + 7. IANA Considerations ............................................18 + 7.1. IANA Mech-Profile .........................................18 + 7.2. IANA OID ..................................................19 + 8. References .....................................................19 + 8.1. Normative References ......................................19 + 8.2. Informative References ....................................21 + Appendix A. Acknowledgments .......................................22 + + + + + + + +Wierenga, et al. Standards Track [Page 2] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +1. Introduction + + Security Assertion Markup Language (SAML) 2.0 [OASIS-SAMLv2-CORE] is + a set of specifications that provide various means for a user to be + identified to a Relying Party (RP) through the exchange of (typically + signed) assertions issued by an Identity Provider (IdP). It includes + a number of protocols, protocol bindings [OASIS-SAMLv2-BIND], and + interoperability profiles [OASIS-SAMLv2-PROF] designed for different + use cases. + + The Simple Authentication and Security Layer (SASL) [RFC4422] is a + generalized mechanism for identifying and authenticating a user and + for optionally negotiating a security layer for subsequent protocol + interactions. SASL is used by application protocols like IMAP + [RFC3501], the Post Office Protocol (POP) [RFC1939], and the + Extensible Message and Presence Protocol (XMPP) [RFC6120]. The + effect is to make modular authentication, so that newer + authentication mechanisms can be added as needed. This memo + specifies just such a mechanism. + + The Generic Security Service Application Program Interface (GSS-API) + [RFC2743] provides a framework for applications to support multiple + authentication mechanisms through a unified programming interface. + This document defines a pure SASL mechanism for SAML, but it conforms + to the new bridge between SASL and the GSS-API called GS2 [RFC5801]. + This means that this document defines both a SASL mechanism and a + GSS-API mechanism. The GSS-API interface is OPTIONAL for SASL + implementers, and the GSS-API considerations can be avoided in + environments that use SASL directly without GSS-API. + + As currently envisioned, this mechanism enables interworking between + SASL and SAML in order to assert the identity of the user and other + attributes to RPs. As such, while servers (as RPs) will advertise + SASL mechanisms (including SAML), clients will select the SAML SASL + mechanism as their SASL mechanism of choice. + + The SAML mechanism described in this memo aims to reuse the Web + Browser Single Sign-On (SSO) profile defined in Section 4.1 of the + SAML 2.0 profiles specification [OASIS-SAMLv2-PROF] to the maximum + extent and therefore does not establish a separate authentication, + integrity, and confidentiality mechanism. The mechanism assumes that + a security layer, such as Transport Layer Security (TLS) [RFC5246], + will continue to be used. This specification is appropriate for use + when a browser instance is available. In the absence of a browser + instance, SAML profiles that don't require a browser, such as the + Enhanced Client or Proxy profile (as defined in Section 4.2 of + [OASIS-SAMLv2-PROF], may be used, but that is outside the scope of + this specification. + + + +Wierenga, et al. Standards Track [Page 3] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Figure 1 describes the interworking between SAML and SASL: this + document requires enhancements to the RP (the SASL server) and to the + client, as the two SASL communication end points, but no changes to + the SAML IdP are necessary. To accomplish this goal, some indirect + messaging is tunneled within SASL, and some use of external methods + is made. + + +-----------+ + | | + >| Relying | + / | Party | + // | | + // +-----------+ + SAML/ // ^ + HTTPS // +--|--+ + // | S| | + / S | A| | + // A | M| | + // S | L| | + // L | | | + // | | | + </ +--|--+ + +------------+ v + | | +----------+ + | SAML | HTTPS | | + | Identity |<--------------->| Client | + | Provider | | | + +------------+ +----------+ + + Figure 1: Interworking Architecture + +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 RFC 2119 [RFC2119]. + + The reader is assumed to be familiar with the terms used in the + SAML 2.0 core specification [OASIS-SAMLv2-CORE]. + +1.2. Applicability + + Because this mechanism transports information that should not be + controlled by an attacker, the SAML mechanism MUST only be used over + channels protected by TLS, or over similar integrity-protected and + authenticated channels. In addition, when TLS is used, the client + MUST successfully validate the server's certificate ([RFC5280], + [RFC6125]). + + + +Wierenga, et al. Standards Track [Page 4] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Note: An Intranet does not constitute such an integrity-protected and + authenticated channel! + +2. Authentication Flow + + While SAML itself is merely a markup language, its common use case + these days is with HTTP [RFC2616] or HTTPS [RFC2818] and HTML + [W3C-REC-HTML401]. What follows is a typical flow: + + 1. The browser requests a resource of an RP (via an HTTP request). + + 2. The RP redirects the browser via an HTTP redirect (as described + in Section 10.3 of [RFC2616]) to the IdP or an IdP discovery + service. When it does so, it includes the following parameters: + (1) an authentication request that contains the name of the + resource being requested, (2) a browser cookie, and (3) a return + URL as specified in Section 3.1 of [OASIS-SAMLv2-PROF]. + + 3. The user authenticates to the IdP and perhaps authorizes the + release of user attributes to the RP. + + 4. In its authentication response, the IdP redirects (via an HTTP + redirect) the browser back to the RP with an authentication + assertion (stating that the IdP vouches that the subject has + successfully authenticated), optionally along with some + additional attributes. + + 5. The RP now has sufficient identity information to approve access + to the resource or not, and acts accordingly. The authentication + is concluded. + + When considering this flow in the context of SASL, we note that while + the RP and the client both must change their code to implement this + SASL mechanism, the IdP can remain untouched. The RP already has + some sort of session (probably a TCP connection) established with the + client. However, it may be necessary to redirect a SASL client to + another application or handler. The steps are as follows: + + 1. The SASL server (RP) advertises support for the SASL SAML20 + mechanism to the client. + + 2. The client initiates a SASL authentication with SAML20 and sends + a domain name that allows the SASL server to determine the + appropriate IdP. + + + + + + + +Wierenga, et al. Standards Track [Page 5] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + 3. The SASL server transmits an authentication request encoded using + a Uniform Resource Identifier (URI) as described in RFC 3986 + [RFC3986] and an HTTP redirect to the IdP corresponding to the + domain. + + 4. The SASL client now sends a response consisting of "=". + Authentication continues via the normal SAML flow, and the SASL + server will receive the answer to the challenge out of band from + the SASL conversation. + + 5. At this point, the SASL client MUST construct a URL containing + the content received in the previous message from the SASL + server. This URL is transmitted to the IdP either by the SASL + client application or an appropriate handler, such as a browser. + + 6. Next, the user authenticates to the IdP. The manner in which the + end user is authenticated to the IdP, and any policies + surrounding such authentication, are out of scope for SAML and + hence for this document. This step happens out of band from + SASL. + + 7. The IdP will convey information about the success or failure of + the authentication back to the SASL server (RP) in the form of an + authentication statement or failure, using an indirect response + via the client browser or the handler (and with an external + browser, client control should be passed back to the SASL + client). This step happens out of band from SASL. + + 8. The SASL server sends an appropriate SASL response to the client. + + Please note: What is described here is the case in which the client + has not previously authenticated. It is possible that the client + already holds a valid SAML authentication token so that the user does + not need to be involved in the process anymore, but that would still + be external to SASL. This is classic Web Single Sign-On, in which + the Web Browser client presents the authentication token (cookie) to + the RP without renewed user authentication at the IdP. + + + + + + + + + + + + + + +Wierenga, et al. Standards Track [Page 6] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + With all of this in mind, the flow appears as follows in Figure 2: + + SASL Serv. Client IdP + |>-----(1)----->| | Advertisement + | | | + |<-----(2)-----<| | Initiation + | | | + |>-----(3)----->| | Authentication Request + | | | + |<-----(4)-----<| | Response of "=" + | | | + | |<- -(5,6) - ->| Client<>IdP + | | | Authentication + | | | + |<- - - - - - - - - - -(7)- - -| Authentication Statement + | | | + |>-----(8)----->| | SASL Completion with + | | | Status + | | | + + ----- = SASL + - - - = HTTP or HTTPS (external to SASL) + + Figure 2: Authentication Flow + +3. SAML SASL Mechanism Specification + + This section specifies the details of the SAML SASL mechanism. See + Section 5 of [RFC4422] for additional details. + + The name of this mechanism is "SAML20". The mechanism is capable of + transferring an authorization identity (via the "gs2-header"). The + mechanism does not offer a security layer. + + The mechanism is client-first. The first mechanism message from the + client to the server is the "initial-response". As described in + [RFC4422], if the application protocol does not support sending a + client response together with the authentication request, the server + will send an empty server challenge to let the client begin. The + second mechanism message is from the server to the client, containing + the SAML "authentication-request". The third mechanism message is + from the client to the server and is the fixed message consisting of + "=". The fourth mechanism message is from the server to the client, + indicating the SASL mechanism outcome. + + + + + + + +Wierenga, et al. Standards Track [Page 7] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +3.1. Initial Response + + A client initiates a SAML20 authentication with SASL by sending the + GS2 header followed by the Identity Provider identifier (message 2 in + Figure 2) and is defined using ABNF [RFC5234] as follows: + + initial-response = gs2-header IdP-Identifier + IdP-Identifier = domain ; domain name with corresponding IdP + + The gs2-header is used as follows: + + - The "gs2-nonstd-flag" MUST NOT be present. + + - The "gs2-cb-flag" MUST be set to "n" because channel-binding + [RFC5056] data cannot be integrity protected by the SAML + negotiation. (Note: In theory, channel-binding data could be + inserted in the SAML flow by the client and verified by the + server, but that is currently not supported in SAML.) + + - The "gs2-authzid" carries the optional authorization identity as + specified in [RFC5801] (not to be confused with the + IdP-Identifier). + + A domain name is either a "traditional domain name" as described in + [RFC1035] or an "internationalized domain name" as described in + [RFC5890]. Clients and servers MUST treat the IdP-Identifier as a + domain name slot [RFC5890]. They also SHOULD support + internationalized domain names (IDNs) in the IdP-Identifier field; if + they do so, all of the domain name's labels MUST be A-labels or + NR-LDH labels [RFC5890]. If necessary, internationalized labels MUST + be converted from U-labels to A-labels by using the Punycode encoding + [RFC3492] for A-labels prior to sending them to the SASL server, as + described in the protocol specification for Internationalized Domain + Names in Applications [RFC5891]. + +3.2. Authentication Request + + The SASL server transmits to the SASL client a URI that redirects the + SAML client to the IdP (corresponding to the domain that the user + provided), with a SAML authentication request as one of the + parameters (message 3 in Figure 2) using the following ABNF: + + authentication-request = URI + + The URI is specified in [RFC3986] and is encoded according to + Section 3.4 ("HTTP Redirect Binding") of the SAML 2.0 bindings + specification [OASIS-SAMLv2-BIND]. The SAML authentication request + is encoded according to Section 3.4 ("Authentication Request + + + +Wierenga, et al. Standards Track [Page 8] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Protocol") of [OASIS-SAMLv2-CORE]. Should the client support + Internationalized Resource Identifiers (IRIs) [RFC3987], it MUST + first map the IRI to a URI before transmitting it to the server, as + defined in Section 3.1 of [RFC3987]. + + Note: The SASL server may have a static mapping of domain to + corresponding IdP or, alternatively, a DNS-lookup mechanism could be + envisioned, but that is out of scope for this document. + + Note: While the SASL client MAY sanity-check the URI it received, + ultimately it is the SAML IdP that will be validated by the SAML + client; this topic is out of scope for this document. + + The client then sends the authentication request via an HTTP GET + (sent over a server-authenticated TLS channel) to the IdP, as if + redirected to do so from an HTTP server and in accordance with the + Web Browser SSO profile, as described in Section 4.1 of + [OASIS-SAMLv2-PROF] (messages 5 and 6 in Figure 2). + + The client handles both user authentication to the IdP and + confirmation or rejection of the authentication of the RP (out of + scope for this document). + + After all authentication has been completed by the IdP, the IdP will + send a redirect message to the client in the form of a URI + corresponding to the RP as specified in the authentication request + ("AssertionConsumerServiceURL") and with the SAML response as one of + the parameters (message 7 in Figure 2). + + Please note: This means that the SASL server needs to implement a + SAML RP. Also, the SASL server needs to correlate the session it has + with the SASL client with the appropriate SAML authentication result. + It can do so by comparing the ID of the SAML authentication request + it has issued with the one it receives in the SAML authentication + statement. + +3.3. Outcome and Parameters + + The SASL server (in its capacity as a SAML RP) now validates the SAML + authentication response it received from the SAML client via HTTP or + HTTPS. + + The outcome of that validation by the SASL server constitutes a SASL + mechanism outcome and therefore (as stated in [RFC4422]) SHALL be + used to set state in the server accordingly, and it SHALL be used by + the server to report that state to the SASL client, as described in + [RFC4422], Section 3.6 (message 8 in Figure 2). + + + + +Wierenga, et al. Standards Track [Page 9] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +4. SAML GSS-API Mechanism Specification + + This section and its sub-sections are not required for SASL + implementors, but this section MUST be observed to implement the + GSS-API mechanism discussed below. + + This section specifies a GSS-API mechanism that, when used via the + GS2 bridge to SASL, behaves like the SASL mechanism defined in this + document. Thus, it can loosely be said that the SAML SASL mechanism + is also a GSS-API mechanism. The SAML user takes the role of the + GSS-API Initiator, and the SAML RP takes the role of the GSS-API + Acceptor. The SAML IdP does not have a role in GSS-API and is + considered an internal matter for the SAML mechanism. The messages + are the same, but + + a) the GS2 header on the client's first message and channel-binding + data are excluded when SAML is used as a GSS-API mechanism, and + + b) the initial context token header (Section 3.1 of [RFC2743]) is + prefixed to the client's first authentication message (context + token). + + The GSS-API mechanism OID for SAML is 1.3.6.1.5.5.17 (see Section 7.2 + for more information). The DER encoding of the OID is + 0x2b 0x06 0x01 0x05 0x05 0x11. + + SAML20 security contexts MUST have the mutual_state flag + (GSS_C_MUTUAL_FLAG) set to TRUE. SAML does not support credential + delegation; therefore, SAML security contexts MUST have the + deleg_state flag (GSS_C_DELEG_FLAG) set to FALSE. + + The mutual authentication property of this mechanism relies on + successfully comparing the TLS server's identity with the negotiated + target name. Since the TLS channel is managed by the application + outside of the GSS-API mechanism, the mechanism itself is unable to + confirm the name, while the application is able to perform this + comparison for the mechanism. For this reason, applications MUST + match the TLS server's identity with the target name, as discussed in + [RFC6125]. More precisely, to pass identity validation, the client + uses the securely negotiated targ_name as the reference identifier + and matches it to the DNS-ID of the server's certificate, and it MUST + reject the connection if there is a mismatch. For compatibility with + deployed certificate hierarchies, the client MAY also perform a + comparison with the Common Name ID (CN-ID) when there is no DNS-ID + present. Wildcard matching is permitted. The targ_name reference + identifier is a "traditional domain names"; thus, the comparison is + made using case-insensitive ASCII comparison. + + + + +Wierenga, et al. Standards Track [Page 10] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + The SAML mechanism does not support per-message tokens or the + GSS_Pseudo_random() function [RFC4401]. + +4.1. GSS-API Principal Name Types for SAML + + SAML supports standard generic name syntaxes for acceptors such as + GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743], Section 4.1). SAML + supports only a single name type for initiators: GSS_C_NT_USER_NAME. + GSS_C_NT_USER_NAME is the default name type for SAML. The query, + display, and exported name syntaxes for SAML principal names are all + the same. There are no SAML-specific name syntaxes -- applications + should use generic GSS-API name types, such as GSS_C_NT_USER_NAME and + GSS_C_NT_HOSTBASED_SERVICE (see [RFC2743] Section 4). The exported + name token, of course, conforms to [RFC2743], Section 3.2. + +5. Examples + +5.1. XMPP + + Suppose the user has an identity at the SAML IdP saml.example.org and + a Jabber Identifier (JID) "somenode@example.com" and wishes to + authenticate his XMPP [RFC6120] connection to xmpp.example.com. The + authentication on the wire would then look something like the + following: + + Step 1: Client initiates stream to server: + + <stream:stream xmlns='jabber:client' + xmlns:stream='http://etherx.jabber.org/streams' + to='example.com' version='1.0'> + + + Step 2: Server responds with a stream tag sent to client: + + <stream:stream + xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' + id='some_id' from='example.com' version='1.0'> + + + Step 3: Server informs client of available authentication mechanisms: + + <stream:features> + <mechanisms xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> + <mechanism>DIGEST-MD5</mechanism> + <mechanism>PLAIN</mechanism> + <mechanism>SAML20</mechanism> + </mechanisms> + </stream:features> + + + +Wierenga, et al. Standards Track [Page 11] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Step 4: Client selects an authentication mechanism and provides the + initial client response -- containing the gs2-header and domain -- + that has been encoded in base64 according to Section 4 of [RFC4648]: + + <auth xmlns='urn:ietf:params:xml:ns:xmpp-sasl' mechanism='SAML20'> + biwsZXhhbXBsZS5vcmc=</auth> + + The decoded string is + + n,,example.org + + + Step 5: Server sends a base64-encoded challenge to client in the form + of an HTTP redirect to the SAML IdP corresponding to example.org + (https://saml.example.org) with the SAML authentication request as + specified in the redirection URL: + + aHR0cHM6Ly9zYW1sLmV4YW1wbGUub3JnL1NBTUwvQnJvd3Nlcj9TQU1MUmVx + dWVzdD1QSE5oYld4d09rRjFkR2h1VW1WeGRXVnpkQ0I0Yld4dWN6cHpZVzFz + Y0QwaWRYSnVPbTloYzJsek9tNWhiV1Z6T25Sak9sTkJUVXc2TWk0d09uQnli + M1J2WTI5c0lnMEtJQ0FnSUVsRVBTSmZZbVZqTkRJMFptRTFNVEF6TkRJNE9U + QTVZVE13Wm1ZeFpUTXhNVFk0TXpJM1pqYzVORGMwT1RnMElpQldaWEp6YVc5 + dVBTSXlMakFpRFFvZ0lDQWdTWE56ZFdWSmJuTjBZVzUwUFNJeU1EQTNMVEV5 + TFRFd1ZERXhPak01T2pNMFdpSWdSbTl5WTJWQmRYUm9iajBpWm1Gc2MyVWlE + UW9nSUNBZ1NYTlFZWE56YVhabFBTSm1ZV3h6WlNJTkNpQWdJQ0JRY205MGIy + TnZiRUpwYm1ScGJtYzlJblZ5YmpwdllYTnBjenB1WVcxbGN6cDBZenBUUVUx + TU9qSXVNRHBpYVc1a2FXNW5jenBJVkZSUUxWQlBVMVFpRFFvZ0lDQWdRWE56 + WlhKMGFXOXVRMjl1YzNWdFpYSlRaWEoyYVdObFZWSk1QUTBLSUNBZ0lDQWdJ + Q0FpYUhSMGNITTZMeTk0YlhCd0xtVjRZVzF3YkdVdVkyOXRMMU5CVFV3dlFY + TnpaWEowYVc5dVEyOXVjM1Z0WlhKVFpYSjJhV05sSWo0TkNpQThjMkZ0YkRw + SmMzTjFaWElnZUcxc2JuTTZjMkZ0YkQwaWRYSnVPbTloYzJsek9tNWhiV1Z6 + T25Sak9sTkJUVXc2TWk0d09tRnpjMlZ5ZEdsdmJpSStEUW9nSUNBZ0lHaDBk + SEJ6T2k4dmVHMXdjQzVsZUdGdGNHeGxMbU52YlEwS0lEd3ZjMkZ0YkRwSmMz + TjFaWEkrRFFvZ1BITmhiV3h3T2s1aGJXVkpSRkJ2YkdsamVTQjRiV3h1Y3pw + ellXMXNjRDBpZFhKdU9tOWhjMmx6T201aGJXVnpPblJqT2xOQlRVdzZNaTR3 + T25CeWIzUnZZMjlzSWcwS0lDQWdJQ0JHYjNKdFlYUTlJblZ5YmpwdllYTnBj + enB1WVcxbGN6cDBZenBUUVUxTU9qSXVNRHB1WVcxbGFXUXRabTl5YldGME9u + Qmxjbk5wYzNSbGJuUWlEUW9nSUNBZ0lGTlFUbUZ0WlZGMVlXeHBabWxsY2ow + aWVHMXdjQzVsZUdGdGNHeGxMbU52YlNJZ1FXeHNiM2REY21WaGRHVTlJblJ5 + ZFdVaUlDOCtEUW9nUEhOaGJXeHdPbEpsY1hWbGMzUmxaRUYxZEdodVEyOXVk + R1Y0ZEEwS0lDQWdJQ0I0Yld4dWN6cHpZVzFzY0QwaWRYSnVPbTloYzJsek9t + NWhiV1Z6T25Sak9sTkJUVXc2TWk0d09uQnliM1J2WTI5c0lpQU5DaUFnSUNB + Z0lDQWdRMjl0Y0dGeWFYTnZiajBpWlhoaFkzUWlQZzBLSUNBOGMyRnRiRHBC + ZFhSb2JrTnZiblJsZUhSRGJHRnpjMUpsWmcwS0lDQWdJQ0FnZUcxc2JuTTZj + MkZ0YkQwaWRYSnVPbTloYzJsek9tNWhiV1Z6T25Sak9sTkJUVXc2TWk0d09t + RnpjMlZ5ZEdsdmJpSStEUW9nb0NBZ0lDQjFjbTQ2YjJGemFYTTZibUZ0WlhN + NmRHTTZVMEZOVERveUxqQTZZV002WTJ4aGMzTmxjenBRWVhOemQyOXlaRkJ5 + YjNSbFkzUmxaRlJ5WVc1emNHOXlkQTBLSUNBOEwzTmhiV3c2UVhWMGFHNURi + + + +Wierenga, et al. Standards Track [Page 12] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + MjUwWlhoMFEyeGhjM05TWldZK0RRb2dQQzl6WVcxc2NEcFNaWEYxWlhOMFpX + UkJkWFJvYmtOdmJuUmxlSFErSUEwS1BDOXpZVzFzY0RwQmRYUm9ibEpsY1hW + bGMzUSs= + + The decoded challenge is as follows: + + https://saml.example.org/SAML/Browser?SAMLRequest=PHNhbWxwOk + F1dGhuUmVxdWVzdCB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOl + NBTUw6Mi4wOnByb3RvY29sIg0KICAgIElEPSJfYmVjNDI0ZmE1MTAzNDI4OT + A5YTMwZmYxZTMxMTY4MzI3Zjc5NDc0OTg0IiBWZXJzaW9uPSIyLjAiDQogIC + AgSXNzdWVJbnN0YW50PSIyMDA3LTEyLTEwVDExOjM5OjM0WiIgRm9yY2VBdX + Robj0iZmFsc2UiDQogICAgSXNQYXNzaXZlPSJmYWxzZSINCiAgICBQcm90b2 + NvbEJpbmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW + 5nczpIVFRQLVBPU1QiDQogICAgQXNzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlVV + JMPQ0KICAgICAgICAiaHR0cHM6Ly94bXBwLmV4YW1wbGUuY29tL1NBTUwvQX + NzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlIj4NCiA8c2FtbDpJc3N1ZXIgeG1sbn + M6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbi + I+DQogICAgIGh0dHBzOi8veG1wcC5leGFtcGxlLmNvbQ0KIDwvc2FtbDpJc3 + N1ZXI+DQogPHNhbWxwOk5hbWVJRFBvbGljeSB4bWxuczpzYW1scD0idXJuOm + 9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIg0KICAgICBGb3JtYX + Q9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0On + BlcnNpc3RlbnQiDQogICAgIFNQTmFtZVF1YWxpZmllcj0ieG1wcC5leGFtcG + xlLmNvbSIgQWxsb3dDcmVhdGU9InRydWUiIC8+DQogPHNhbWxwOlJlcXVlc3 + RlZEF1dGhuQ29udGV4dA0KICAgICB4bWxuczpzYW1scD0idXJuOm9hc2lzOm + 5hbWVzOnRjOlNBTUw6Mi4wOnByb3RvY29sIiANCiAgICAgICAgQ29tcGFyaX + Nvbj0iZXhhY3QiPg0KICA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZg0KIC + AgICAgeG1sbnM6c2FtbD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOm + Fzc2VydGlvbiI+DQogICAgICAgICAgIHVybjpvYXNpczpuYW1lczp0YzpTQU + 1MOjIuMDphYzpjbGFzc2VzOlBhc3N3b3JkUHJvdGVjdGVkVHJhbnNwb3J0DQ + ogIDwvc2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZj4NCiA8L3NhbWxwOlJlcX + Vlc3RlZEF1dGhuQ29udGV4dD4gDQo8L3NhbWxwOkF1dGhuUmVxdWVzdD4= + + Where the decoded SAMLRequest looks like the following: + + <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + ID="_bec424fa5103428909a30ff1e31168327f79474984" Version="2.0" + IssueInstant="2007-12-10T11:39:34Z" ForceAuthn="false" + IsPassive="false" + ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" + AssertionConsumerServiceURL= + "https://xmpp.example.com/SAML/AssertionConsumerService"> + <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> + https://xmpp.example.com + </saml:Issuer> + <samlp:NameIDPolicy xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" + SPNameQualifier="xmpp.example.com" AllowCreate="true" /> + <samlp:RequestedAuthnContext + + + +Wierenga, et al. Standards Track [Page 13] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + Comparison="exact"> + <saml:AuthnContextClassRef + xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> + urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport + </saml:AuthnContextClassRef> + </samlp:RequestedAuthnContext> + </samlp:AuthnRequest> + + Note: The server can use the request ID + ("_bec424fa5103428909a30ff1e31168327f79474984") to correlate the SASL + session with the SAML authentication. + + + Step 5 (alternative): Server returns error to client if no SAML + authentication request can be constructed: + + <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> + <temporary-auth-failure/> + </failure> + </stream:stream> + + + Step 6: Client sends the "=" response (base64-encoded) to the + challenge: + + <response xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> + PQ== + </response> + + The following steps between brackets are out of scope for this + document but are included to better illustrate the entire flow: + + [The client now sends the URL to a browser instance for processing. + The browser engages in a normal SAML authentication flow (external to + SASL), like redirection to the IdP (https://saml.example.org); the + user logs into https://saml.example.org and agrees to authenticate to + xmpp.example.com. A redirect is passed back to the client browser. + The client browser in turn sends the AuthN response, which contains + the subject-identifier as an attribute, to the server. If the AuthN + response doesn't contain the JID, the server maps the subject- + identifier received from the IdP to a JID.] + + + Step 7: Server informs client of successful authentication: + + <success xmlns='urn:ietf:params:xml:ns:xmpp-sasl'/> + + + + +Wierenga, et al. Standards Track [Page 14] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Step 7 (alternative): Server informs client of failed authentication: + + <failure xmlns='urn:ietf:params:xml:ns:xmpp-sasl'> + <not-authorized/> + </failure> + </stream:stream> + + + Please note: Line breaks were added to the base64 data for clarity. + +5.2. IMAP + + The following sequence describes an IMAP exchange. Lines beginning + with 'S:' indicate data sent by the server, and lines starting with + 'C:' indicate data sent by the client. Long lines are wrapped for + readability. + + S: * OK IMAP4rev1 + C: . CAPABILITY + S: * CAPABILITY IMAP4rev1 STARTTLS + S: . OK CAPABILITY Completed + C: . STARTTLS + S: . OK Begin TLS negotiation now + C: . CAPABILITY + S: * CAPABILITY IMAP4rev1 AUTH=SAML20 + S: . OK CAPABILITY Completed + C: . AUTHENTICATE SAML20 + S: + + C: biwsZXhhbXBsZS5vcmc= + S: + aHR0cHM6Ly9zYW1sLmV4YW1wbGUub3JnL1NBTUwvQnJvd3Nlcj9TQU1M + UmVxdWVzdD1QSE5oYld4d09rRg0KMWRHaHVVbVZ4ZFdWemRDQjRiV3h1Y3pwe + llXMXNjRDBpZFhKdU9tOWhjMmx6T201aGJXVnpPblJqT2xOQg0KVFV3Nk1pNH + dPbkJ5YjNSdlkyOXNJZzBLSUNBZ0lFbEVQU0pmWW1Wak5ESTBabUUxTVRBek5 + ESTRPVEE1WQ0KVE13Wm1ZeFpUTXhNVFk0TXpJM1pqYzVORGMwT1RnMElpQlda + WEp6YVc5dVBTSXlMakFpRFFvZ0lDQWdTWA0KTnpkV1ZKYm5OMFlXNTBQU0l5T + URBM0xURXlMVEV3VkRFeE9qTTVPak0wV2lJZ1JtOXlZMlZCZFhSb2JqMA0KaV + ptRnNjMlVpRFFvZ0lDQWdTWE5RWVhOemFYWmxQU0ptWVd4elpTSU5DaUFnSUN + CUWNtOTBiMk52YkVKcA0KYm1ScGJtYzlJblZ5YmpwdllYTnBjenB1WVcxbGN6 + cDBZenBUUVUxTU9qSXVNRHBpYVc1a2FXNW5jenBJVg0KRlJRTFZCUFUxUWlEU + W9nSUNBZ1FYTnpaWEowYVc5dVEyOXVjM1Z0WlhKVFpYSjJhV05sVlZKTVBRME + tJQw0KQWdJQ0FnSUNBaWFIUjBjSE02THk5dFlXbHNMbVY0WVcxd2JHVXVZMjl + 0TDFOQlRVd3ZRWE56WlhKMGFXOQ0KdVEyOXVjM1Z0WlhKVFpYSjJhV05sSWo0 + TkNpQThjMkZ0YkRwSmMzTjFaWElnZUcxc2JuTTZjMkZ0YkQwaQ0KZFhKdU9tO + WhjMmx6T201aGJXVnpPblJqT2xOQlRVdzZNaTR3T21GemMyVnlkR2x2YmlJK0 + RRb2dJQ0FnSQ0KR2gwZEhCek9pOHZlRzF3Y0M1bGVHRnRjR3hsTG1OdmJRMEt + JRHd2YzJGdGJEcEpjM04xWlhJK0RRb2dQSA0KTmhiV3h3T2s1aGJXVkpSRkJ2 + YkdsamVTQjRiV3h1Y3pwellXMXNjRDBpZFhKdU9tOWhjMmx6T201aGJXVg0Ke + k9uUmpPbE5CVFV3Nk1pNHdPbkJ5YjNSdlkyOXNJZzBLSUNBZ0lDQkdiM0p0WV + + + +Wierenga, et al. Standards Track [Page 15] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + hROUluVnlianB2WVhOcA0KY3pwdVlXMWxjenAwWXpwVFFVMU1Pakl1TURwdVl + XMWxhV1F0Wm05eWJXRjBPbkJsY25OcGMzUmxiblFpRA0KUW9nSUNBZ0lGTlFU + bUZ0WlZGMVlXeHBabWxsY2owaWVHMXdjQzVsZUdGdGNHeGxMbU52YlNJZ1FXe + HNiMw0KZERjbVZoZEdVOUluUnlkV1VpSUM4K0RRb2dQSE5oYld4d09sSmxjWF + ZsYzNSbFpFRjFkR2h1UTI5dWRHVg0KNGRBMEtJQ0FnSUNCNGJXeHVjenB6WVc + xc2NEMGlkWEp1T205aGMybHpPbTVoYldWek9uUmpPbE5CVFV3Ng0KTWk0d09u + QnliM1J2WTI5c0lpQU5DaUFnSUNBZ0lDQWdRMjl0Y0dGeWFYTnZiajBpWlhoa + FkzUWlQZzBLSQ0KQ0E4YzJGdGJEcEJkWFJvYmtOdmJuUmxlSFJEYkdGemMxSm + xaZzBLSUNBZ0lDQWdlRzFzYm5NNmMyRnRiRA0KMGlkWEp1T205aGMybHpPbTV + oYldWek9uUmpPbE5CVFV3Nk1pNHdPbUZ6YzJWeWRHbHZiaUkrRFFvZ0lDQQ0K + Z0lDQjFjbTQ2YjJGemFYTTZibUZ0WlhNNmRHTTZVMEZOVERveUxqQTZZV002W + TJ4aGMzTmxjenBRWVhOeg0KZDI5eVpGQnliM1JsWTNSbFpGUnlZVzV6Y0c5eW + RBMEtJQ0E4TDNOaGJXdzZRWFYwYUc1RGIyNTBaWGgwUQ0KMnhoYzNOU1pXWSt + EUW9nUEM5ellXMXNjRHBTWlhGMVpYTjBaV1JCZFhSb2JrTnZiblJsZUhRK0lB + MEtQQw0KOXpZVzFzY0RwQmRYUm9ibEpsY1hWbGMzUSs= + C: PQ== + S: . OK Success (TLS protection) + + The decoded challenge is as follows: + + https://saml.example.org/SAML/Browser?SAMLRequest=PHNhbWxwOkF + 1dGhuUmVxdWVzdCB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNB + TUw6Mi4wOnByb3RvY29sIg0KICAgIElEPSJfYmVjNDI0ZmE1MTAzNDI4OTA5Y + TMwZmYxZTMxMTY4MzI3Zjc5NDc0OTg0IiBWZXJzaW9uPSIyLjAiDQogICAgSX + NzdWVJbnN0YW50PSIyMDA3LTEyLTEwVDExOjM5OjM0WiIgRm9yY2VBdXRobj0 + iZmFsc2UiDQogICAgSXNQYXNzaXZlPSJmYWxzZSINCiAgICBQcm90b2NvbEJp + bmRpbmc9InVybjpvYXNpczpuYW1lczp0YzpTQU1MOjIuMDpiaW5kaW5nczpIV + FRQLVBPU1QiDQogICAgQXNzZXJ0aW9uQ29uc3VtZXJTZXJ2aWNlVVJMPQ0KIC + AgICAgICAiaHR0cHM6Ly9tYWlsLmV4YW1wbGUuY29tL1NBTUwvQXNzZXJ0aW9 + uQ29uc3VtZXJTZXJ2aWNlIj4NCiA8c2FtbDpJc3N1ZXIgeG1sbnM6c2FtbD0i + dXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+DQogICAgI + Gh0dHBzOi8veG1wcC5leGFtcGxlLmNvbQ0KIDwvc2FtbDpJc3N1ZXI+DQogPH + NhbWxwOk5hbWVJRFBvbGljeSB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWV + zOnRjOlNBTUw6Mi4wOnByb3RvY29sIg0KICAgICBGb3JtYXQ9InVybjpvYXNp + czpuYW1lczp0YzpTQU1MOjIuMDpuYW1laWQtZm9ybWF0OnBlcnNpc3RlbnQiD + QogICAgIFNQTmFtZVF1YWxpZmllcj0ieG1wcC5leGFtcGxlLmNvbSIgQWxsb3 + dDcmVhdGU9InRydWUiIC8+DQogPHNhbWxwOlJlcXVlc3RlZEF1dGhuQ29udGV + 4dA0KICAgICB4bWxuczpzYW1scD0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6 + Mi4wOnByb3RvY29sIiANCiAgICAgICAgQ29tcGFyaXNvbj0iZXhhY3QiPg0KI + CA8c2FtbDpBdXRobkNvbnRleHRDbGFzc1JlZg0KICAgICAgeG1sbnM6c2FtbD + 0idXJuOm9hc2lzOm5hbWVzOnRjOlNBTUw6Mi4wOmFzc2VydGlvbiI+DQogICA + gICB1cm46b2FzaXM6bmFtZXM6dGM6U0FNTDoyLjA6YWM6Y2xhc3NlczpQYXNz + d29yZFByb3RlY3RlZFRyYW5zcG9ydA0KICA8L3NhbWw6QXV0aG5Db250ZXh0Q + 2xhc3NSZWY+DQogPC9zYW1scDpSZXF1ZXN0ZWRBdXRobkNvbnRleHQ+IA0KPC + 9zYW1scDpBdXRoblJlcXVlc3Q+ + + + + + + +Wierenga, et al. Standards Track [Page 16] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + Where the decoded SAMLRequest looks like the following: + + <samlp:AuthnRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + ID="_bec424fa5103428909a30ff1e31168327f79474984" Version="2.0" + IssueInstant="2007-12-10T11:39:34Z" ForceAuthn="false" + IsPassive="false" + ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" + AssertionConsumerServiceURL= + "https://mail.example.com/SAML/AssertionConsumerService"> + <saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> + https://xmpp.example.com + </saml:Issuer> + <samlp:NameIDPolicy xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" + SPNameQualifier="xmpp.example.com" AllowCreate="true" /> + <samlp:RequestedAuthnContext + xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" + Comparison="exact"> + <saml:AuthnContextClassRef + xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"> + urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport + </saml:AuthnContextClassRef> + </samlp:RequestedAuthnContext> + </samlp:AuthnRequest> + +6. Security Considerations + + This section addresses only security considerations associated with + the use of SAML with SASL applications. For considerations relating + to SAML in general, and for general SASL security considerations, the + reader is referred to the SAML specifications and to other + literature. + +6.1. Man-in-the-Middle and Tunneling Attacks + + This mechanism is vulnerable to man-in-the-middle and tunneling + attacks unless a client always verifies the server's identity before + proceeding with authentication (see [RFC6125]). Typically, TLS is + used to provide a secure channel with server authentication. + +6.2. Binding SAML Subject Identifiers to Authorization Identities + + As specified in [RFC4422], the server is responsible for binding + credentials to a specific authorization identity. It is therefore + necessary that only specific trusted IdPs be allowed. This is a + typical part of SAML trust establishment between RPs and the IdP. + + + + + +Wierenga, et al. Standards Track [Page 17] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +6.3. User Privacy + + The IdP is aware of each RP that a user logs into. There is nothing + in the protocol to hide this information from the IdP. It is not a + requirement to track the visits, but there is nothing that prohibits + the collection of information. SASL server implementers should be + aware that SAML IdPs will be able to track -- to some extent -- user + access to their services. + +6.4. Collusion between RPs + + It is possible for RPs to link data that they have collected on the + users. By using the same identifier to log into every RP, collusion + between RPs is possible. In SAML, targeted identity was introduced. + Targeted identity allows the IdP to transform the identifier the user + typed in to an RP-specific opaque identifier. This way, the RP would + never see the actual user identifier but instead would see a randomly + generated identifier. + +6.5. Security Considerations Specific to GSS-API + + Security issues inherent in GSS-API [RFC2743] and GS2 [RFC5801] apply + to the SAML GSS-API mechanism defined in this document. Further, and + as discussed in Section 4, proper TLS server identity verification is + critical to the security of the mechanism. + +7. IANA Considerations + +7.1. IANA Mech-Profile + + The IANA has registered the following SASL profile: + + SASL mechanism profile: SAML20 + + Security Considerations: See this document + + Published Specification: See this document + + For further information: Contact the authors of this document. + + Owner/Change controller: the IETF + + Intended usage: COMMON + + Note: None + + + + + + +Wierenga, et al. Standards Track [Page 18] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +7.2. IANA OID + + The IANA has also assigned a new entry for this GSS mechanism in the + SMI Security for Mechanism Codes sub-registry, whose prefix is + iso.org.dod.internet.security.mechanisms (1.3.6.1.5.5), and + referenced this specification in the registry. + +8. References + +8.1. Normative References + + [OASIS-SAMLv2-BIND] + Cantor, S., Ed., Hirsch, F., Ed., Kemp, J., Ed., Philpott, + R., Ed., and E. Maler, Ed., "Bindings for the OASIS + Security Assertion Markup Language (SAML) V2.0", OASIS + Standard saml-bindings-2.0-os, March 2005, <http:// + docs.oasis-open.org/security/saml/v2.0/ + saml-bindings-2.0-os.pdf>. + + [OASIS-SAMLv2-CORE] + Cantor, S., Ed., Kemp, J., Ed., Philpott, R., Ed., and E. + Maler, Ed., "Assertions and Protocols for the OASIS + Security Assertion Markup Language (SAML) V2.0", OASIS + Standard saml-core-2.0-os, March 2005, <http:// + docs.oasis-open.org/security/saml/v2.0/ + saml-core-2.0-os.pdf>. + + [OASIS-SAMLv2-PROF] + Hughes, J., Ed., Cantor, S., Ed., Hodges, J., Ed., Hirsch, + F., Ed., Mishra, P., Ed., Philpott, R., Ed., and E. Maler, + Ed., "Profiles for the OASIS Security Assertion Markup + Language (SAML) V2.0", OASIS Standard OASIS.saml-profiles- + 2.0-os, March 2005, <http://docs.oasis-open.org/security/ + saml/v2.0/saml-profiles-2.0-os.pdf>. + + [RFC1035] Mockapetris, P., "Domain names - implementation and + specification", STD 13, RFC 1035, November 1987. + + [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., + Masinter, L., Leach, P., and T. Berners-Lee, "Hypertext + Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999. + + [RFC2743] Linn, J., "Generic Security Service Application Program + Interface Version 2, Update 1", RFC 2743, January 2000. + + + + +Wierenga, et al. Standards Track [Page 19] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. + + [RFC3492] Costello, A., "Punycode: A Bootstring encoding of Unicode + for Internationalized Domain Names in Applications + (IDNA)", RFC 3492, March 2003. + + [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform + Resource Identifier (URI): Generic Syntax", STD 66, + RFC 3986, January 2005. + + [RFC3987] Duerst, M. and M. Suignard, "Internationalized Resource + Identifiers (IRIs)", RFC 3987, January 2005. + + [RFC4422] Melnikov, A., Ed., and K. Zeilenga, Ed., "Simple + Authentication and Security Layer (SASL)", RFC 4422, + June 2006. + + [RFC5056] Williams, N., "On the Use of Channel Bindings to Secure + Channels", RFC 5056, November 2007. + + [RFC5234] Crocker, D., Ed., and P. Overell, "Augmented BNF for + Syntax Specifications: ABNF", STD 68, RFC 5234, + January 2008. + + [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security + (TLS) Protocol Version 1.2", RFC 5246, August 2008. + + [RFC5280] Cooper, D., Santesson, S., Farrell, S., Boeyen, S., + Housley, R., and W. Polk, "Internet X.509 Public Key + Infrastructure Certificate and Certificate Revocation List + (CRL) Profile", RFC 5280, May 2008. + + [RFC5801] Josefsson, S. and N. Williams, "Using Generic Security + Service Application Program Interface (GSS-API) Mechanisms + in Simple Authentication and Security Layer (SASL): The + GS2 Mechanism Family", RFC 5801, July 2010. + + [RFC5890] Klensin, J., "Internationalized Domain Names for + Applications (IDNA): Definitions and Document Framework", + RFC 5890, August 2010. + + [RFC5891] Klensin, J., "Internationalized Domain Names in + Applications (IDNA): Protocol", RFC 5891, August 2010. + + + + + + + + +Wierenga, et al. Standards Track [Page 20] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + + [RFC6125] Saint-Andre, P. and J. Hodges, "Representation and + Verification of Domain-Based Application Service Identity + within Internet Public Key Infrastructure Using X.509 + (PKIX) Certificates in the Context of Transport Layer + Security (TLS)", RFC 6125, March 2011. + + [W3C-REC-HTML401] + Le Hors, A., Ed., Raggett, D., Ed., and I. Jacobs, Ed., + "HTML 4.01 Specification", World Wide Web Consortium + Recommendation REC-html401-19991224, December 1999, + <http://www.w3.org/TR/1999/REC-html401-19991224>. + +8.2. Informative References + + [RFC1939] Myers, J. and M. Rose, "Post Office Protocol - Version 3", + STD 53, RFC 1939, May 1996. + + [RFC3501] Crispin, M., "INTERNET MESSAGE ACCESS PROTOCOL - + VERSION 4rev1", RFC 3501, March 2003. + + [RFC4401] Williams, N., "A Pseudo-Random Function (PRF) API + Extension for the Generic Security Service Application + Program Interface (GSS-API)", RFC 4401, February 2006. + + [RFC4648] Josefsson, S., "The Base16, Base32, and Base64 Data + Encodings", RFC 4648, October 2006. + + [RFC6120] Saint-Andre, P., "Extensible Messaging and Presence + Protocol (XMPP): Core", RFC 6120, March 2011. + + + + + + + + + + + + + + + + + + + + + + +Wierenga, et al. Standards Track [Page 21] + +RFC 6595 A SASL and GSS-API Mechanism for SAML April 2012 + + +Appendix A. Acknowledgments + + The authors would like to thank Scott Cantor, Joe Hildebrand, Josh + Howlett, Leif Johansson, Thomas Lenggenhager, Diego Lopez, Hank + Mauldin, RL "Bob" Morgan, Stefan Plug, and Hannes Tschofenig for + their review and contributions. + +Authors' Addresses + + Klaas Wierenga + Cisco Systems, Inc. + Haarlerbergweg 13-19 + 1101 CH Amsterdam + The Netherlands + + Phone: +31 20 357 1752 + EMail: klaas@cisco.com + + + Eliot Lear + Cisco Systems GmbH + Richtistrasse 7 + CH-8304 Wallisellen + Switzerland + + Phone: +41 44 878 9200 + EMail: lear@cisco.com + + + Simon Josefsson + SJD AB + Johan Olof Wallins vag 13 + Solna 171 64 + Sweden + + EMail: simon@josefsson.org + URI: http://josefsson.org/ + + + + + + + + + + + + + + +Wierenga, et al. Standards Track [Page 22] + |