<?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-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="2023" month="November" day="16"/>

    <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>


  </middle>

  <back>


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

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


    </references>




  </back>

<!-- ##markdown-source:
H4sIAAAAAAAAA6VV23IjNRB911c05mWXyrhsbwiJi2IJcZYN5GLiJBSP8kzb
1qKRZiVNXK6t/Re+hS/jSBo7drE88WRZ01KfPt3nqCgKEVTQPKbeo2eyC3o6
n15NSBn65eZ8Sr/zfNr6VU9UtryVdYyrnFyEYtnq4MtV8aGWTbHmeYOo4lk2
qioGQ4TLgNjRYPSmGA6L4YkQ0rEc05UJ7AwHsV6OUwbh23mtvFfWhE2DM1eX
D+9EKcOYfKiEahxSBtf6MBoMzgajHm5qw8q6saBCEJkEaiKNYk0/Z1DY5loq
PaYq7f/Yge1XLERRFCTnPjhZBiEeVsoTamtrNoEqXijDniTVjBwVLazLPHh2
z+w8BUuywioosBVWrByVspFzpVXYpK8Ah6sUKuAte2RsUIu4hSo9tV6ZZTxM
T1a3Jki3ofOm0V0AzVIuuqriPdtj1DgbbGl1P5dQq6rSKOfrSKmzVVvGKCES
2k+fvrp/d3F6Mhp8/ky+4RLXoKyVXVOpFa71QG0I1PvSqTlH4Pyc9jM4uUsH
nDIQSCpt3QDJXKfobWVdpsEbZOrTzNZMcRISX6pETscfW+U4XxNrlnuVZlYP
OAP5Wuc7avZeLvn/ErbFODobRYwPlhayRL9ig3aoMi30Cv1ufYS0jH+hgm2h
GNtaGavtcvOaDHPlM6CklqadAwz9yZuooP+oEqw10ntSASXaWJBNoft80RpE
gLPgFD/nRhheE5uqscqEPsWGX1gTe5VmCaKtIsw0x5NujuNYc0Kztg5AezeP
s4feUf6l27u0vr/87fHq/nIS17P359fXu4XoImbv7x6vJy+rl5MXdzc3l7eT
fBi7dLAlejfnf+CLNBX17qYPV3e359e9iDIcqE26NEoYPxVdoUHZKEZ6UXEe
y1TZTxfTv/8aHnddHA2HZ5jprqXD747xJ3KWs1mjN91fMLsR6AJLF2+JQwWh
qiC1R6wnDzEYWrHjfmQLas5c1XKDYG/p5ewhamWEtmuOusch3NRoiaBLs9QK
jUy3HEWHicHZIYx1NUbhmTHSMCSz9H3x/VsNq6Hi9O0PIjZ1onxpMSax6bO2
aawLyX3SgOWGJmnv3CYK2s4/cJnUCe5a+GqVAEmc7ebQB/AiXbV1sWS023Ov
PDPEk5yDRvHIVionkMrrficskJUBZRUiW2cp3XynqZJVlV2jgTluAFNroOkB
1FhxWIwBStZ+HJ+L8cFz0dvq4AuVQa348Cx1y7kg5N6lwFruSklCTkBKPCQy
dY1BoEavImxlFrkJ1oyF+GZfn7nIX3mDh2YWYgPwxlDKPC1G357sq3vnF4ei
VZiu1vO//P/LTnAEPZe2yuP9eH9deLlgmmOcTo7RSOggzk4+gXbmRykF5/Yc
nxyfwsmS93vfxvKSRd3uvzJCXCIVEKs64+hcCFdX8YHbd9iEO90xyy9Ck3ID
WjSr3N7DssDC9A7b0d3Zhz2H3rmubYM+xL1z4NhGZUrdQug0t2FFM5TLFytp
AKZ7iKKeI6QnaGI3agcPaV/8A9bEfOm/CAAA

-->

</rfc>

