<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902" docName="draft-authors-datarightplus-infosec-baseline-00" submissionType="independent" category="exp" xml:lang="en" indexInclude="true">

<front>
<title>DataRight+ Security Profile: Baseline</title><seriesInfo value="draft-authors-datarightplus-infosec-baseline-00" stream="independent" status="experimental" name="Internet-Draft"/>
<author initials="S." surname="Low" fullname="Stuart Low"><organization>Biza.io</organization><address><postal><street/>
</postal><email>stuart@biza.io</email>
</address></author><author initials="B." surname="Kolera" fullname="Ben Kolera"><organization>Biza.io</organization><address><postal><street/>
</postal><email>bkolera@biza.io</email>
</address></author><date/>
<area>Internet</area>
<workgroup>datarightplus</workgroup>

<abstract>
<t>The DataRight+ Security Profile: Baseline is intended to be a compatible profile of the <xref target="CDS"/> presented as a profile of <xref target="FAPI-1.0-Advanced"/>. This profile focuses primarily on the obligations between Provider and Initiator with respect to authorisation requests and does so as an overlay on the underlying FAPI profile combined with the inclusion of specified authorisation types.</t>
<t>This profile does not attempt to provide elaboration on registration protocols, certificate profiles, federation or other components specified within the <xref target="CDS"/>. Further terminology used is deliberately jurisdiction agnostic, please refer to <xref target="DATARIGHTPLUS-ROSETTA"/> for specific ecosystem mappings.</t>
</abstract>

<note><name>Notational Conventions</name>
<t>The keywords "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>",  "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described in <xref target="RFC2119"/>.</t>
</note>

</front>

<middle>

<section anchor="scope"><name>Scope</name>
<t>This document specifies methods for the following:</t>

<ul spacing="compact">
<li>method of obtaining OAuth2 tokens as originally described within the <xref target="CDS"/> and;</li>
<li>requirements related to participants for initiating authorisations and obtaining ongoing authorisation credentials</li>
</ul>
<t>This document does not seek to:</t>

<ul spacing="compact">
<li>specify correlation elements between technical and the legal obligations contained within documents such as the CDR Rules;</li>
<li>restate unchanged requirements from upstream specifications</li>
<li>consider historical obligations which have expired</li>
</ul>
</section>

<section anchor="terminology"><name>Terminology</name>
<t>This specification uses the term "JSON Web Token (JWT)" as defined by <xref target="JWT"/> and the terms "Consumer", "Ecosystem Authority", "Initiator", "Personally Identifiable Information (PII)", "Provider", "User" as defined by <xref target="DATARIGHTPLUS-ROSETTA"/>.</t>
<t>The specification also defines the following terms:</t>

<dl spacing="compact">
<dt>Pairwise Pseudonymous Identifier (PPID)</dt>
<dd>Identifier that identifies the Consumer to a Initiator that cannot be correlated with the Consumer's PPID at another Initiator.</dd>
<dt>User Identifier</dt>
<dd>A User Identifier is a unique piece of information, typically a username, which identifies the User</dd>
</dl>
</section>

<section anchor="provider"><name>Provider</name>

<section anchor="authorisation-server"><name>Authorisation Server</name>
<t>The authorisation server <bcp14>SHALL</bcp14> support the provisions specified in clause 5.2.2 of <xref target="FAPI-1.0-Advanced"/> with the following sections replaced:</t>

<ol spacing="compact">
<li>Section 5.2.2-1: <bcp14>SHALL</bcp14> accept only PAR issued request object passed by reference using the <tt>request_uri</tt> parameter;</li>
<li>Section 5.2.2-2: <bcp14>SHALL</bcp14> require the <tt>response_type</tt> value <tt>code</tt> in conjunction with the <tt>response_mode</tt> value <tt>jwt</tt>;</li>
<li>Section 5.2.2-11: <bcp14>SHALL</bcp14> support the pushed authorization request endpoint as described in PAR;</li>
<li>Section 5.2.2-14: <bcp14>SHALL</bcp14> authenticate the confidential client using <tt>private_key_jwt</tt> specified in section 9 of <xref target="OIDC-Core"/></li>
</ol>
<t>In addition, the authorisation server:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> support the <xref target="OIDC-Core"/> scopes <tt>openid</tt> and <tt>profile</tt>;</li>
<li><bcp14>SHALL</bcp14> support signed ID tokens and <bcp14>MAY</bcp14> support signed and encrypted ID tokens;</li>
<li><bcp14>SHALL</bcp14> issue access tokens with an expiry time of between 2 and 10 minutes;</li>
<li><bcp14>SHALL</bcp14> provide the lifetime remaining of an access token as an attribute named <tt>expires_in</tt> within the token endpoint response;</li>
<li><bcp14>SHALL</bcp14> generate the <tt>sub</tt> as a PPID as described in Section 8 of <xref target="OIDC-Core"/>;</li>
<li><bcp14>SHALL</bcp14> issue <tt>request_uri</tt> values which are one-time use and expire between 10 seconds and 90 seconds (this overrides <xref target="RFC9126"/> clause 4);</li>
<li><bcp14>SHALL NOT</bcp14> specify duplicate <tt>kid</tt> parameters within the endpoint advertised at <tt>jwks_uri</tt>;</li>
<li><bcp14>SHALL</bcp14> support a Token End Point as specified in Section 3.1.3 of <xref target="OIDC-Core"/>;</li>
<li><bcp14>SHALL</bcp14> support a UserInfo Endpoint as specified in Section 5.3 of <xref target="OIDC-Core"/>;</li>
<li><bcp14>SHALL</bcp14> for each Provider, utilise a different issuer as specified in Section 1.2 of <xref target="OIDC-Core"/>;</li>
<li><bcp14>SHALL</bcp14> support discovery, as defined in OpenID Connect Discovery 1.0 <xref target="OIDC-Discovery"/>;</li>
<li><bcp14>SHALL</bcp14> support an introspection endpoint, as defined in <xref target="RFC7662"/>;</li>
<li><bcp14>SHALL</bcp14> support a revocation endpoint, as defined in <xref target="RFC7009"/>;</li>
<li><bcp14>SHALL</bcp14> ensure all operations meet at at least the requirements of Credential Level <tt>CL1</tt> rules of <xref target="TDIF"/>;</li>
<li><bcp14>SHALL NOT</bcp14> utilise refresh token rotation</li>
</ol>

<section anchor="authorisation-flow"><name>Authorisation Flow</name>
<t>During the authorisation flow, the authorisation server:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> request a User Identifier that can identify the relationship between the user and the Consumer;</li>
<li><bcp14>SHALL</bcp14> request a User Identifier already known by the User;</li>
<li><bcp14>SHALL</bcp14> use a one-time password (OTP) provided to the Consumer through an existing channel or mechanism;</li>
<li><bcp14>SHALL NOT</bcp14> request the User to provide a known password;</li>
<li><bcp14>SHALL NOT</bcp14> introduce friction designed to make the authorisation process more difficult than it needs to be</li>
</ol>
</section>

<section anchor="endpoints"><name>Endpoints</name>

<section anchor="discovery-document"><name>Discovery Document</name>
<t>The discovery document from the authorisation server:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> support the <tt>require_pushed_authorization_requests</tt> parameter as described in <xref target="RFC9126"/> at the OpenID Connect Discovery 1.0 <xref target="OIDC-Discovery"/> endpoint;</li>
<li><bcp14>SHALL</bcp14> support the <tt>require_pushed_authorization_requests</tt> parameter as described in <xref target="RFC9126"/> at the <xref target="RFC8414"/> endpoint;</li>
</ol>
</section>

<section anchor="introspection-endpoint"><name>Introspection Endpoint</name>
<t>The introspection endpoint:</t>

<ol spacing="compact">
<li><bcp14>SHALL NOT</bcp14> support introspection of access tokens</li>
<li><bcp14>SHALL</bcp14> include the <tt>sub</tt>, <tt>exp</tt> and <tt>scope</tt> attributes</li>
<li><bcp14>SHALL NOT</bcp14> include the <tt>username</tt> attribute</li>
</ol>
</section>

<section anchor="revocation-endpoint"><name>Revocation Endpoint</name>
<t>The revocation endpoint:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> support revocation of refresh tokens</li>
<li><bcp14>SHALL</bcp14> support revocation of access tokens</li>
<li><bcp14>MAY</bcp14> support revocation of ID tokens</li>
</ol>
</section>
</section>

<section anchor="claims"><name>Claims</name>
<t>The authorisation server:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> support the <xref target="OIDC-Core"/> claims of <tt>sub</tt>, <tt>auth_time</tt>, <tt>name</tt>, <tt>given_name</tt> <tt>family_name</tt> and <tt>last_updated</tt>;</li>
<li><bcp14>SHALL</bcp14> ignored and not authorise any other claims outlined in <xref target="OIDC-Core"/>;</li>
<li><bcp14>SHOULD</bcp14> support the <xref target="OIDC-Core"/> <tt>acr</tt> claim;</li>
<li><bcp14>MAY</bcp14> support the <xref target="OIDC-Core"/> claims of <tt>email</tt>, <tt>email_verified</tt>, <tt>phone_number</tt> and <tt>phone_number_verified</tt>;</li>
</ol>
</section>
</section>

<section anchor="resource-server"><name>Resource Server</name>
<t>The resource server provided by Providers:
1. <bcp14>SHALL</bcp14> support the provisions specified in clause 5.2.2 of <xref target="FAPI-1.0-Baseline"/>;</t>
</section>
</section>

<section anchor="initiator"><name>Initiator</name>

<section anchor="authorisation-client"><name>Authorisation Client</name>
<t>The Initiators authorisation client:</t>

<ol spacing="compact">
<li><bcp14>SHALL</bcp14> support the provisions specified in clause 5.2.3 and 5.2.4 of <xref target="FAPI-1.0-Baseline"/>;</li>
<li><bcp14>SHALL</bcp14> support pushed authorisation requests as described in <xref target="RFC9126"/>;</li>
<li><bcp14>SHALL</bcp14> obtain the consent of the Consumer prior to commencing authorisation with the Provider;</li>
<li><bcp14>SHALL</bcp14> submit authorisation requests containing a <tt>exp</tt> claim, in accordance with <xref target="JWT"/> Section 4.1.4;</li>
<li><bcp14>SHALL</bcp14> submit authorisation requests containing a <tt>exp</tt> claim that is less than or equal to <tt>3600</tt>;</li>
<li><bcp14>SHALL</bcp14> submit authorisation requests containing a <tt>nbf</tt> claim in accordance with <xref target="JWT"/> Section 4.1.5</li>
</ol>
<t><em>Note:</em> The form and structure of the consent obtained by the authorisation client is outside the scope of this document.</t>
</section>

<section anchor="resource-server-1"><name>Resource Server</name>
<t>The resource server <bcp14>SHALL</bcp14> support the provisions specified in clause 6.2.2 of <xref target="FAPI-1.0-Baseline"/> with the following sections replaced:</t>

<ol spacing="compact">
<li>Section 6.2.2-3: <bcp14>SHALL</bcp14> send the last time the customer logged into the client in the x-fapi-auth-date header where the value is supplied as a HTTP-date as in Section 7.1.1.1 of RFC7231, e.g., x-fapi-auth-date: Tue, 11 Sep 2012 19:43:31 GMT;</li>
<li>Section 6.2.2-4: <bcp14>SHALL</bcp14> send the customer’s IP address if this data is available in the x-fapi-customer-ip-address header, e.g., x-fapi-customer-ip-address: 2001:DB8::1893:25c8:1946 or x-fapi-customer-ip-address: 198.51.100.119; and</li>
</ol>
</section>
</section>

<section anchor="tls-considerations"><name>TLS Considerations</name>
<t>Section 8.5 of <xref target="FAPI-1.0-Advanced"/> <bcp14>SHALL</bcp14> apply.</t>
<t>In addition:</t>

<ol spacing="compact">
<li>Use of Mutual TLS is <bcp14>REQUIRED</bcp14> at all Authenticated Resource Server endpoints except where required for Discovery or Consumer browser access (ie. Authorisation endpoint);</li>
<li>All parties <bcp14>SHALL</bcp14> apply the certificate management policy requirements of the relevant Ecosystem Authority</li>
</ol>
</section>

<section anchor="implementation-considerations"><name>Implementation Considerations</name>
<t>Claims available via the profile scope will only return the details of the User which may be different to the Consumer.</t>
<t>Providers SHOULD explicitly capture Claims requested by the Initiator. If the data cluster or [OIDC] profile scope changes meaning in future this ensures the Provider only returns what the Consumer initially authorised to disclose.</t>
<t>Initiators SHOULD record the following information each time an authorisation flow is executed:</t>

<ul spacing="compact">
<li>User Identifier;</li>
<li>timestamp;</li>
<li>IP;</li>
<li>scopes;</li>
<li>duration</li>
</ul>
</section>

<section anchor="acknowledgement"><name>Acknowledgement</name>
<t>The following people contributed to this document:</t>

<ul spacing="compact">
<li>Stuart Low (Biza.io) - Editor</li>
<li>Ben Kolera (Biza.io)</li>
</ul>
</section>

</middle>

<back>
<references><name>Normative References</name>
<reference anchor="CDS" target="https://consumerdatastandardsaustralia.github.io/standards">
  <front>
    <title>Consumer Data
Standards (CDS)</title>
    <author>
      <organization>Data Standards Body (Treasury)</organization>
    </author>
  </front>
</reference>
<reference anchor="DATARIGHTPLUS-ROSETTA" target="https://datarightplus.github.io/datarightplus-rosetta/draft-authors-datarightplus-rosetta.html">
  <front>
    <title>DataRight+ Rosetta Stone</title>
    <author fullname="Stuart Low" initials="S." surname="Low">
      <organization>Biza.io</organization>
    </author>
  </front>
</reference>
<reference anchor="FAPI-1.0-Advanced" target="https://openid.net/specs/openid-financial-api-part-2-1_0.html">
  <front>
    <title>Financial-grade API Security Profile 1.0 - Part 2: Advanced</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>Nat Consulting</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Yubico</organization>
    </author>
    <author fullname="Illumila" initials="E." surname="Jay">
      <organization>Illumila</organization>
    </author>
  </front>
</reference>
<reference anchor="FAPI-1.0-Baseline" target="https://openid.net/specs/openid-financial-api-part-1-1_0.html">
  <front>
    <title>Financial-grade API Security Profile 1.0 - Part 1: Baseline</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>Nat Consulting</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Yubico</organization>
    </author>
    <author fullname="Illumila" initials="E." surname="Jay">
      <organization>Illumila</organization>
    </author>
  </front>
</reference>
<reference anchor="JWT" target="https://datatracker.ietf.org/doc/html/rfc7519">
  <front>
    <title>JSON Web Token (JWT)</title>
    <author fullname="M. Jones">
      <organization>Microsoft</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Ping Identity</organization>
    </author>
    <author fullname="N. Sakimura">
      <organization>Nomura Research Institute</organization>
    </author>
    <date year="2015" month="May"/>
  </front>
</reference>
<reference anchor="OIDC-Core" target="http://openid.net/specs/openid-connect-core-1_0.html">
  <front>
    <title>OpenID Connect Core 1.0 incorporating errata set 1</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>NRI</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Ping Identity</organization>
    </author>
    <author fullname="Mike Jones" initials="M." surname="Jones">
      <organization>Microsoft</organization>
    </author>
    <author fullname="Breno de Medeiros" initials="B." surname="de Medeiros">
      <organization>Google</organization>
    </author>
    <author fullname="Chuck Mortimore" initials="C." surname="Mortimore">
      <organization>Salesforce</organization>
    </author>
    <date year="2014" month="Nov" day="8"/>
  </front>
</reference>
<reference anchor="OIDC-Discovery" target="https://openid.net/specs/openid-connect-discovery-1_0.html">
  <front>
    <title>OpenID Connect Discovery 1.0 incorporating errata set 1</title>
    <author fullname="Nat Sakimura" initials="N." surname="Sakimura">
      <organization>NRI</organization>
    </author>
    <author fullname="John Bradley" initials="J." surname="Bradley">
      <organization>Ping Identity</organization>
    </author>
    <author fullname="Mike Jones" initials="M." surname="Jones">
      <organization>Microsoft</organization>
    </author>
    <author initials="E." surname="Jay">
      <organization>Illumila</organization>
    </author>
    <date year="2014" month="Nov" day="8"/>
  </front>
</reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7009.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7662.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8414.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9126.xml"/>
<reference anchor="TDIF" target="https://www.digitalidentity.gov.au">
  <front>
    <title>Trusted Digital Identity Framework (
TDIF)</title>
    <author>
      <organization>Commonwealth of
Australia (Digital Transformation Agency)</organization>
    </author>
  </front>
</reference>
</references>

</back>

</rfc>
