<?xml version="1.0" encoding="US-ASCII"?>
<?xml-stylesheet type='text/xsl' href='http://xml2rfc.tools.ietf.org/authoring/rfc2629.xslt' ?>
<!DOCTYPE rfc PUBLIC "-//IETF//DTD RFC 2629//EN"
"http://xml2rfc.tools.ietf.org/authoring/rfc2629.dtd">
<!--
  NOTE:  This XML file is input used to produce the authoritative copy of an
  OpenID Foundation specification.  The authoritative copy is the HTML output.
  This XML source file is not authoritative.  The statement ipr="none" is
  present only to satisfy the document compilation tool and is not indicative
  of the IPR status of this specification.  The IPR for this specification is
  described in the "Notices" section.  This is a public OpenID Foundation
  document and not a private document, as the private="..." declaration could
  be taken to indicate.
-->
<rfc category="std" docName="openid-heart-openid-connect-1_0" ipr="none">
  <?rfc toc="yes" ?>

  <?rfc tocdepth="5" ?>

  <?rfc symrefs="yes" ?>

  <?rfc sortrefs="yes"?>

  <?rfc strict="yes" ?>

  <?rfc iprnotified="no" ?>

  <?rfc private="Final" ?>

  <front>
    <title abbrev="HEART OpenID Connect">Health Relationship Trust Profile for
    OpenID Connect 1.0</title>

    <author fullname="Justin Richer" initials="J." role="editor"
            surname="Richer">
      <address>
        <email>openid@justin.richer.org</email>

        <uri>http://justin.richer.org/</uri>
      </address>
    </author>

    <date day="3" month="October" year="2016"/>

    <workgroup>OpenID Heart Working Group</workgroup>

    <abstract>
      <t>The OpenID Connect protocol defines an identity federation system
      that allows a relying party to request and receive authentication and
      profile information about an end user.</t>

      <t>This specification profiles the OpenID Connect protocol to increase
      baseline security, provide greater interoperability, and structure
      deployments in a manner specifically applicable to (but not limited to)
      the healthcare domain.</t>
    </abstract>
  </front>

  <middle>
    <section anchor="Introduction" title="Introduction">
      <t>This document profiles the OpenID Connect specification for use in
      providing identity information supporting secure Representational State
      Transfer (RESTful) interfaces. Because OpenID Connect is built on OAuth
      2.0, this profile inherits all requirements of the HEART Profile for the
      use of <xref target="HEART.OAuth2">OAuth 2.0</xref> where appropriate.
      All requirements herein are in addition to the OAuth 2.0 profile where
      appropriate. The requirements in this document serve two purposes:</t>

      <t><list style="numbers">
          <t>Define a mandatory baseline set of security controls suitable for
          a wide range of use cases, while maintaining reasonable ease of
          implementation and functionality</t>

          <t>Identify optional advanced security controls for sensitive use
          cases where heightened risks justify more stringent controls that
          increase the required implementation effort and may reduce or
          restrict functionality</t>
        </list></t>

      <t>This OpenID Connect profile is intended to be shared broadly, and
      ideally to influence OAuth implementations in other domains besides
      health care.</t>

      <section anchor="rnc" title="Requirements Notation and Conventions">
        <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
        "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
        "OPTIONAL" in this document are to be interpreted as described in
        <xref target="RFC2119">RFC 2119</xref>.</t>

        <t>All uses of <xref target="RFC7515">JSON Web Signature (JWS)</xref>
        and <xref target="RFC7516">JSON Web Encryption (JWE)</xref> data
        structures in this specification utilize the JWS Compact Serialization
        or the JWE Compact Serialization; the JWS JSON Serialization and the
        JWE JSON Serialization are not used.</t>
      </section>

      <section anchor="Terminology" title="Terminology">
        <t>This specification uses the terms "Access Token", "Authorization
        Code", "Authorization Endpoint", "Authorization Grant", "Authorization
        Server", "Client", "Client Authentication", "Client Identifier",
        "Client Secret", "Grant Type", "Protected Resource", "Redirection
        URI", "Refresh Token", "Resource Owner", "Resource Server", "Response
        Type", and "Token Endpoint" defined by <xref target="RFC6749">OAuth
        2.0</xref>, the terms "Claim Name", "Claim Value", and "JSON Web Token
        (JWT)" defined by <xref target="RFC7519">JSON Web Token (JWT)</xref>,
        and the terms defined by <xref target="OpenID.Core">OpenID Connect
        Core 1.0</xref>.</t>
      </section>

      <section title="Conformance">
        <t>This specification defines requirements for the following
        components:</t>

        <t><list style="symbols">
            <t>OpenID Connect 1.0 relying parties (also known as OpenID
            Clients)</t>

            <t>OpenID Connect 1.0 identity providers (also known as OpenID
            Providers)</t>
          </list></t>

        <t>The specification also defines features for interaction between
        these components:</t>

        <t><list style="symbols">
            <t>Relying party to identity provider</t>
          </list></t>

        <t>When a HEART-compliant component is interacting with other
        HEART-compliant components, in any valid combination, all components
        MUST fully conform to the features and requirements of this
        specification. All interaction with non-HEART components is outside
        the scope of this specification.</t>

        <t>A HEART-compliant OpenID Connect IdP MUST support all features as
        described in this specification. A general-purpose IdP MAY support
        additional features for use with non-HEART clients.</t>

        <t>All OAuth 2.0 functionality used to implement the OpenID Connect
        protocol MUST conform to the OAuth 2.0 HEART profile.</t>

        <t>A HEART-compliant OpenID Connect IdP MAY also provide
        HEART-compliant OAuth 2.0 authorization server functionality. In such
        cases, the authorization server MUST fully implement the OAuth 2.0
        HEART profile. If a HEART-compliant OpenID Connect IdP does not
        provide HEART-compliant OAuth 2.0 authorization server services, all
        features related to interaction between the authorization server and
        protected resource are therefore OPTIONAL.</t>

        <t>A HEART-compliant OpenID Connect client MUST use all functions as
        described in this specification. A general-purpose client library MAY
        support additional features for use with non-HEART IdPs.</t>
      </section>
    </section>

    <section title="Relying Party Profile">
      <t/>

      <section title="ID Tokens">
        <t>All clients MUST verify the signature of ID tokens against the key
        of the identity provider.</t>

        <t>All clients MUST verify the following in received ID tokens: <list
            style="hanging">
            <t hangText="iss">The "issuer" field is the Uniform Resource
            Locater (URL) of the expected issuer</t>

            <t hangText="aud">The "audience" field contains the client ID of
            the client</t>

            <t hangText="exp, iat, nbf">The "expiration", "issued at", and
            "not before" timestamps for the token are dates (integer number of
            seconds since from 1970-01-01T00:00:00Z UTC) within acceptable
            ranges</t>
          </list></t>
      </section>

      <section title="Request Objects">
        <t>Clients MAY optionally send requests to the authorization endpoint
        as request objects using the <spanx style="verb">request</spanx>
        parameter as defined by <xref target="OpenID.Core">OpenID
        Connect</xref>. Clients MAY send requests to the authorization
        endpoint by reference using the request_uri parameter.</t>

        <t>Request objects MUST be signed by the client's registered key.
        Request objects MAY be encrypted to the authorization server's public
        key.</t>
      </section>
    </section>

    <section title="Identity Provider Profile">
      <t/>

      <section anchor="IDTokens" title="ID Tokens">
        <t>All ID Tokens MUST be signed by the OpenID Provider's private
        signature key. All clients MUST validate the signature of an ID Token
        before accepting it using the public key of the issuing server, which
        is published in <xref target="RFC7517">JSON Web Key (JWK)</xref>
        format. ID Tokens MAY be encrypted using the appropriate key of the
        requesting client.</t>

        <t>The ID Token MUST expire and SHOULD have an active lifetime no
        longer than five minutes. Since the ID token is consumed by the client
        and not presented to remote systems, much shorter expiration times are
        RECOMMENDED where possible.</t>

        <t>This example ID token has been signed using the server's RSA
        key:</t>

        <figure>
          <artwork><![CDATA[eyJhbGciOiJSUzI1NiJ9.eyJhdXRoX3RpbWUiOjE0
MTg2OTg3ODIsImV4cCI6MTQxODY5OTQxMiwic3ViI
joiNldaUVBwblF4ViIsIm5vbmNlIjoiMTg4NjM3Yj
NhZjE0YSIsImF1ZCI6WyJjMWJjODRlNC00N2VlLTR
iNjQtYmI1Mi01Y2RhNmM4MWY3ODgiXSwiaXNzIjoi
aHR0cHM6XC9cL2lkcC1wLmV4YW1wbGUuY29tXC8iL
CJpYXQiOjE0MTg2OTg4MTJ9mQc0rtL56dnJ7_zO_f
x8-qObsQhXcn-qN-FC3JIDBuNmP8i11LRA_sgh_om
RRfQAUhZD5qTRPAKbLuCD451lf7ALAUwoGg8zAASI
5QNGXoBVVn7buxPd2SElbSnHxu0o8ZsUZZwNpircW
NUlYLje6APJf0kre9ztTj-5J1hRKFbbHodR2I1m5q
8zQR0ql-FoFlOfPhvfurXxCRGqP1xpvLLBUi0JAw3
F8hZt_i1RUYWMqLQZV4VU3eVNeIPAD38qD1fxTXGV
Ed2XDJpmlcxjrWxzJ8fGfJrbsiHCzmCjflhv34O22
zb0lJpC0d0VScqxXjNTa2-ULyCoehLcezmssg]]></artwork>
        </figure>

        <t>Its claims are as follows:</t>

        <figure>
          <artwork><![CDATA[ {
   "auth_time": 1418698782,
   "exp": 1418699412,
   "sub": "6WZQPpnQxV",
   "nonce": "188637b3af14a",
   "aud": [
      "c1bc84e4-47ee-4b64-bb52-5cda6c81f788"
   ],
   "iss": "https:\\/\\/idp-p.example.com\\/",
   "iat": 1418698812
}
]]></artwork>
        </figure>
      </section>

      <section anchor="UserInfoEndpoint" title="UserInfo Endpoint">
        <t>Servers MUST support the UserInfo Endpoint and, at a minimum, the
        <spanx style="verb">openid</spanx> scope and <spanx style="verb">sub</spanx>
        (subject) claims.</t>

        <t>In an example transaction, the client sends a request to the
        UserInfo Endpoint like the following:</t>

        <figure>
          <artwork><![CDATA[GET /userinfo HTTP/1.1
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJleHAiOjE0MTg3MDI0MTIsIm
F1ZCI6WyJjMWJjODRlNC00N2VlLTRiNjQtYmI1Mi01Y2RhNmM4MWY3ODgiXSwiaXNzIjo
iaHR0cHM6XC9cL2lkcC1wLmV4YW1wbGUuY29tXC8iLCJqdGkiOiJkM2Y3YjQ4Zi1iYzgx
LTQwZWMtYTE0MC05NzRhZjc0YzRkZTMiLCJpYXQiOjE0MTg2OTg4MTJ9i.HMz_tzZ90_b
0QZS-AXtQtvclZ7M4uDAs1WxCFxpgBfBanolW37X8h1ECrUJexbXMD6rrj_uuWEqPD738
oWRo0rOnoKJAgbF1GhXPAYnN5pZRygWSD1a6RcmN85SxUig0H0e7drmdmRkPQgbl2wMhu
-6h2Oqw-ize4dKmykN9UX_2drXrooSxpRZqFVYX8PkCvCCBuFy2O-HPRov_SwtJMk5qjU
WMyn2I4Nu2s-R20aCA-7T5dunr0iWCkLQnVnaXMfA22RlRiU87nl21zappYb1_EHF9ePy
q3Q353cDUY7vje8m2kKXYTgc_bUAYuW-W3SMSw5UlKaHtSZ6PQICoA
Accept: text/plain, application/json, application/*+json, */*
Host: idp-p.example.com
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.2.3 (java 1.5)
]]></artwork>
        </figure>

        <t>And receives a document in response like the following:</t>

        <figure>
          <artwork><![CDATA[HTTP/1.1 200 OK
Date: Tue, 16 Dec 2014 03:00:12 GMT
Access-Control-Allow-Origin: *
Content-Type: application/json;charset=ISO-8859-1
Content-Language: en-US
Content-Length: 333
Connection: close

{
   "sub": "6WZQPpnQxV",
   "name": "Steve Emeritus",
   "preferred_username": "steve",
   "given_name": "Stephen",
   "family_name": "Emeritus",
   "nickname": "Steve",
   "gender": "M",
   "updated_time": "2014-09-24 14:27:43.701000",
   "birthdate": "1980-01-01",
   "email": "steve.e@example.com",
   "email_verified": true,
   "phone_number": "857-555-1234",
   "phone_number_verified": true
}
]]></artwork>
        </figure>

        <t>Servers MUST support the generation of <xref
        target="RFC7519">JWT</xref> encoded responses from the UserInfo
        Endpoint in addition to unsigned JSON objects to allow clients to
        operate at a higher security level. Signed responses MUST be signed by
        the IdP's key, and encrypted responses MUST be encrypted with the
        authorized client's key. The IdP MUST support the RS256 signature
        method and MAY use other asymmetric signature and encryption methods
        listed in the JSON Web Algorithms (<xref target="RFC7518">JWA</xref>)
        specification.</t>
      </section>

      <section anchor="RequestObjects" title="Request Objects">
        <t>Authorization servers MUST accept requests containing a request
        object signed by the client's private key. Servers MUST validate the
        signature on such requests against the client's registered public key.
        Clients must register their keys during client registration as
        described in the HEART <xref target="HEART.OAuth2">OAuth 2.0</xref>
        profile. Servers MUST accept request objects encrypted with the
        server's public key.</t>

        <t>Servers MAY accept request objects by reference using the <spanx
        style="verb">request_uri</spanx> parameter.</t>

        <t>Both of these methods allow for clients to create a request that is
        protected from tampering through the browser, allowing for a higher
        security mode of operation for clients and applications that require
        it. Clients are not required to use request objects, but authorization
        servers are required to support requests using them.</t>
      </section>

      <section anchor="AuthenticationContext" title="Authentication Context">
        <t>OpenID Providers MAY provide <spanx style="verb">acr</spanx>
        (authentication context class reference, equivalent to the Security
        Assertion Markup Language (SAML) element of the same name) and <spanx
        style="verb">amr</spanx> (authentication methods reference) values in
        ID tokens.</t>

        <t>The <spanx style="verb">amr</spanx> value is an array of strings
        describing the set of mechanisms used to authenticate the user to the
        OpenID Provider. Providers that require multi-factor authentication
        will typically provide multiple values (for example, memorized
        password plus hardware-token-generated one-time password). The
        specific values MUST be agreed upon and understood between the OpenID
        Provider and any Relying Parties.</t>

        <t>In the future, this profile will likely reference and make use of
        the draft <xref target="I-D.richer-vectors-of-trust">Vectors of
        Trust</xref> standard.</t>
      </section>

      <section anchor="Discovery" title="Discovery">
        <t>All OpenID Connect servers are uniquely identified by a URL known
        as the <spanx style="verb">issuer</spanx>. This URL serves as the
        prefix of a service discovery endpoint as specified in the <xref
        target="OpenID.Discovery">OpenID Connect Discovery standard</xref>.
        The discovery document MUST contain at minimum the following
        fields:</t>

        <t><list style="hanging">
            <t hangText="issuer">The fully qualified issuer URL of the
            server</t>

            <t hangText="authorization_endpoint">The fully qualified URL of
            the server's authorization endpoint defined by <xref
            target="RFC6749"/></t>

            <t hangText="token_endpoint">The fully qualified URL of the
            server's token endpoint defined by <xref target="RFC6749"/></t>

            <t hangText="introspection_endpoint">The fully qualified URL of
            the server's introspection endpoint defined by <xref
            target="RFC7662">OAuth Token Introspection</xref></t>

            <t hangText="revocation_endpoint">The fully qualified URL of the
            server's revocation endpoint defined by <xref
            target="RFC7009">OAuth Token Revocation</xref></t>

            <t hangText="jwks_uri">The fully qualified URI of the server's
            public key in <xref target="RFC7517">JWK Set</xref> format</t>
          </list></t>

        <t>The following example shows the JSON document found at a discovery
        endpoint for an authorization server:</t>

        <figure>
          <artwork><![CDATA[{
  "request_parameter_supported": true,
  "id_token_encryption_alg_values_supported": [
    "RSA-OAEP", "RSA1_5", "RSA-OAEP-256"
  ],
  "registration_endpoint": "https://idp-p.example.com/register",
  "userinfo_signing_alg_values_supported": [
    "HS256", "HS384", "HS512", "RS256", "RS384", "RS512"
  ],
  "token_endpoint": "https://idp-p.example.com/token",
  "request_uri_parameter_supported": false,
  "request_object_encryption_enc_values_supported": [
    "A192CBC-HS384", "A192GCM", "A256CBC+HS512",
    "A128CBC+HS256", "A256CBC-HS512",
    "A128CBC-HS256", "A128GCM", "A256GCM"
  ],
  "token_endpoint_auth_methods_supported": [
    "client_secret_post",
    "client_secret_basic",
    "client_secret_jwt",
    "private_key_jwt",
    "none"
  ],
  "userinfo_encryption_alg_values_supported": [
    "RSA-OAEP", "RSA1_5",
    "RSA-OAEP-256"
  ],
  "subject_types_supported": [
    "public", "pairwise"
  ],
  "id_token_encryption_enc_values_supported": [
    "A192CBC-HS384", "A192GCM", "A256CBC+HS512",
    "A128CBC+HS256", "A256CBC-HS512", "A128CBC-HS256",
    "A128GCM", "A256GCM"
  ],
  "claims_parameter_supported": false,
  "jwks_uri": "https://idp-p.example.com/jwk",
  "id_token_signing_alg_values_supported": [
    "HS256", "HS384", "HS512", "RS256", "RS384", "RS512", "none"
  ],
  "authorization_endpoint": "https://idp-p.example.com/authorize",
  "require_request_uri_registration": false,
  "introspection_endpoint": "https://idp-p.example.com/introspect",
  "request_object_encryption_alg_values_supported": [
    "RSA-OAEP", ?RSA1_5", "RSA-OAEP-256"
  ],
  "service_documentation": "https://idp-p.example.com/about",
  "response_types_supported": [
    "code", "token"
  ],
  "token_endpoint_auth_signing_alg_values_supported": [
    "HS256", "HS384", "HS512", "RS256", "RS384", "RS512"
  ],
  "revocation_endpoint": "https://idp-p.example.com/revoke",
  "request_object_signing_alg_values_supported": [
    "HS256", "HS384", "HS512", "RS256", "RS384", "RS512"
  ],
  "claim_types_supported": [
    "normal"
  ],
  "grant_types_supported": [
    "authorization_code",
    "implicit",
    "urn:ietf:params:oauth:grant-type:jwt-bearer",
    "client_credentials",
    "urn:ietf:params:oauth:grant_type:redelegate"
  ],
  "scopes_supported": [
    "profile", "openid", "email", "address", "phone", "offline_access"
  ],
  "userinfo_endpoint": "https://idp-p.example.com/userinfo",
  "userinfo_encryption_enc_values_supported": [
    "A192CBC-HS384", "A192GCM", "A256CBC+HS512","A128CBC+HS256",
    "A256CBC-HS512", "A128CBC-HS256", "A128GCM", "A256GCM"
  ],
  "op_tos_uri": "https://idp-p.example.com/about",
  "issuer": "https://idp-p.example.com/",
  "op_policy_uri": "https://idp-p.example.com/about",
  "claims_supported": [
    "sub", "name", "preferred_username", "given_name", "family_name",
    "middle_name", "nickname", "profile", "picture", "website",
    "gender", "zone_info", "locale", "updated_time", "birthdate",
    "email", "email_verified", "phone_number", "address"
  ]
}
]]></artwork>
        </figure>

        <t>Clients and protected resources SHOULD cache this discovery
        information. It is RECOMMENDED that servers provide cache information
        through HTTP headers and make the cache valid for at least one
        week.</t>

        <t>The server MUST provide its public key in <xref
        target="RFC7517">JWK Set</xref> format, such as the following 2048-bit
        RSA key:</t>

        <figure>
          <artwork><![CDATA[{
  "keys": [
    {
      "alg": "RS256",
      "e": "AQAB",
      "n": "o80vbR0ZfMhjZWfqwPUGNkcIeUcweFyzB2S2T-hje83IOVct8gVg9FxvHPK1ReEW3-p7-A8GNcLAuFP_8jPhiL6LyJC3F10aV9KPQFF-w6Eq6VtpEgYSfzvFegNiPtpMWd7C43EDwjQ-GrXMVCLrBYxZC-P1ShyxVBOzeR_5MTC0JGiDTecr_2YT6o_3aE2SIJu4iNPgGh9MnyxdBo0Uf0TmrqEIabquXA1-V8iUihwfI8qjf3EujkYi7gXXelIo4_gipQYNjr4DBNlE0__RI0kDU-27mb6esswnP2WgHZQPsk779fTcNDBIcYgyLujlcUATEqfCaPDNp00J6AbY6w",
      "kty": "RSA",
      "kid": "rsa1"
    }
  ]
}
]]></artwork>
        </figure>

        <t>Clients and protected resources SHOULD cache this key. It is
        RECOMMENDED that servers provide cache information through HTTP
        headers and make the cache valid for at least one week.</t>
      </section>
    </section>

    <section title="Security Considerations">
      <t>All transactions MUST be protected in transit by TLS as described in
      <xref target="BCP195">BCP195</xref>.</t>

      <t>All clients MUST conform to applicable recommendations found in the
      Security Considerations sections of <xref target="RFC6749"/> and those
      found in the <xref target="RFC6819">OAuth 2.0 Threat Model and Security
      Considerations document</xref>.</t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2119"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.2246"?>

      <?rfc include='http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.3986'?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5246"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5322"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5646"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.5785"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6125"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6749"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6750"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.6819"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7033"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7515"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7516"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7517"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7519"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7518"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7009"?>

      <?rfc include="http://xml2rfc.tools.ietf.org/public/rfc/bibxml/reference.RFC.7662"?>

      <?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.ietf-oauth-pop-architecture.xml"?>

      <?rfc include="http://xml2rfc.ietf.org/public/rfc/bibxml-ids/reference.I-D.richer-vectors-of-trust.xml"?>

      <reference anchor="BCP195"
                 target="http://www.rfc-editor.org/info/bcp195">
        <front>
          <title>Recommendations for Secure Use of Transport Layer Security
          (TLS) and Datagram Transport Layer Security (DTLS)</title>

          <author fullname="Y. Sheffer" initials="Y." surname="Sheffer">
            <organization/>
          </author>

          <author fullname="R. Holz" initials="R." surname="Holz">
            <organization/>
          </author>

          <author fullname="P. Saint-Andre" initials="P."
                  surname="Saint-Andre">
            <organization/>
          </author>

          <date month="May" year="2015"/>

          <abstract>
            <t>Transport Layer Security (TLS) and Datagram Transport Layer
            Security (DTLS) are widely used to protect data exchanged over
            application protocols such as HTTP, SMTP, IMAP, POP, SIP, and
            XMPP. Over the last few years, several serious attacks on TLS have
            emerged, including attacks on its most commonly used cipher suites
            and their modes of operation. This document provides
            recommendations for improving the security of deployed services
            that use TLS and DTLS. The recommendations are applicable to the
            majority of use cases.</t>
          </abstract>
        </front>

        <seriesInfo name="BCP" value="195"/>

        <seriesInfo name="RFC" value="7525"/>

        <seriesInfo name="DOI" value="10.17487/RFC7525"/>

        <format octets="60283" type="ASCII"/>
      </reference>

      <reference anchor="OpenID.Core"
                 target="http://openid.net/specs/openid-connect-core-1_0.html">
        <front>
          <title>OpenID Connect Core 1.0</title>

          <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
            <organization abbrev="NRI">Nomura Research Institute,
            Ltd.</organization>
          </author>

          <author fullname="John Bradley" initials="J." surname="Bradley">
            <organization abbrev="Ping Identity">Ping Identity</organization>
          </author>

          <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
            <organization abbrev="Microsoft">Microsoft</organization>
          </author>

          <author fullname="Breno de Medeiros" initials="B."
                  surname="de Medeiros">
            <organization abbrev="Google">Google</organization>
          </author>

          <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
            <organization abbrev="Salesforce">Salesforce</organization>
          </author>

          <date day="3" month="August" year="2015"/>
        </front>
      </reference>

      <reference anchor="OpenID.Discovery"
                 target="http://openid.net/specs/openid-connect-discovery-1_0.html">
        <front>
          <title>OpenID Connect Discovery 1.0</title>

          <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
            <organization abbrev="NRI">Nomura Research Institute,
            Ltd.</organization>
          </author>

          <author fullname="John Bradley" initials="J." surname="Bradley">
            <organization abbrev="Ping Identity">Ping Identity</organization>
          </author>

          <author fullname="Michael B. Jones" initials="M.B." surname="Jones">
            <organization abbrev="Microsoft">Microsoft</organization>
          </author>

          <author fullname="Edmund Jay" initials="E." surname="Jay">
            <organization abbrev="Illumila">Illumila</organization>
          </author>

          <date day="3" month="August" year="2015"/>
        </front>
      </reference>

      <reference anchor="HEART.OAuth2"
                 target="http://openid.net/specs/openid-heart-oauth2-1_0.html">
        <front>
          <title>Health Relationship Trust Profile for OAuth 2.0</title>

          <author fullname="Justin Richer" initials="J." role="editor"
                  surname="Richer">
            <address>
              <email>openid@justin.richer.org</email>

              <uri>http://justin.richer.org/</uri>
            </address>
          </author>

          <date day="15" month="February" year="2016"/>
        </front>
      </reference>
    </references>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>The OpenID Community would like to thank the following people for
      their contributions to this specification: Mark Russel, Mary
      Pulvermacher, David Hill, Dale Moberg, Adrian Gropper, Eve Maler, Danny
      van Leeuwen, John Moehrke, Aaron Seib, John Bradley, Debbie Bucci, Josh
      Mandel, and Sarah Squire.</t>

      <t>The original version of this specification was part of the Secure
      RESTful Interfaces project from The MITRE Corporation, available online
      at http://secure-restful-interface-profile.github.io/pages/</t>
    </section>

    <section anchor="Notices" title="Notices">
      <t>Copyright (c) 2015 The OpenID Foundation.</t>

      <t>The OpenID Foundation (OIDF) grants to any Contributor, developer,
      implementer, or other interested party a non-exclusive, royalty free,
      worldwide copyright license to reproduce, prepare derivative works from,
      distribute, perform and display, this Implementers Draft or Final
      Specification solely for the purposes of (i) developing specifications,
      and (ii) implementing Implementers Drafts and Final Specifications based
      on such documents, provided that attribution be made to the OIDF as the
      source of the material, but that such attribution does not indicate an
      endorsement by the OIDF.</t>

      <t>The technology described in this specification was made available
      from contributions from various sources, including members of the OpenID
      Foundation and others. Although the OpenID Foundation has taken steps to
      help ensure that the technology is available for distribution, it takes
      no position regarding the validity or scope of any intellectual property
      or other rights that might be claimed to pertain to the implementation
      or use of the technology described in this specification or the extent
      to which any license under such rights might or might not be available;
      neither does it represent that it has made any independent effort to
      identify any such rights. The OpenID Foundation and the contributors to
      this specification make no (and hereby expressly disclaim any)
      warranties (express, implied, or otherwise), including implied
      warranties of merchantability, non-infringement, fitness for a
      particular purpose, or title, related to this specification, and the
      entire risk as to implementing this specification is assumed by the
      implementer. The OpenID Intellectual Property Rights policy requires
      contributors to offer a patent promise not to assert certain patent
      claims against other contributors and against implementers. The OpenID
      Foundation invites any interested party to bring to its attention any
      copyrights, patents, patent applications, or other proprietary rights
      that may cover technology that may be required to practice this
      specification.</t>
    </section>

    <section anchor="History" title="Document History">
      <t>-2017-04-10</t>

      <t><list style="symbols">
          <t>Clarified conformance with regard to OAuth 2.0 functions.</t>
        </list></t>

      <t>-2016-09-19</t>

      <t><list style="symbols">
          <t>Reorganized document against different conformance aspects.</t>
        </list></t>

      <t>-2016-08-10</t>

      <t><list style="symbols">
          <t>Clarified ID token lifetime.</t>

          <t>Justified support for request objects.</t>

          <t>Justified support for JWT-based userinfo responses.</t>

          <t>Removed ACR/AMR requirement (pending rewrite if there's
          demand).</t>
        </list></t>

      <t>-2016-04-30</t>

      <t><list style="symbols">
          <t>Added conformance statements.</t>
        </list></t>

      <t>-2016-02-15</t>

      <t><list style="symbols">
          <t>Implementer's Draft 1</t>
        </list></t>

      <t>-2015-12-01</t>

      <t><list style="symbols">
          <t>Replaced "mitre.org" with "example.com".</t>

          <t>Updated references.</t>

          <t>Added VoT.</t>
        </list></t>

      <t>-2015-04-01</t>

      <t><list style="symbols">
          <t>Imported content from Secure RESTful OAuth profile.</t>
        </list></t>
    </section>
  </back>
</rfc>
