<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.6.39 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-sh-rats-oidcatt-01" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.17.5 -->
  <front>
    <title abbrev="OIDCATT">Attestation in OpenID-Connect</title>
    <seriesInfo name="Internet-Draft" value="draft-sh-rats-oidcatt-01"/>
    <author initials="N." surname="Smith" fullname="Ned Smith">
      <organization>Intel Corporation</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>ned.smith@intel.com</email>
      </address>
    </author>
    <author initials="T." surname="Hardjono" fullname="Thomas Hardjono">
      <organization>Massachusetts Institute of Technology</organization>
      <address>
        <postal>
          <country>United States of America</country>
        </postal>
        <email>hardjono@mit.edu</email>
      </address>
    </author>
    <date year="2023" month="August" day="09"/>
    <area>Security</area>
    <workgroup>Remote ATtestation ProcedureS</workgroup>
    <keyword>attestation</keyword>
    <abstract>
      <?line 51?>

<t>This document defines message flows and extensions to OpenID-Connect (OIDC) messages that support attestation.
Attestation Evidence and Attestation Results is accessed via appropriate APIs that presumably require authorization using
OAuth 2.0 access tokens.
A common use case for OIDC is retrieval of user identity information authorized by an OIDC identity token. The Relying Party may
require Attestation Results that describes the trust properties of the UserInfo Endpoint. Trust properties may
be  a condition of accepting the user identity information.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://nedmsmith.github.io/draft-sh-rats-oidc-attest/draft-sh-rats-oidcatt.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-sh-rats-oidcatt/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Remote ATtestation ProcedureS Working Group mailing list (<eref target="mailto:rats@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/rats/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/rats/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/nedmsmith/draft-sh-rats-oidc-attest"/>.</t>
    </note>
  </front>
  <middle>
    <?line 60?>

<section anchor="intro">
      <name>Introduction</name>
      <t>This document defines attestation conceptual message flows that extend OpenID-Connect (OIDC) messages, see <xref target="OCC2014"/>.
Attestation Evidence and Attestation Results are RATS conceptual messages, see <xref target="RFC9334"/> and <xref target="I-D.ftbs-rats-msg-wrap"/>, that are obtained
via appropriate APIs conditional on OAuth 2.0 access tokens <xref target="RFC6749"/>.
A common use case for OIDC is retrieval of user identity information authorized by an OIDC identity token.
The Relying Party may require Attestation Results regarding the UserInfo Endpoint as a condition of accepting the user identity
information.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

<section anchor="terminology">
        <name>Terminology</name>
        <t>This specification uses role names as defined by Remote ATtestation procedureS (RATS), <xref target="RFC9334"/> and OpenID Connect (OIDC),
<xref target="OCC2014"/>. If role names conflict, (e.g., Relying Party), then the RATS role is qualified by prepending ‘RATS’ or ‘R’.
For example, the RATS Relying Party is disambiguated as ‘RRP’.</t>
        <t>A summary of roles used in this specification is provided here for convenience.</t>
        <t>RATS roles are as follows:</t>
        <ul spacing="normal">
          <li>Attester (RA) - an endpoint that produces attestation Evidence.</li>
          <li>Reference Value Provider (RVP) - an endpoint that produces Reference Values used to appraise Evidence.</li>
          <li>Endorser (RE) - an endpoint that produces Endorsements used to assess the trustworthiness of the Attester's attestation capability.</li>
          <li>Verifier (RV) - an endpoint that consumes Evidence, Endorsements and Reference Values and produces Attestation Results.</li>
          <li>Relying Party (RRP) - an endpoint that consumes Attestation Results and applies them to an application or usage context.</li>
        </ul>
        <t>OIDC roles are as follows:</t>
        <ul spacing="normal">
          <li>OpenID Provider (OP) - an endpoint that authenticates an End User, obtains authorization, and responds with an ID Token
and (usually) an Access Token.
(a.k.a., an OAuth 2.0 Authorization Server, <xref target="RFC6749"/>).</li>
          <li>Relying Party (RP) / Client - an endpoint that sends a request to an OpenID Provider.</li>
          <li>UserInfo Endpoint (UE) - an endpoint that receives an Access Token and sends Claims about an End User,
also known as the User Agent (UA).</li>
          <li>End User (EU) - a human participant.</li>
        </ul>
        <t>OAuth 2.0 roles are as follows:</t>
        <ul spacing="normal">
          <li>Resource Server (RS) - a service that controls a resource.</li>
        </ul>
      </section>
    </section>
    <section anchor="oidc-sequence">
      <name>OIDC Sequence with Attestation</name>
      <t>OpenID-Connect (OIDC) <xref target="OCC2014"/> defines user authentication protocol and messages based on OAuth 2.0 <xref target="RFC6749"/> authorization
protocol and messages. This section shows an example OIDC protocol sequence with extensions for attestation Evidence and
Attestation Results (AR) exchanges.
The protocol is divided into two phases. A setup phase and an operational phase. The setup phase models protocol initialization
steps that are anticipated but often ignored. An understanding of the initialization steps may be helpful when determining how
various steps in the operational phase are authorized.</t>
      <section anchor="protocol-endpoints">
        <name>Protocol Endpoints</name>
        <t>The example protocol message exchange involves four main endpoints:</t>
        <ol spacing="normal" type="1"><li>Device - a RATS Attester that consists of two sub entities:</li>
        </ol>
        <ul spacing="normal">
          <li>A UserInfo Endpoint (UE) (e.g., browser) that supplies user information for OIDC authentication, and</li>
          <li>A lead Attesting Environment, that collects device attestation Evidence. When using RATS terminology, the device may be
  referred to as the RATS Attester (RA). The RA is technically an OAuth 2.0 Resource Server (RS) that performs attestation
  Evidence collection. The Attester device may consist of multiple components that typically include a root of trust,
  boot code, system software and the browser. The lead Attesting Environment typically seeks to collect Evidence that
  describes all the components, from the root of trust to the browser, that may influence browser behavior.</li>
        </ul>
        <ol spacing="normal" type="1"><li>End User (EU/"Alice") - a native application that can engage the human user directly. This document may refer to the
End User by name, namely: "Alice".</li>
          <li>Relying Party (RP) - an endpoint that seeks UserInfo used to replay user authentication responses for OIDC exchanges,
but also wants Attestation Results that describe the trustworthiness of the UE device. The RP is synonymous with the RATS
Relying Party (RRP).</li>
          <li>OpenID Provider (OP) - an Authorization Server (AS) that implements OIDC.</li>
          <li>Verifier (RV) - a RATS attestation Verifier that processes device Evidence. If the Verifier is combined with the OP,
the Verifier is synonymous with OP.</li>
        </ol>
      </section>
      <section anchor="setup-phase">
        <name>Setup Phase</name>
        <t>The setup phase creates the various identity (‘id-token’) and access (‘access-token’) credentials that are used during
the operational phase to authorize the exchange of the various OIDC protocol messages.</t>
        <section anchor="identity-token-creation">
          <name>Identity Token Creation</name>
          <t>In this example, there is a single end user, “Alice”, that creates an identity token ‘id-token’. The Native App signals
the UE when it is appropriate to create the id-token. For example, the 'id-token' contains: { "sub": "A21CE", "name": "Alice" }.</t>
        </section>
        <section anchor="access-token-creation">
          <name>Attestation Access Token Creation</name>
          <t>The RA exposes an attestation API that invokes the attestation capabilities of the Attester device. An access token,
‘access-token-attest’, is needed to authorize use of the attestation API.</t>
        </section>
        <section anchor="userinfo-token-creation">
          <name>UserInfo Access Token Creation</name>
          <t>The UE exposes a UserInfo API that invokes the user information capabilities of the User Agent. An access token,
‘access-token-uinfo’, is needed to authorize use of the UserInfo API.</t>
        </section>
        <section anchor="evidence-token-creation">
          <name>Evidence Appraisal Access Token Creation</name>
          <t>The RV exposes an API for appraising Evidence. An access token, ‘access-token-appraisal’, is needed to authorize
use of the appraisal API.</t>
        </section>
        <section anchor="register-device">
          <name>Register Device</name>
          <t>The Attester device is registered with the RP client in anticipation of subsequent operational flows.
The registration process is out of scope for this document.</t>
        </section>
        <section anchor="attestation-evidence-payload">
          <name>Attestation Evidence Payload</name>
          <t>The RA produces an Evidence payload that is conveyed to the RV. Some OIDC messages are extended to carry Evidence.</t>
        </section>
        <section anchor="attestation-results-payload">
          <name>Attestation Results Payload</name>
          <t>The RV produces an Attestation Results payload that is conveyed to the RP. Some OIDC messages are extended to carry
Attestation Results.</t>
        </section>
      </section>
      <section anchor="operational-phase">
        <name>Operational Phase</name>
        <t>The operational phase protocol builds on the abstract OIDC protocol in <xref target="OCC2014"/>. The five OIDC steps are described
here for convenience and attestation related steps are described as sub-steps.</t>
        <section anchor="authn-req">
          <name>AuthN Request</name>
          <t>The RP sends an AuthN request to the OP containing the RP’s identity ‘client-id’. Additionally, the RP includes an
attestation scope, e.g., ‘scope=”device-attest”’ that instructs the OP to obtain an attestation from the UE device.
The trigger for sending the AuthN request is out of scope for this document.</t>
          <figure anchor="authn-request-flow">
            <name>AuthN Request Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="448" viewBox="0 0 448 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,96" fill="none" stroke="black"/>
                  <path d="M 440,32 L 440,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 360,32 L 440,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 296,64 L 352,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,96 L 440,96" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="360,64 348,58.4 348,69.6" fill="black" transform="rotate(0,352,64)"/>
                  <g class="text">
                    <text x="44" y="68">RP</text>
                    <text x="136" y="68">(1)</text>
                    <text x="196" y="68">client-id,</text>
                    <text x="264" y="68">scope</text>
                    <text x="396" y="68">OP</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                 +---------+
|         |                                 |         |
|   RP    +--- (1) client-id, scope ------->|   OP    |
|         |                                 |         |
+---------+                                 +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="authn-req-payload">
            <name>AuthN Request Payload</name>
            <t>The following non-normative AuthN Request payload example identifies the OP server location, the RP client identity,
and an attestation scope:</t>
            <artwork><![CDATA[
AuthN_Req = {
    "location": https://op.example.com/authn"
    "client_id": "s6BhdRkqt3",
    "scope": "device-attest"
}
]]></artwork>
          </section>
        </section>
        <section anchor="forwarded-authn-req">
          <name>Forwarded AuthN Request</name>
          <t>The OP forwards the original AuthN request to the UE. The attestation scope instructs the UE to configure the device for attestation.
For example, an internal interface between the UE and RA (a.k.a., Resource Server) might be used to configure a ‘client-id’ nonce that the RA Attesting Environment includes with attestation Evidence.
The UE normally returns a payload containing the ‘client-id’, response type (i.e., resp-type = “code”), and the
authentication result (i.e., authn-proof). However, a successful response is returned on condition of successful
configuration of the attestation scope.
The End User may consent to the disclosure of attestation Evidence using the 'prompt' parameter. An "attestation-consent"
authorization string is supplied as one of the 'prompt' parameters.
* *attestation-consent - The OP (a.k.a., Authorization Server) <bcp14>SHOULD</bcp14> prompt the End User for consent before returning
information to the RP (a.k.a., Client). If it cannot obtain attestation consent, it <bcp14>MUST</bcp14> return an error,
typically 'consent_required'.</t>
          <figure anchor="forwarded-authn-flow">
            <name>Forwarded AuthN Request-Response Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="144" width="464" viewBox="0 0 464 144" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,128" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,128" fill="none" stroke="black"/>
                  <path d="M 376,32 L 376,128" fill="none" stroke="black"/>
                  <path d="M 456,32 L 456,128" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 376,32 L 456,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 312,64 L 368,64" fill="none" stroke="black"/>
                  <path d="M 96,96 L 112,96" fill="none" stroke="black"/>
                  <path d="M 352,96 L 376,96" fill="none" stroke="black"/>
                  <path d="M 8,128 L 88,128" fill="none" stroke="black"/>
                  <path d="M 376,128 L 456,128" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="376,64 364,58.4 364,69.6" fill="black" transform="rotate(0,368,64)"/>
                  <polygon class="arrowhead" points="104,96 92,90.4 92,101.6" fill="black" transform="rotate(180,96,96)"/>
                  <g class="text">
                    <text x="144" y="68">(1.1)</text>
                    <text x="212" y="68">client-id,</text>
                    <text x="280" y="68">scope</text>
                    <text x="44" y="84">OP</text>
                    <text x="412" y="84">UE</text>
                    <text x="144" y="100">(1.2)</text>
                    <text x="212" y="100">client-id,</text>
                    <text x="300" y="100">resp-type,</text>
                    <text x="224" y="116">authn-proof</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                   +---------+
|         |                                   |         |
|         +--- (1.1) client-id, scope ------->|         |
|   OP    |                                   |   UE    |
|         |<-- (1.2) client-id, resp-type, ---+         |
|         |           authn-proof             |         |
+---------+                                   +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="forwarded-authn-payloads">
            <name>Forwarded AuthN Request and Response Payloads</name>
            <t>The forwarded AuthN Request is identical to AuthN Request.
The forwarded AuthN Response payload example identifies the originating RP, scope, response type, and authentication proof:</t>
            <artwork><![CDATA[
AuthN_Rsp = {
    "client_id": "s6BhdRkqt3",
    "scope": "device-attest",
    "resp_type": "code",
    "authn_proof": "<tbd>"
}
]]></artwork>
          </section>
        </section>
        <section anchor="user-authorization">
          <name>User Authorization of AuthN, AuthZ, and Attest</name>
          <t>The OP authenticates the End User (e.g., “Alice”) and obtains authorization. Normally, authorization is limited to
an authentication or authorization context as defined by the legacy OIDC protocol.
But when attestation scope is used, the End User may wish to approve attestation. Attestation normally reveals
Evidence details about the UE device. If those details contain privacy sensitive information,
the End User may wish to opt-out of attestation.
If the Authentication Request contains the 'prompt' parameter with the value 'attestation-consent',
the OP <bcp14>MUST</bcp14> inform the End User that attestation Evidence is about to be disclosed to the RP (a.k.a., Client),
and the End User <bcp14>MUST</bcp14> be given the option to withhold Evidence.</t>
          <figure anchor="user-auth-flow">
            <name>End User Authentication Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="448" viewBox="0 0 448 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,96" fill="none" stroke="black"/>
                  <path d="M 440,32 L 440,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 360,32 L 440,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 320,64 L 352,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,96 L 440,96" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="360,64 348,58.4 348,69.6" fill="black" transform="rotate(0,352,64)"/>
                  <g class="text">
                    <text x="44" y="68">OP</text>
                    <text x="136" y="68">(2)</text>
                    <text x="180" y="68">AuthN,</text>
                    <text x="236" y="68">AuthZ,</text>
                    <text x="292" y="68">Attest</text>
                    <text x="396" y="68">EU</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                 +---------+
|         |                                 |         |
|   OP    +--- (2) AuthN, AuthZ, Attest---->|   EU    |
|         |                                 |         |
+---------+                                 +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="user-authorization-payload">
            <name>End User Authorization Payload</name>
            <t>TODO add example</t>
          </section>
        </section>
        <section anchor="attestation-req-rsp">
          <name>Attestation Request and Response</name>
          <t>If the End User doesn’t opt-out of attestation, the OP requests attestation Evidence from the RA (as a Resource Server).
The OP sends the ‘access-token-attest’ and ‘id-token = “Alice”’ tokens to the RA. The RA collects Evidence according to
the configured attestation scope. For example, if a ‘client-id’ specific nonce was configured, the nonce is included with Evidence.
The Evidence is returned to the OP through the UE, which normally returns the ‘client-id’, ‘access-token’, and ‘id-token’.</t>
          <figure anchor="attest-req-rsp-flow">
            <name>Attestation Request-Response Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="496" viewBox="0 0 496 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,32 L 408,144" fill="none" stroke="black"/>
                  <path d="M 488,32 L 488,144" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 408,32 L 488,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 360,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 96,112 L 112,112" fill="none" stroke="black"/>
                  <path d="M 360,112 L 408,112" fill="none" stroke="black"/>
                  <path d="M 8,144 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,144 L 488,144" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="104,112 92,106.4 92,117.6" fill="black" transform="rotate(180,96,112)"/>
                  <g class="text">
                    <text x="144" y="68">(2.1)</text>
                    <text x="212" y="68">client-id,</text>
                    <text x="308" y="68">access-token</text>
                    <text x="44" y="84">OP</text>
                    <text x="204" y="84">id-token</text>
                    <text x="444" y="84">RA</text>
                    <text x="144" y="116">(2.2)</text>
                    <text x="212" y="116">client-id,</text>
                    <text x="308" y="116">access-token</text>
                    <text x="208" y="132">id-token,</text>
                    <text x="284" y="132">Evidence</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                       +---------+
|         |                                       |         |
|         +--- (2.1) client-id, access-token,---->|         |
|   OP    |          id-token                     |   RA    |
|         |                                       |         |
|         |<-- (2.2) client-id, access-token,-----+         |
|         |          id-token, Evidence           |         |
+---------+                                       +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="attestation-req-rsp-payloads">
            <name>Attestation Request and Response Payloads</name>
            <t>The Attestation Request and Response payload example contains an access_token that authorizes use of the
attestation API of the RA and an id_token that identifies the End User.</t>
            <artwork><![CDATA[
access_token = {
    "iss": "https://jwt-op.example.com",
    "sub": "https://jwt-ra.example.com/24400320",
    "aud": "https://jwt-rp.example.com/s6BhdRkqt3",
    "nbf": 1300815780,
    "exp": 1300819380,
    "claims.example.com/attest-api": true
}
]]></artwork>
            <artwork><![CDATA[
id_token = {
    "iss": "https://jwt-op.example.com",
    "sub": "https://jwt-ra.example.com/24400320",
    "aud": "https://jwt-rp.example.com/s6BhdRkqt3",
    "nbf": 1300815780,
    "exp": 1300819380,
    "name": "Alice"
}
]]></artwork>
            <t>The response payload contains an Evidence value as described by a conceptual message wrapper <xref target="I-D.ftbs-rats-msg-wrap"/>.</t>
            <artwork><![CDATA[
evidence_cmw = [
    "application/eat+jwt",
    "<base64-string containing a JWT>"
]
]]></artwork>
          </section>
        </section>
        <section anchor="appraisal-req-rsp">
          <name>Appraisal Request and Response</name>
          <t>The OP requests appraisal of Evidence by sending the ‘access-token-appraisal’ token and Evidence to the RV.
The token authorizes use of the appraisal API, which when appraisal completes, supplies Attestation Results.
The verification response contains the Attestation Results and ‘access-token’, that the RV sends to the OP.</t>
          <figure anchor="appraisal-req-rsp-flow">
            <name>Appraisal Request-Response Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="496" viewBox="0 0 496 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,32 L 408,144" fill="none" stroke="black"/>
                  <path d="M 488,32 L 488,144" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 408,32 L 488,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 352,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 96,112 L 112,112" fill="none" stroke="black"/>
                  <path d="M 376,112 L 408,112" fill="none" stroke="black"/>
                  <path d="M 8,144 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,144 L 488,144" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="104,112 92,106.4 92,117.6" fill="black" transform="rotate(180,96,112)"/>
                  <g class="text">
                    <text x="144" y="68">(2.3)</text>
                    <text x="224" y="68">access-token,</text>
                    <text x="316" y="68">Evidence</text>
                    <text x="44" y="84">OP</text>
                    <text x="444" y="84">RV</text>
                    <text x="144" y="116">(2.4)</text>
                    <text x="224" y="116">access-token,</text>
                    <text x="328" y="116">Attestation</text>
                    <text x="248" y="132">Results</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                       +---------+
|         |                                       |         |
|         +--- (2.3) access-token, Evidence------>|         |
|   OP    |                                       |   RV    |
|         |                                       |         |
|         |<-- (2.4) access-token, Attestation----+         |
|         |                Results                |         |
+---------+                                       +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="appraisal-req-rsp-payloads">
            <name>Appraisal Request and Response Payloads</name>
            <t>The Appraisal Request payload example contains an access_token that authorizes use of the appraisal API of the RV
and the Evidence to be appraised.</t>
            <artwork><![CDATA[
access_token = {
    "iss": "https://jwt-op.example.com",
    "sub": "https://jwt-rv.example.com",
    "aud": "https://jwt-rp.example.com/s6BhdRkqt3",
    "nbf": 1300815780,
    "exp": 1300819380,
    "claims.example.com/appraisal-api": true
}
]]></artwork>
            <artwork><![CDATA[
evidence_cmw = [
    "application/eat+jwt",
    "<base64-string containing a JWT>"
]
]]></artwork>
            <t>The response payload contains an Attestation Results value as described by a conceptual message wrapper <xref target="I-D.ftbs-rats-msg-wrap"/>.</t>
            <artwork><![CDATA[
attestation_result_cmw = [
    "application/eat+jwt",
    "<base64-string containing a JWT>"
]
]]></artwork>
          </section>
        </section>
        <section anchor="authn-rsp">
          <name>AuthN Response</name>
          <t>The OP sends ‘client-id’, ‘id-token = “Alice”’, ‘access-token-uinfo’, and the Attestation Results to the RP.
The RP processes the Attestation Results to determine if the UE device is trustworthy.
Presumably, if the UE isn’t trustworthy, the protocol is terminated.</t>
          <figure anchor="authn-rsp-flow">
            <name>AuthN Response Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="448" viewBox="0 0 448 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,96" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,32 L 360,96" fill="none" stroke="black"/>
                  <path d="M 440,32 L 440,96" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 360,32 L 440,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 320,64 L 352,64" fill="none" stroke="black"/>
                  <path d="M 8,96 L 88,96" fill="none" stroke="black"/>
                  <path d="M 360,96 L 440,96" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="360,64 348,58.4 348,69.6" fill="black" transform="rotate(0,352,64)"/>
                  <g class="text">
                    <text x="44" y="68">OP</text>
                    <text x="136" y="68">(2)</text>
                    <text x="180" y="68">AuthN,</text>
                    <text x="236" y="68">AuthZ,</text>
                    <text x="292" y="68">Attest</text>
                    <text x="396" y="68">EU</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                 +---------+
|         |                                 |         |
|   OP    +--- (2) AuthN, AuthZ, Attest---->|   EU    |
|         |                                 |         |
+---------+                                 +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="authn-rsp-payload">
            <name>AuthN Response Payload</name>
            <t>TODO add example</t>
          </section>
        </section>
        <section anchor="user-info-req-rsp">
          <name>UserInfo Request and Response</name>
          <t>The UserInfo request is initiated by the RP, who sends ‘client-id’, ‘id-token = “Alice”’,
and ‘access-token-uinfo’ to the UE to collect user identity information.
The UserInfo response is initiated by the UE, who sends ‘client-id’, ‘id-token = “Alice”’,
‘access-token-uinfo’, and the UserInfo payload to the RP to process user claims and complete the OIDC protocol.</t>
          <figure anchor="user-info-flow">
            <name>UserInfo Request-Response Flow</name>
            <artset>
              <artwork type="svg" align="center"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="160" width="496" viewBox="0 0 496 160" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round">
                  <path d="M 8,32 L 8,144" fill="none" stroke="black"/>
                  <path d="M 88,32 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,32 L 408,144" fill="none" stroke="black"/>
                  <path d="M 488,32 L 488,144" fill="none" stroke="black"/>
                  <path d="M 8,32 L 88,32" fill="none" stroke="black"/>
                  <path d="M 408,32 L 488,32" fill="none" stroke="black"/>
                  <path d="M 88,64 L 112,64" fill="none" stroke="black"/>
                  <path d="M 336,64 L 400,64" fill="none" stroke="black"/>
                  <path d="M 96,112 L 112,112" fill="none" stroke="black"/>
                  <path d="M 336,112 L 408,112" fill="none" stroke="black"/>
                  <path d="M 8,144 L 88,144" fill="none" stroke="black"/>
                  <path d="M 408,144 L 488,144" fill="none" stroke="black"/>
                  <polygon class="arrowhead" points="408,64 396,58.4 396,69.6" fill="black" transform="rotate(0,400,64)"/>
                  <polygon class="arrowhead" points="104,112 92,106.4 92,117.6" fill="black" transform="rotate(180,96,112)"/>
                  <g class="text">
                    <text x="136" y="68">(4)</text>
                    <text x="208" y="68">access-token,</text>
                    <text x="300" y="68">id-token</text>
                    <text x="44" y="84">RP</text>
                    <text x="232" y="84">client-id</text>
                    <text x="444" y="84">UE</text>
                    <text x="136" y="116">(5)</text>
                    <text x="208" y="116">access-token,</text>
                    <text x="300" y="116">id-token</text>
                    <text x="212" y="132">client-id,</text>
                    <text x="292" y="132">UserInfo</text>
                  </g>
                </svg>
              </artwork>
              <artwork type="ascii-art" align="center"><![CDATA[
+---------+                                       +---------+
|         |                                       |         |
|         +--- (4) access-token, id-token,------->|         |
|   RP    |             client-id                 |   UE    |
|         |                                       |         |
|         |<-- (5) access-token, id-token,--------+         |
|         |          client-id, UserInfo          |         |
+---------+                                       +---------+
]]></artwork>
            </artset>
          </figure>
          <section anchor="user-info-req-rsp-payloads">
            <name>UserInfo Request and Response Payloads</name>
            <t>TODO add example</t>
          </section>
        </section>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TODO Security</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This document has no IANA actions.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references>
        <name>Normative References</name>
        <reference anchor="OCC2014">
          <front>
            <title>OpenID Connect Core 1.0 incorporating errata set 1</title>
            <author initials="N." surname="Sakimura">
              <organization/>
            </author>
            <date year="2014" month="November"/>
          </front>
        </reference>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references>
        <name>Informative References</name>
        <reference anchor="RFC9334">
          <front>
            <title>Remote ATtestation procedureS (RATS) Architecture</title>
            <author fullname="H. Birkholz" initials="H." surname="Birkholz"/>
            <author fullname="D. Thaler" initials="D." surname="Thaler"/>
            <author fullname="M. Richardson" initials="M." surname="Richardson"/>
            <author fullname="N. Smith" initials="N." surname="Smith"/>
            <author fullname="W. Pan" initials="W." surname="Pan"/>
            <date month="January" year="2023"/>
            <abstract>
              <t>In network protocol exchanges, it is often useful for one end of a communication to know whether the other end is in an intended operating state. This document provides an architectural overview of the entities involved that make such tests possible through the process of generating, conveying, and evaluating evidentiary Claims. It provides a model that is neutral toward processor architectures, the content of Claims, and protocols.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9334"/>
          <seriesInfo name="DOI" value="10.17487/RFC9334"/>
        </reference>
        <reference anchor="RFC6749">
          <front>
            <title>The OAuth 2.0 Authorization Framework</title>
            <author fullname="D. Hardt" initials="D." role="editor" surname="Hardt"/>
            <date month="October" year="2012"/>
            <abstract>
              <t>The OAuth 2.0 authorization framework enables a third-party application to obtain limited access to an HTTP service, either on behalf of a resource owner by orchestrating an approval interaction between the resource owner and the HTTP service, or by allowing the third-party application to obtain access on its own behalf. This specification replaces and obsoletes the OAuth 1.0 protocol described in RFC 5849. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="6749"/>
          <seriesInfo name="DOI" value="10.17487/RFC6749"/>
        </reference>
        <reference anchor="I-D.ftbs-rats-msg-wrap">
          <front>
            <title>RATS Conceptual Messages Wrapper</title>
            <author fullname="Henk Birkholz" initials="H." surname="Birkholz">
              <organization>Fraunhofer SIT</organization>
            </author>
            <author fullname="Ned Smith" initials="N." surname="Smith">
              <organization>Intel</organization>
            </author>
            <author fullname="Thomas Fossati" initials="T." surname="Fossati">
              <organization>arm</organization>
            </author>
            <author fullname="Hannes Tschofenig" initials="H." surname="Tschofenig">
         </author>
            <date day="15" month="June" year="2023"/>
            <abstract>
              <t>   This document defines two encapsulation formats for RATS conceptual
   messages (i.e., evidence, attestation results, endorsements and
   reference values.)

   The first format uses a CBOR or JSON array with two mandatory
   members, one for the type, another for the value, and a third
   optional member complementing the type field that says which kind of
   conceptual message(s) are carried in the value.  The other format
   wraps the value in a CBOR byte string and prepends a CBOR tag to
   convey the type information.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ftbs-rats-msg-wrap-03"/>
        </reference>
      </references>
    </references>
    <?line 451?>

<section numbered="false" anchor="acknowledgements">
      <name>Acknowledgments</name>
      <t>The authors would like to thank the following people for their input:</t>
      <ul spacing="normal">
        <li>Jay Chetty - for review feedback.</li>
      </ul>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
