<?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-00" 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 te 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 servers 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:
H4sIAAAAAAAAA51V23IjNRB911c05mWXyrhsbwiJi2IJcZYN5GLiJBSP8kzb
1qKRZiVNXK6t/Re+hS/jSBo7drG88GRZ01KfPt3nqCgKEVTQPKbeo2eyC3o6
n15NSBn65eZ8Sr/zfNr6VU9UtryVdYyrnFyEYtnq4MtV8aGWTbHmeYOo4lk2
qioGA4TLgNjRYPSmGA6L4YkQ0rEc05UJ7AwHsV6OUwbh23mtvFfWhE2DM1eX
D+9EKcOYfKiEahxSBtf6MBoMzgajHm5qw8q6saBCEJkEaiKNYk0/Z1DY5loq
PaYq7f/Yge1XLERRFCTnPjhZBiEeVsoTamtrNoEqXijDniTVjBwVLazLPHh2
z+w8BUuywioosBVWrByVspFzpVXYpK8Ah6sUKuAte2RsUIu4hSo9tV6ZZTxM
T1a3Jki3ofOm0V0AzVIuuqriPdtj1DgbbGl1P5dQq6rSKOfrSKmzVVvGKCES
2k+fvrp/d3F6Mhp8/ky+4RLXoKyVXVOpFa71QG0I1PvSqTlH4Pyc9jM4uUsH
nDIQSCpt3QDJXKfobWVdpsEbZOrTzNZMcRISX6pETscfW+U4XxNrlnuVZlYP
OAP5Wuc7avZeLnlH2P/jawtxdDaKEB8sLWSJdsX+7EBlVugV2t36iGgZ/0IE
2zoxtbUyVtvl5jUZ5srnBiaxNO0cYOhP3kQB/UeRIK2R3pMKqNDGemwK3aeL
1uABlAWn+Dn3wfCa2FSNVSb0Kfb7wprYqjRK0GwVYaYxnnRjHKeaE5q1dQDa
u3mcPfSO8i/d3qX1/eVvj1f3l5O4nr0/v77eLUQXMXt/93g9eVm9nLy4u7m5
vJ3kw9ilgy3Ruzn/A1+kqah3N324urs9v+5FlOFAbNKlScL0qWgKDcpGMdKL
ivNUpsp+upj+/dfwuOviaDg8w0h3LR1+d4w/kbOczRq96f6C2Y1AF1i6eEuc
KehUBak9Yj15aMHQih33I1sQc+aqlhsEe0svZw9RKyO0XXOUPQ7hpkZLBF2a
pVZoZLrlKBpMDM4GYayrMQrPjImGH5ml74vv32o4DRWnb38QsakT5UuLMYlN
n7VNY11I5pMGLDc0KXtnNlHPdv6ByyROcNfCVqsESOJsN4c+gBfpqq2JJZ/d
nnvlmSGeZBw0ike2UjmBVF73O2GBrAwouxaydY7SzXeaKllV2TQaeOMGMLUG
mh5AjRWHxRigZO3H8bUYH7wWva0OvlAZ1IoPz1K3nAtC7l0KrOWulCTkBKTE
OyJT1xgEavQqwlZmkZtgzViIb/b1mYv8lTd4Z2YhNgBPDKXM02L07cm+und+
cShahelqPf/L/r/sBEfQc2mrPN6P99eFlwumOcbp5BiNhA7i7OQTaGd+k1Jw
bs/xyfEpnCxZv/dtLC9Z1O3+IyPEJVIBsaozju0Dhrur+MDtO2wCni6Z5Reh
Sclbp6Nb5f4e1gUapnfYju7OPuw9aTvbtW3Qh8B3Fhz7qEypWyid5jasaIZ6
+WIlDcB0D1EUdIT0BFHsZu3gIe2LfwBX2OupvwgAAA==

-->

</rfc>

