<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.2 (Ruby 3.0.6) -->


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

<!ENTITY RFC8620 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8620.xml">
<!ENTITY RFC8030 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8030.xml">
<!ENTITY RFC8292 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8292.xml">
<!ENTITY RFC2119 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC8174 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml">
<!ENTITY RFC8262 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8262.xml">
<!ENTITY RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
]>


<rfc ipr="trust200902" docName="draft-gultsch-jmap-webpush-vapid-02" category="std" consensus="true" submissionType="IETF">
  <front>
    <title>Use of VAPID in JMAP WebPush</title>

    <author initials="D." surname="Gultsch" fullname="Daniel Gultsch">
      <organization></organization>
      <address>
        <email>daniel@gultsch.de</email>
      </address>
    </author>

    <date year="2023" month="November" day="23"/>

    <area>Internet</area>
    <workgroup>JMAP</workgroup>
    

    <abstract>


<?line 17?>

<t>This document defines a method for JMAP servers to advertise their capability to authenticate WebPush notifications using the Voluntary Application Server Identification protocol.</t>



    </abstract>



  </front>

  <middle>


<?line 21?>

<section anchor="introduction"><name>Introduction</name>

<t>JMAP <xref target="RFC8620"/> specifies how clients can subscribe to events using a protocol that is compatible to WebPush <xref target="RFC8030"/>. Some push services require that the application server authenticates all push messages using the Voluntary Application Server Identification protocol <xref target="RFC8292"/>. To faciliate that the client (or user agent in WebPush terminology) needs the VAPID public key of the application server to pass it along to the push service when retrieving a new endpoint.</t>

</section>
<section anchor="conventions-used-in-this-document"><name>Conventions Used in This Document</name>

<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED",
"MAY", and "OPTIONAL" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.
These words may also appear in this document in
lower case as plain English words, absent their normative meanings.
<?line -8?></t>

</section>
<section anchor="discovering-support-for-vapid"><name>Discovering Support for VAPID</name>

<t>The JMAP capabilities object is returned as part of the standard JMAP session object (see Section 2 of <xref target="RFC8262"/>). Servers supporting this specification MUST add a property called "urn:ietf:params:jmap:webpush-vapid" to the capabilities object. The value of this property is an object that MUST contain the following information:</t>

<t><list style="symbols">
  <t>applicationServerKey: "String"  <vspace blankLines='1'/>
The P-256 public key that the push service will use to authenticate the application server, encoded in URL-safe base64 representation as defined in <xref target="RFC4648"/>.</t>
</list></t>

</section>
<section anchor="issuing-push-notifications"><name>Issuing Push Notifications</name>

<t>Every time the server sends a push message to a PushSubscription URL it MUST authenticate that POST request using the protocol outlined in <xref target="RFC8292"/>. This includes both StateChange events and PushVerification notifications.</t>

</section>
<section anchor="security-considerations"><name>Security Considerations</name>

<t>The security considerations for JMAP (<xref target="RFC8262"/>, especially Section 8.6 and Section 8.7 of that document), WebPush (<xref target="RFC8030"/>) and VAPID (<xref target="RFC8292"/>) apply to this document.</t>

</section>
<section anchor="iana-considerations"><name>IANA Considerations</name>

<section anchor="registration-of-the-jmap-capability-for-vapid"><name>Registration of the JMAP Capability for VAPID</name>

<t>This specification requests IANA to register the JMAP Capability for VAPID with the following data:</t>

<t>Capability Name: <spanx style="verb">urn:ietf:params:jmap:webpush-vapid</spanx></t>

<t>Specification document: this document</t>

<t>Intended use: common</t>

<t>Change Controller: IETF</t>

</section>
</section>


  </middle>

  <back>


    <references title='Normative References' anchor="sec-normative-references">

&RFC8620;
&RFC8030;
&RFC8292;
&RFC2119;
&RFC8174;
&RFC8262;
&RFC4648;


    </references>




  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA6VW23LbNhB9x1dslRe7Y2ps2XVsTaepajmNW19Uy3anb4HI
lYSUBFgAtEaTyb/0W/plPQAoWZyk7UOfRJEA9uzuOWeRZZnwypc8pN6jYzJz
ehpNrsakNP10M5rQrzybNG7ZE4XJb2UV1hVWzn22aErv8mX2oZJ1tuJZjVXZ
s6xVkR0OsFx6rB0cDo6zo6NscCyEtCyHdKU9W81erBbDGEG4ZlYp55TRfl1j
z9Xlw1uRSz8k5wuhaouQ3jbODw4Pz8PRQjZ+aexQUCaIdAQ1llpxST8mUHjN
lVTlkIr4/vsWbL9gIbIsIzlz3srcC/GwVI6QW1Ox9lTwXGl2JKlixChobmyq
g2P7zNaRNyQLPHmFavklK0u5rOVMlcqv41eAw1EKGfCmeqSNV/PwClk6apzS
i7CZnkzZaC/tmkZ1XbYLaBpj0VURztlso9oab3JT9lMKlSqKEum8CiW1pmjy
sEqIiPbjx6/u316cnQ4OP30iV3OOY5DW0qwoLxWOdUCtCaV3uVUzDsD5Ob5P
4OQ2HHBKTyhSbqoaSGZlXL3JrI10eIxIfZqaiikwIdZL5Yhp+Y9GWU7HhJzl
Tqapqp2aofhlmc6o2Dm54P9bsA3GwfkgYHwwNJc5+hUatEWVykJ76HfjAqRF
+AsVbBIFbSulTWkW633SzIVLgKJa6mYGMPQ7r4OC/iFLVK2WzpHySNGEhExc
ulsvWqEQqJm3ip9TIzSviHVRG6V9n0LDL4wOvYpcgmiLADPyeNzyONCaI5qV
sQDau3mcPvQO0i/d3sXn+8tfHq/uL8fhefpudH29fRDtium7u8fr8cvTy86L
u5uby9tx2oy31Hklejej3/BF6oJ6d5OHq7vb0XUvoPQdtUkbqQT6qeAKNdJG
MtKJghMtY2Y/XEz++vPopO3i4OjoHJxuW3r0+gR/Qs1SNKPLdfsXlV0LdIGl
DacEUkGoysvSYa0jBzFoWrLlfqgW1JxqVck1FjtDL3u7qJUWpVlx0D024aS6
lFh0qRelQiPjKQfBYcLi5BDa2ApUeGZQGoakF64vvn1TwmooO3vznQhNHSuX
G9AkNH3a1LWxPrpPJFhqaJT21m2CoM3sA+dRnahdA18tIiCJvS0PnUddpC02
LhaNdrNvzzFDPNE5aBC2bKRyCqns91thoVgJUFIhorWW0vI7skoWRXKNGua4
BsyyBJoeQA0V+/kQoGTlhmFcDDvjorfRwRcyg1rx4VmWDaeEEHsbAs9ym0oU
cgSSY5DI2DVGAUv0KsBWep6aYPRQiK939ZmS/JnXGDRTHxqAGUMx8iQbfHO6
q+6tX3RFq8CuxvFn/v9lJziAnnNTJHo/3l9nTs6ZZqDT6QkaCR0E7qQdaGca
SnFxas/J6ckZnCx6v3NNSC9a1O3ulBHiEqGAWFUJR+tCOLoIA27XYSPueMY0
TYQ6xga0YFapvd20UIXJHV4Hd2fndxx667qm8WUX99aBQxuVzssGQqeZ8Uua
Il2+WEoNMO0gCnoOkJ6giS3VOoM0VgD0bWyYvXBFpwq2m/QfYs7tx7zz8WWs
7+0SHn2JxAZ111tZnPVPI5SX/68TFVGCjSfsH2zHxN7uQNyPO9OI2NutwX5k
xToxf8dcUk9Ht6PPsnn1iu55ocK1JcJo5R2TuHi5gHQc4zOhtt1yKQSC23hk
mE3/dhb4jRZ19YT7nYSQdpan2+H7/xb8eyGmHVib7IfdYggRLos66ATaGoYL
SBVuOC1NUCHce+Aytr0zir8BN8i4nc0KAAA=

-->

</rfc>

