<?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 RFC4648 SYSTEM "https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4648.xml">
]>


<rfc ipr="trust200902" docName="draft-ietf-jmap-webpush-vapid-01" 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="2024" month="March" day="20"/>

    <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="RFC8620"/>). 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="RFC8620"/>, 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;
&RFC4648;


    </references>




  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA6VW23LbNhB9x1dslRe7Y2pkxXVsTqepajmNW19Uy06nb4FI
SEIKAiwAWqPJ5F/6Lf2yHgCUTE7S9qFPokgAe3b3nLPIsox56ZXIafDoBJkl
vZvMrqYkNf10M5nRr2Ixa9x6wEpT3PIqrCstX/pMCr/MPlS8zjZiUWNJ9sRr
WWajY6zlHgvHo/FJNnqZjUeMcSt4TlfaC6uFZ5tVHo9nrllU0jlptN/W2HN1
+fCGFdzn5HzJZG0Rz9vG+fFodD4aD3BS49fG5owyRqQjoinXUij6sVHeFWu8
FhWXKqcyvv9+ld4PS8FYlmXEF85bXnjGHtbSERJrKqE9lWIptXDEqRKIUdLS
2FQEJ+yTsI68IV7iyUuUyq+FtFTwmi+kkn4bvwIcjpLIQOxKR9p4uQyvkKWj
xkm9CpvpnVGN9txuaVLXql1A8xiLrspwzm4b1dZ4Uxg1TClUsiwV0nkRSmpN
2RRhFWMR7cePX92/uTg7HY8+fSJXiwLHIK212VChJI51QK0JpXeFlQsRgIun
+D6B4/twwMk9oUiFqWogWai4epdZG2n0EpGGNDeVoMCEWC9ZIKYVfzTSinRM
yJl3Mk1V7dUMxVcqnVEJ5/hK/N+C7TCOz8cB44OhJS/Qr9CgPapUFjpAvxsX
IK3CX0hglyhoW0ltlFltD0kLUboEKEqlbhYAQ7+LbZDPP2SJqtXcOZIeKZqQ
kIlLu/WiDQqBmnkrxVNqhBYbErqsjdR+SKHhF0aHXkUuQbFlgBl5PG15HGgt
IpqNsQA6uHmcPwyO0i/d3sXn+8tfHq/uL6fhef52cn29f2Dtivnbu8fr6fPT
886Lu5uby9tp2oy31HvFBjeT3/CF65IGd7OHq7vbyfUgoPQ9tXEbqQT6yeAK
NdJGMtyxUiRaxsx+uJj99efxSdvF8fHxOTjdtvT41Qn+hJqlaEarbfsXld0y
dEFwG04JpIJQpefKYa0jBzFoWgsrhqFaUHOqVcW3WOwMPe/to5aaKbMRQffY
hJNqxbHoUq+URCPjKUfBYcLi5BDa2ApUeBKgNAxJr9yQfftawWooO3v9HQtN
nUpXGNAkNH3e1LWxPrpPJFhqaJT23m2CoM3igyiiOlG7Br5aRkAce1seOo+6
cFvuXCwa7W7fgRMC4onOQeOwpWsch8NWWChWApRUiGitpbT8jqziZZlco4Y5
bgFTKaAZAFQe5kQOULxyeRgXeW9cDHY6+EJmUCs+PHHViJQQYu9D4JnvU4lC
jkAKDBIeuyZQQIVeBdhSL1MTjM4Z+7qrz5Tkz2KLQTP3oQGYMRQjz7LxN6dd
de/9oi9aCXY1Tnzm/192giPouTBlovfj/XXm+FLQAnQ6PUEjoYPAnbQD7UxD
KS5O7Tk5PTmDk0Xvd64J6UWLuu1OGcYuEQqIZZVwtC6Eo8sw4LoOG3HHM+Zp
ItQxNqAFs0rt7aeFKszu8Dq4u3C+49B71zWNV33cewcObZS6UA2ETgvj1zRH
uuJizTXAtIMo6DlAegdN7KnWG6SxAqBvY8PshSs6WQq7S/8h5tx+LHofn8f6
QZfw6EskNqi73cvibHgaoTz/f5WoiBLsPOHwaD8mDroD8TDuTCPioFuDw8iK
bWJ+x1xSTye3k8+yefGC7sVKhmtLhNHKOyZx8XwB6TnGZ0Jtu+VSCAS38cgw
m/7tLPAbLerrCfc7DiF1lqer4fv/Fvx7xuY9WLvs834xGAuXRR10Am3l4QJS
hRtOSxNUCPceuIxt74zsbx2Mu/HKCgAA

-->

</rfc>

