<?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-ietf-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="2024" month="February" day="12"/>

    <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:
H4sIAAAAAAAAA6VW23LbNhB9x1dslRe7Y2pk1XVsTaepajmJW19Uy06nb4FI
SEJKAiwAWqPJ5F/6Lf2yngUoWZyk7UOfRJEA9uzuOWeRZZkIOpRqRL1Hr8gu
6N14ejUhbeinm/GUflXzaeNXPVHY/FZWvK5wchEyrcIi+1DJOlureY0l2ZOs
dZENBlgrAxYOB8OTbDDMjodCSKfkiK5MUM6oINbLUTxe+GZeae+1NWFTY8/V
5cNrkcswIh8KoWuHeME1PgwHg/PBsIeTmrCybiQoE0QmIppIo1VJb5oy+HyF
16qSuhxREd//sEzv+4USIssyknMfnMyDEA8r7QmJNZUygQq10EZ5klQpxCho
YV0qglfuSTlPwZIs8BQ0ShVWSjvKZS3nutRhE78CHI7SyEBtS0fGBr3gV8jS
U+O1WfJmemfLxgTpNjSu67JdQLMYi64KPme7jWpng81t2U8pVLooSqTzgkvq
bNHkvEqIiPbjx6/uX1+cnQ4Hnz6Rr1WOY5DWyq4pLzWO9UBtCKX3udNzxcDV
U3yfwMldOOCUgVCk3FY1kMzLuHqbWRtp8A0i9WlmK0XMhFgvnSOmU3802ql0
DOcs9zJNVe3UDMUvy3RGpbyXS/V/C7bFODwfMsYHSwuZo1/coB2qVBY6QL8b
z5CW/BcS2CYK2lba2NIuN4dklCp8AhSlUjdzgKHf1Ybl8w9Zomq19J50QIqW
E7Jx6X69aI1CoGbBafWUGmHUmpQpaqtN6BM3/MIa7lXkEhRbMMzI40nLY6a1
imjW1gFo7+Zx9tA7Sr90exef7y9/eby6v5zw8+zt+Pp69yDaFbO3d4/Xk+en
550Xdzc3l7eTtBlvqfNK9G7Gv+GLNAX17qYPV3e34+seowwdtUkXqQT6aXaF
GmkjGelFoRItY2Y/Xkz/+vP4pO3i8Pj4HJxuW3r88gR/uGYpmjXlpv2Lym4E
uqCk41OYVBCqDrL0WOvJQwyGVsqpPlcLak61quQGi72l571d1NqI0q4V6x6b
cFJdSiy6NMtSo5HxlCN2GF6cHMJYV4EKTwqUhiGZpe+L716VsBrKzl59L7ip
E+1zC5pw02dNXVsXovtEgqWGRmnv3IYFbecfVB7Vido18NUiApLY2/LQB9RF
umLrYtFot/sOvFIQT3QOGvKWrVROIZXDfissFCsBSipEtNZSWn5HVsmiSK5R
wxw3gFmWQNMDqBHPiRFAycqPeFyMOuOit9XBFzKDWvHhSZaNSgkh9i4EnuUu
lSjkCCTHIJGxawoFLNErhq3NIjXBmpEQX+/rMyX5s9pg0MwCNwAzhmLkaTb8
9nRf3Tu/6IpWg12NV5/5/5ed4Ah6zm2R6P14f515uVA0B51OT9BI6IC5k3ag
nWkoxcWpPSenJ2dwsuj93jecXrSo2/0pI8QlQgGxrhKO1oVwdMEDbt9hI+54
xixNhDrGBjQ2q9TeblqowvQOr9ndlQ97Dr1zXduEsot758DcRm3ysoHQaW7D
imZIV12spAGYdhCxnhnSO2hiR7XOII0VAH0bx7MXruh1odw2/YeYc/sx73x8
HusH+4RHXyKxQd3NThZn/dMI5fn/y0RFlGDrCYdHuzFxsD8QD+PONCIO9mtw
GFmxSczfM5fU0/Ht+LNsXryge7XUfG2JMFp5xyQuni8gHcf4TKhtt3wKgeAu
Hsmz6d/OAr/Roq6ecL+TENLe8nQ1fP/fgn8vxKwDa5v9qFsMIfiyaFgn0NaI
LyAV33BamqBCuPfAZVx7ZxR/A4XVX+zKCgAA

-->

</rfc>

