<?xml version='1.0' encoding='ascii'?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<rfc ipr="trust200902" category="info" docName="opend-fapi-financial_api_wd_001" obsoletes="" updates="" submissionType="IETF" xml:lang="en">
  <?rfc toc="yes" ?>
  <?rfc tocdepth="4" ?>
  <?rfc symrefs="yes" ?>
  <?rfc sortrefs="yes"?>
  <?rfc strict="yes" ?>
  <?rfc iprnotified="no" ?>
  <?rfc private="Draft" ?>
  <front>
    <title abbrev="FAPI - Part 1">Financial Services &#8211; Financial API - Part 1: Read Only API Security Profile</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization abbrev="NRI">Nomura Research Institute, Ltd.</organization>
      <address>
        <email>n-sakimura@nri.co.jp</email>
        <uri>http://nat.sakimura.org/</uri>
      </address>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization abbrev="Ping Identity">Ping Identity</organization>
      <address>
        <email>ve7jtb@ve7jtb.com</email>
        <uri>http://www.thread-safe.com/</uri>
      </address>
    </author>
    <author fullname="Edmund Jay" initials="E." surname="Jay">
      <organization abbrev="Illumila">Illumila</organization>
      <address>
        <email>ejay@mgi1.com</email>
        <uri>http://illumi.la/</uri>
      </address>
    </author>
    <date day="24" month="January" year="2017"/>
    <note title="Warning">
      <t>This document is not an OIDF International Standard. It is distributed for review and comment. It is subject to change without notice and may not be referred to as an International Standard.  </t>
      <t>Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.  </t>
    </note>
    <note title="Copyright notice">
      <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>
    </note>
    <note title="Foreword">
      <t>OIDF (OpenID Foundation) is an international standardizing body comprised by over 160 participating entities (work group participants). The work of preparing international standards is carried out through OIDF work groups according to OpenID Process.  Each participants interested in a subject for which a work group has been established has the right to be represented on that work group. International organizations, governmental and non-governmental, in liaison with OIDF, also take part in the work. OIDF collaborates closely with other standardizing bodies in the related fields.  </t>
      <t>OpenID Foundation standards are drafted in accordance with the rules given in the OpenID Process.  </t>
      <t>The main task of work group is to prepare Implementers Draft and Final Draft. Final Draft adopted by the Work Group through consensus are circulated publicly for the public review for 60 days and for the OIDF members for voting. Publication as an OIDF Standard requires approval by at least 50 % of the members casting a vote.  </t>
      <t>Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. OIDF shall not be held responsible for identifying any or all such patent rights.  </t>
      <t>Financial API - Part 1: Read Only API Security Profile was prepared by OpenID Foundation Financial API Work Group.  </t>
      <t>Financial API consists of the following parts, under the general title Financial Services &#8212; Financial API: </t>
      <t>
        <list style="symbols">
          <t>Part 1: Read Only API Security Profile </t>
          <t>Part 2: Read and Write API Security Profile </t>
          <t>Part 3: Open Data API </t>
          <t>Part 4: Protected Data API and Schema - Read only </t>
          <t>Part 5: Protected Data API and Schema - Read and Write </t>
        </list>
      </t>
      <t>This part is intended to be used with [RFC6749], [RFC6750], [RFC6736], and [OIDC].  </t>
    </note>
    <note title="Introduction">
      <t>In many cases, Fintech services such as aggregation services use screen scraping and store user passwords. This model is both brittle and insecure. To cope with the brittleness, it should utilize an API model with structured data and to cope with insecurity, it should utilize a token model such as OAuth [RFC6749, RFC6750].  </t>
      <t>This working group aims to rectify the situation by developing a REST/JSON model protected by OAuth. Specifically, the FAPI WG aims to provide JSON data schemas, security and privacy recommendations and protocols to: </t>
      <t>
        <list style="symbols">
          <t>enable applications to utilize the data stored in the financial account, </t>
          <t>enable applications to interact with the financial account, and </t>
          <t>enable users to control the security and privacy settings.  </t>
        </list>
      </t>
      <t>Both commercial and investment banking accounts as well as insurance, and credit card accounts are to be considered.  </t>
    </note>
  </front>
  <middle><!--This document was prepared using Pandoc2rfc, https://github.com/miekg/pandoc2rfc --><section title="Scope" anchor="scope" toc="default"><t>This document specifies the method of </t><t><list style="symbols"><t>applications to obtain the OAuth tokens in an appropriately secure manner for the financial data access; </t><t>application to utilize OpenID Connect to identify the customer; </t><t>representing financial data in JSON format; </t><t>using the tokens to interact with the REST endpoints that provides financial data; and </t><t>enabling users to control the security and privacy settings.  </t></list></t><t>This document is applicable to both commercial and investment banking accounts as well as insurance, and credit card accounts are to be considered.  </t></section><section title="Normative references" anchor="normative-references" toc="default"><t>The following referenced documents are indispensable for the application of this document. For dated references, only the edition cited applied. For undated references, the latest edition of the referenced document (including any amendments) applies.  </t><t>[RFC2616] - Hypertext Transfer Protocol -- HTTP/1.1 [RFC2616]: https://tools.ietf.org/html/rfc2616 </t><t>[RFC4122] A Universally Unique IDentifier (UUID) URN Namespace [RFC4122]: https://tools.ietf.org/html/rfc4122 </t><t>[RFC6749] - The OAuth 2.0 Authorization Framework [RFC6749]: https://tools.ietf.org/html/rfc6749 </t><t>[RFC6750] - The OAuth 2.0 Authorization Framework: Bearer Token Usage [RFC6750]: https://tools.ietf.org/html/rfc6750 </t><t>[RFC7636] - Proof Key for Code Exchange by OAuth Public Clients [RFC7636]: https://tools.ietf.org/html/rfc7636 </t><t>[RFC5246] - The Transport Layer Security (TLS) Protocol Version 1.2 [RFC5246]: https://tools.ietf.org/html/rfc5246 </t><t>[RFC7525] - Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) [RFC7525]: https://tools.ietf.org/html/rfc7525 </t><t>[RFC6125] - 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) [RFC6125]: https://tools.ietf.org/html/rfc6125 </t><t>[O2fNA] - OAuth 2.0 for Native Apps [O2fNA]: https://tools.ietf.org/html/draft-ietf-oauth-native-apps-05 </t><t>[RFC6819] - OAuth 2.0 Threat Model and Security Considerations [RFC6819]: https://tools.ietf.org/html/rfc6819 </t><t>[OIDC] - OpenID Connect Core 1.0 incorporating errata set 1 [OIDC]: http://openid.net/specs/openid-connect-core-1_0.html </t><t>[OIDD] - OpenID Connect Discovery 1.0 incorporating errata set 1 [OIDD]: http://openid.net/specs/openid-connect-discovery-1_0.html </t><t>[OIDM] - OAuth 2.0 Multiple Response Type Encoding Practices [OIDM]: http://openid.net/specs/oauth-v2-multiple-response-types-1_0.html </t><t>[X.1254] - Entity authentication assurance framework [X.1254]: https://www.itu.int/rec/T-REC-X.1254 </t><t>[TLSM] - Mutual X.509 Transport Layer Security (TLS) Authentication for OAuth Clients [TLSM]: https://tools.ietf.org/html/draft-campbell-oauth-tls-client-auth </t></section><section title="Terms and definitions" anchor="terms-and-definitions" toc="default"><t>For the purpose of this standard, the terms defined in [RFC6749], [RFC6750], [RFC7636], [OpenID Connect Core][OIDC] apply.  </t></section><section title="Symbols and Abbreviated terms" anchor="symbols-and-abbreviated-terms" toc="default"><t><spanx style="strong" xml:space="preserve">API</spanx> &#8211; Application Programming Interface </t><t><spanx style="strong" xml:space="preserve">CSRF</spanx> - Cross Site Request Forgery </t><t><spanx style="strong" xml:space="preserve">FAPI</spanx> - Financial API </t><t><spanx style="strong" xml:space="preserve">FI</spanx> &#8211; Financial Institution </t><t><spanx style="strong" xml:space="preserve">HTTP</spanx> &#8211; Hyper Text Transfer Protocol </t><t><spanx style="strong" xml:space="preserve">REST</spanx> &#8211; Representational State Transfer </t><t><spanx style="strong" xml:space="preserve">TLS</spanx> &#8211; Transport Layer Security </t></section><section title="Read Only API Security Profile" anchor="read-only-api-security-profile" toc="default"><section title="Introduction" anchor="introduction" toc="default"><t>The OIDF Financial API (FAPI) is a REST API that provides JSON data representing accounts and transactions related data. These APIs are protected by the OAuth 2.0 Authorization Framework that consists of [RFC6749], [RFC6750], [RFC7636], and other specifications.  </t><t>These API accesses have several levels of risks associated to them. Read only access is generally speaking associated with lower financial risk than the write access. As such, the characteristics required to the tokens are also different.  </t><t>In the following subclauses, the method to obtain tokens are explained separately.  </t></section><section title="Read Only API Security Provisions" anchor="read-only-api-security-provisions" toc="default"><section title="Introduction" anchor="introduction-1" toc="default"><t>Read Only Access typically is the lower risk scenario compared to the Write access, so the protection level can also be lower.  However, since the FAPI would provide potentially sensitive information, it requires more protection level than a basic [RFC6749] requires.  </t><t>As a profile of The OAuth 2.0 Authorization Framework, this document mandates the following to the Read Only API of the FAPI.  </t></section><section title="Authorization Server" anchor="authorization-server" toc="default"><t>The Authorization Server </t><t><list style="symbols"><t>shall support both public and confidential clients; </t><t>shall provide a client secret that adheres to the requirements in section 16.19 of [OIDC] if a symmetric key is used; </t><t>shall authenticate the confidential client at the Token Endpoint using one of the following methods: <list style="numbers"><t>TLS mutual authentication [TLSM]; </t><t>JWS Client Assertion using the <spanx style="verb" xml:space="preserve">client_secret</spanx> or a private key as specified in section 9 of [OIDC]; </t></list> </t><t>shall require a key of size 2048 bits or larger if RSA algorithms are used for the client authentication; </t><t>shall require a key of size 160 bits or larger if elliptic curve algorithms are used for the client authentication; </t><t>shall support [RFC7636] with <spanx style="verb" xml:space="preserve">S256</spanx> as the code challenge method; </t><t>shall require Redirect URIs to be pre-registered; </t><t>shall require the <spanx style="verb" xml:space="preserve">redirect_uri</spanx> parameter in the authorization request; </t><t>shall require the value of <spanx style="verb" xml:space="preserve">redirect_uri</spanx> to exactly match one of the pre-registered Redirect URIs; </t><t>shall require user authentication at LoA 2 as defined in [X.1254] or more; </t><t>shall require explicit consent by the user to authorize the requested scope if it has not been previously authorized; </t><t>shall verify that the Authorization Code has not been previously used if possible; </t><t>shall return the token response as defined in 4.1.4 of [RFC6749]; </t><t>shall return the list of allowed scopes with the issued access token; <vspace blankLines="0"/> </t><t>shall provide opaque, non-monotonically increasing or non-guessable access tokens with a minimum of 128 bits as defined in section 5.1.4.2.2 of [RFC6819].  </t><t>should clearly identify long-term grants to the user during authorization as in 16.18 of [OIDC]; and </t><t>should provide a mechanism for the end-user to revoke access tokens and refresh tokens granted to a Client as in 16.18 of [OIDC].  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: The Financial API server may limit the scopes for the purpose of not implementing certain APIs.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: Section 4.1.3 of [RFC6749] does not say anything about the <spanx style="verb" xml:space="preserve">code</spanx> reuse, but this document is putting limitation on it as per Section 3.1.3.2 of [OIDC].  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: If replay identification of the authorization code is not possible, it is desirable to set the validity period of the authorization code to one minute or a suitable short period of time. The validity period may act as a cache control indicator of when to clear the authorization code cache if one is used.  </t></list></t><t>Further, if it wishes to provide the authenticated user's identifier to the client in the token response, the authorization server </t><t><list style="symbols"><t>shall support the authentication request as in Section 3.1.2.1 of [OIDC]; </t><t>shall perform the authentication request verification as in Section 3.1.2.2 of [OIDC]; </t><t>shall authenticate the user as in Section 3.1.2.2 and 3.1.2.3 of [OIDC]; </t><t>shall provide the authentication response as in Section 3.1.2.4 and 3.1.2.5 of [OIDC] depending on the outcome of the authentication; </t><t>shall perform the token request verification as in Section 3.1.3.2 of [OIDC]; and </t><t>shall issue an ID Token in the token response when <spanx style="verb" xml:space="preserve">openid</spanx> was included in the requested <spanx style="verb" xml:space="preserve">scope</spanx> as in Section 3.1.3.3 of [OIDC] with its <spanx style="verb" xml:space="preserve">sub</spanx> value equal to the value of the <spanx style="verb" xml:space="preserve">CustomerId</spanx> of the <spanx style="verb" xml:space="preserve">Customer</spanx> object corresponding to the authenticated user and optional <spanx style="verb" xml:space="preserve">acr</spanx> value in ID Token.  </t></list></t></section><section title="Public Client" anchor="public-client" toc="default"><t>A Public Client </t><t><list style="symbols"><t>shall support [RFC7636] or the mechanisms defined in <eref target="Financial_API_WD_002.md">Financial API - Part 2</eref>; </t><t>shall use <spanx style="verb" xml:space="preserve">S256</spanx> as the code challenge method for the [RFC7636]; </t><t>shall use separate and distinct Redirect URI for each Authorization Server that it talks to; </t><t>shall store the Redirect URI value in the User-Agent session and compare it with the Redirect URI that the Authorization Response was received at, where, if the URIs do not match, the Client shall terminate the process with error; </t><t>shall adhere to the best practice stated by [O2fNA]; and </t><t>shall implement an effective CSRF protection.  </t></list></t><t>Further, if it wishes to obtain a persistent identifier of the authenticated user, it </t><t><list style="symbols"><t>shall include <spanx style="verb" xml:space="preserve">openid</spanx> in the <spanx style="verb" xml:space="preserve">scope</spanx> value; and </t><t>shall include <spanx style="verb" xml:space="preserve">nonce</spanx> parameter defined in Section 3.1.2.1 of [OIDC] in the authentication request.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: Adherence to [RFC7636] means that the token request includes <spanx style="verb" xml:space="preserve">code_verifier</spanx> parameter in the request.  </t></list></t></section><section title="Confidential Client" anchor="confidential-client" toc="default"><t>In addition to the provision to the Public Client, the Confidential Client </t><t><list style="symbols"><t>shall support the following methods to authenticate against the Token Endpoint: <list style="numbers"><t>TLS mutual authentication [TLSM]; or </t><t>JWS Client Assertion using the <spanx style="verb" xml:space="preserve">client_secret</spanx> or a private key as specified in section 9 of [OIDC]; </t></list> </t><t>shall use RSA keys with a minimum 2048 bits if using RSA cryptography; </t><t>shall use Elliptic Curve keys with a minimum of 160 bits if using Elliptic Curve cryptography; and </t><t>shall verify that its client secret has a minimum of 128 bits if using symmetric key cryptography.  </t></list></t></section></section></section><section title="Accessing Protected Resources" anchor="accessing-protected-resources" toc="default"><section title="Introduction" anchor="introduction-2" toc="default"><t>The FAPI endpoints are OAuth 2.0 protected resource endpoints that return financial information for the resource owner associated with the submitted access token.  </t></section><section title="Read only access provisions" anchor="read-only-access-provisions" toc="default"><section title="Protected resources provisions" anchor="protected-resources-provisions" toc="default"><t>The resource server with the FAPI endpoints </t><t><list style="symbols"><t>shall mandate TLS 1.2 or later as defined in [RFC5246] with the usage following the best practice in [RFC7525]; </t><t>shall support the use of the HTTP GET method defined in [RFC2616]; </t><t>shall accept access tokens in the HTTP header as in Section 2.1 of OAuth 2.0 Bearer Token Usage [RFC6750]; </t><t>shall not accept access tokens in the query parameters stated in Section 2.3 of OAuth 2.0 Bearer Token Usage [RFC6750]; </t><t>shall verify that the access token is not expired nor revoked; </t><t>shall verify that the scope associated with the access token authorizes the reading of the resource it is representing; </t><t>shall identify the associated user to the access token; </t><t>shall only return the resource identified by the combination of the user implicit in the access and the granted scope and otherwise return errors as in section 3.1 of [RFC6750]; </t><t>shall encode the response in UTF-8; </t><t>shall send the <spanx style="verb" xml:space="preserve">Content-type</spanx> HTTP header <spanx style="verb" xml:space="preserve">Content-Type: application/json; charset=UTF-8</spanx>; </t><t>shall send the server date in HTTP date header as in section 14.18 of [RFC2616]; </t><t>shall set the response header <spanx style="verb" xml:space="preserve">x-fapi-interaction-id</spanx> to the value received from the corresponding fapi client request header or to a [RFC4122] UUID value if the request header was not provided to track the interaction, e.g., <spanx style="verb" xml:space="preserve">x-fapi-interaction-id: c770aef3-6784-41f7-8e0e-ff5f97bddb3a</spanx>; and </t><t>shall log the value of <spanx style="verb" xml:space="preserve">x-fapi-interaction-id</spanx> in the log entry.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: While this document does not specify the exact method to find out the user associated with the access token and the granted scope, the protected resource can use OAuth Token Introspection [RFC7662].  </t></list></t><t>Further, it </t><t><list style="symbols"><t>should support the use of Cross Origin Resource Sharing (CORS) [CORS] and or other methods as appropriate to enable Java Script Clients to access the endpoint if it decides to provide access to Javascript clients.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: Providing access to Javascript clients or not has different security properites.; </t></list></t></section></section><section title="Client provisions" anchor="client-provisions" toc="default"><t>The client supporting this document </t><t><list style="symbols"><t>shall use TLS 1.2 or later as defined in [RFC5246] with the usage following the best practice in [RFC7525]; </t><t>shall send access tokens in the HTTP header as in Section 2.1 of OAuth 2.0 Bearer Token Usage [RFC6750]; </t><t>shall send <spanx style="verb" xml:space="preserve">User-Agent</spanx> header that identifies the client, e.g., <spanx style="verb" xml:space="preserve">User-Agent: Intuit/1.2.3 Mint/4.3.1</spanx>; and </t><t>shall send <spanx style="verb" xml:space="preserve">x-fapi-financial-id</spanx> whose value is the unique identifier of the desired financial institution to interact assigned by the service bureau where the API is provided by a service bureau which uses the same endpoint for multiple institutions.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: Conceptually, the value of the <spanx style="verb" xml:space="preserve">x-fapi-financial-id</spanx> corresponds to <spanx style="verb" xml:space="preserve">iss</spanx> in the ID Token but is not required to be an https URI. It often is the routing number of the FI.  <vspace blankLines="1"/> <spanx style="strong" xml:space="preserve">NOTE</spanx>: The use of <spanx style="verb" xml:space="preserve">User-Agent</spanx> and <spanx style="verb" xml:space="preserve">x-fapi-financial-id</spanx> is not a security feature.  </t></list></t><t>Further, the client </t><t><list style="symbols"><t>can optionally supply the <spanx style="verb" xml:space="preserve">sub</spanx> value associated with the customer with the <spanx style="verb" xml:space="preserve">x-fapi-customer-id</spanx> request header, e.g., <spanx style="verb" xml:space="preserve">x-fapi-customer-id: a237cb74-61c9-4319-9fc5-ff5812778d6b</spanx>; </t><t>can optionally supply the last time the customer logged into the client in the <spanx style="verb" xml:space="preserve">x-fapi-customer-last-logged-time</spanx> header where the value is supplied as ** w3c date **, e.g., <spanx style="verb" xml:space="preserve">x-fapi-customer-last-logged-time: Tue, 11 Sep 2012 19:43:31 UTC</spanx>; and </t><t>can supply the customer&#8217;s IP address if this data is available or applicable in the <spanx style="verb" xml:space="preserve">x-fapi-customer-ip-address</spanx> header, e.g., <spanx style="verb" xml:space="preserve">x-fapi-customer-ip-address: 198.51.100.119</spanx>; and </t><t>may send the <spanx style="verb" xml:space="preserve">x-fapi-interaction-id</spanx> request header whose value is a [RFC4122] UUID to the server to help correlate log entries between client and server, e.g., <spanx style="verb" xml:space="preserve">x-fapi-interaction-id: c770aef3-6784-41f7-8e0e-ff5f97bddb3a</spanx>.  </t></list></t></section></section><section title="Security Considerations" anchor="security-considerations" toc="default"><section title="TLS Considerations" anchor="tls-considerations" toc="default"><t>Since confidential information is being exchanged, all interactions shall be encrypted with TLS/SSL (HTTPS) in accordance with the recommendations in [RFC7525]. TLS version 1.2 or later shall be used for all communications.  </t></section><section title="Message source authentication failure" anchor="message-source-authentication-failure" toc="default"><t>Authorization request and response are not authenticated. For a higher risk scenarios, it should be taken care of. See Part 2, which uses request object to achieve the message source authentication.  </t></section><section title="Message integrity protection failure" anchor="message-integrity-protection-failure" toc="default"><t>Authorization request is not message integrity protected thus request tampering and parameter injection are possible. Where the protection is desired, it should use Part 2.  </t><t>The response is integrity protected when ID Token is returned from the authorization endpoint.  </t></section><section title="Message containment failure" anchor="message-containment-failure" toc="default"><section title="Authorization request and response" anchor="authorization-request-and-response" toc="default"><t>In this document, the authorization request is not encrypted.  Thus, it is possible to leak the information contained if the browser was infected with virus, etc.  </t><t>Authorization response can be encrypted as ID Token can be encrypted.  </t><t>It is possible to leak the information through the logs if the parameters were recorded in the logs and the access to the logs are compromised. Strict access control to the logs in such cases should be enforced.  </t></section><section title="Token request and response" anchor="token-request-and-response" toc="default"><t>It is possible to leak the information through the logs if the parameters were recorded in the logs and the access to the logs are compromised. Strict access control to the logs in such cases should be enforced.  </t></section><section title="Resource request and response" anchor="resource-request-and-response" toc="default"><t>Care should be taken so that the sensitive data will not be leaked through the referrer.  </t><t>If the access token is a bearer token, it is possible to exercise the stolen token. Since the access token can be used against multiple URIs, the risk of its leaking is much larger than the refresh token, which is used only against the token endpoint. Thus, the lifetime of the access token should be much shorter than that of the refresh token. Refer to section 16.18 of [OIDC] for more discussion on the lifetimes of access tokens and refresh tokens.  </t></section></section></section><section title="Privacy Considerations" anchor="privacy-considerations" toc="default"><section title="Privacy by design" anchor="privacy-by-design" toc="default"><t><list style="symbols"><t>Privacy impact analysis (PIA) should be performed in the initial phase of the system planning.  </t><t>For PIA, use of ISO/IEC 29134 Privacy impact analysis - Guidelines is recommended.  </t><t>The provider should establish a management system to help respect privacy of the customer.  </t></list></t></section><section title="Adhering to privacy principles" anchor="adhering-to-privacy-principles" toc="default"><t>Stakeholders should follow the privacy principles of ISO/IEC 29100. In particular: </t><t><list style="numbers"><t>Consent and Choice </t><t>Purpose legitimacy and specification </t><t>Collection limitation </t><t>Data (access) limitation </t><t>Use, retention, and data disclosure limitation: <list style="numbers"><t>Use limitation: </t><t>Retention limitation: Where the data is no longer being used, clients should delete such data from their system within 180 days except for the cases it needs to retain due to the legal restrictions; </t><t>Data disclosure limitation: </t></list> </t><t>Accuracy and quality </t><t>Openness, transparency and notice </t><t>Individual participation and access </t><t>Accountability </t><t>Information security </t><t>Privacy compliance </t></list></t></section></section><section title="Acknowledgement" anchor="acknowledgement" toc="default"><t>Following people contributed heavily towards this document.  </t><t><list style="symbols"><t>Nat Sakimura (Nomura Research Institute) -- Chair, Editor </t><t>Anoop Saxana (Intuit) -- Co-chair, FS-ISAC Liaison </t><t>Anthony Nadalin (Microsoft) -- Co-chair </t><t>Edmund Jay (Illumila) -- Co-editor </t><t>Dave Tonge (Momentum Financial Technology) -- UK Implementation Entity Liaison </t><t>Sascha H. Preibisch (CA) </t><t>Henrik Bearing (Peercraft) </t><t>Anton Taborszky (Deutche Telecom) </t><t>John Bradley (Ping Identity) </t><t>(add yourself) </t></list></t></section><section title="Bibliography" anchor="bibliography" toc="default"><t><list style="symbols"><t>[OFX2.2] Open Financial Exchange 2.2 </t><t>[HTML4.01] &#8220;HTML 4.01 Specification,&#8221; World Wide Web Consortium Recommendation REC-html401-19991224, December 1999 </t><t>[RFC2616] Hypertext Transfer Protocol -- HTTP/1.1 </t><t>[RFC4122] A Universally Unique IDentifier (UUID) URN Namespace </t><t>[RFC5246] The Transport Layer Security (TLS) Protocol Version 1.2 </t><t>[RFC6749] The OAuth 2.0 Authorization Framework </t><t>[RFC6750] The OAuth 2.0 Authorization Framework: Bearer Token Usage </t><t>[RFC7525] Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS) </t><t>[RFC7636] Proof Key for Code Exchange by OAuth Public Clients </t><t>[RFC7662] OAuth 2.0 Token Introspection </t><t>[RFC6125] 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) </t><t>[O2fNA] OAuth 2.0 for Native Apps </t><t>[RFC6819] OAuth 2.0 Threat Model and Security Considerations </t><t>[OIDC] OpenID Connect Core 1.0 incorporating errata set 1 </t><t>[OIDD] OpenID Connect Discovery 1.0 incorporating errata set 1 </t><t>[OIDM] OAuth 2.0 Multiple Response Type Encoding Practices </t><t>[X.1254] - Entity authentication assurance framework </t><t>[TLSM] - Mutual X.509 Transport Layer Security (TLS) Authentication for OAuth Clients </t><t>[DDA] Durable Data API, (2015), FS-ISAC </t><t>[ISO29100] ISO/IEC 29100 Information technology -- Security techniques -- Privacy framework <eref target="http://standards.iso.org/ittf/PubliclyAvailableStandards/c045123_ISO_IEC_29100_2011.zip">http://standards.iso.org/ittf/PubliclyAvailableStandards/c045123_ISO_IEC_29100_2011.zip</eref> </t><t>[ISO29134] ISO/IEC 29134 Information technology -- Security techniques -- Privacy impact assessment -- Guidelines </t></list></t></section> </middle>
  <back/>
</rfc>
