WebPush 프로토콜은 RFC 8030(HTTP Push를 사용한 전달)과 RFC 8291(메시지 암호화)에 의해 정의됩니다.
Web Push는 웹 브라우저에 푸시 알림을 전달하기 위한 표준화된 프로토콜입니다. 웹사이트가 푸시 메시지를 등록하고 수신할 수 있도록 하는 표준 웹 API인 Push API를 사용합니다. Push API는 사용자가 웹사이트를 적극적으로 탐색하지 않을 때도 웹사이트가 사용자의 브라우저로 푸시 메시지를 보낼 수 있도록 합니다.
Web Push를 사용하려면 웹사이트는 먼저 사용자의 브라우저로부터 push subscription을 얻어야 합니다. subscription은 고유한 endpoint URL과 암호화 키로 구성됩니다. endpoint URL은 웹사이트가 사용자의 브라우저에 push 메시지를 보내는 데 사용할 수 있는 URL이며, 암호화 키는 push 메시지를 암호화하고 복호화하는 데 사용됩니다.
웹사이트가 푸시 구독을 획득하면, 엔드포인트 URL에 HTTP 요청을 보내 사용자의 브라우저로 푸시 메시지를 보낼 수 있습니다. 푸시 메시지는 Web Push Protocol Message라는 특수 형식으로 전송되며, 이는 헤더 집합과 페이로드로 구성됩니다. 헤더에는 암호화 키와 메시지의 TTL(time-to-live) 같은 정보가 포함되고, 페이로드에는 메시지의 실제 내용이 포함됩니다.
사용자의 브라우저가 push 메시지를 수신하면, 먼저 암호화 키를 사용하여 메시지를 복호화합니다. 그런 다음 알림 해제 또는 웹사이트 열기와 같이 사용자가 취할 수 있는 추가 작업과 함께 사용자에게 알림을 표시합니다.
푸시 메시지의 보안과 개인정보를 보장하기 위해 Web Push는 종단간 암호화를 사용하며 푸시 구독이 안전한 연결(예: HTTPS)을 통해 획득되도록 요구합니다. 또한 이 프로토콜은 푸시 메시지 발신자를 인증하고 남용을 방지하는 메커니즘(예: 웹사이트가 사용자에게 보낼 수 있는 푸시 메시지 수 제한)을 제공합니다.
WebPush를 지원하는 2개의 구성 요소가 있습니다: