Извините, что это немного поздно.
Я не очень хорошо знаком с Ruby, поэтому не могу предложить примеры кода, что делать, но могу попытаться описать процесс VAPID. (Кроме того, мои извинения, если я буду вдаваться в ненужные подробности, так как я полагаю, что другие могут наткнуться на это.)
Короче говоря, VAPID — это веб-токен Javascript (JWT). Вы создаете пару ключей ECDSA, используя свой любимый метод генерации ECDSA специально для VAPID.
e.g.
openssl ecparam -name prime256v1 -genkey -noout -out vapid_private.pem
openssl ec -in vapid_private.pem -pubout -out vapid_public.pem
«PEM» — это форматированный файл, который включает стандартную строку заголовка, строку нижнего колонтитула и набор длинных строк дерьма. (Не уверен, что это технический термин для них, но да, я собираюсь пойти с этим.) Эти длинные строки дерьма представляют собой Base64-представления ключевых данных, сохраненных в определенных форматах.
Честно говоря, я НАСТОЯТЕЛЬНО рекомендую использовать библиотеку, где и когда это возможно. На jwt.io есть несколько библиотек Ruby, которые вы можете использовать, а также библиотеки для других языков. Что касается заголовка «Крипто-Ключ:», есть немного хороших новостей/других новостей.
- Вы можете просто взять длинные строки дерьма из вашего файла vapid-public.pem, сложить их вместе и указать как ключ 'p256ecdsa='.
- Протокол VAPID скоро изменится https://tools.ietf.org/html/draft-ietf-webpush-vapid-02
Это изменение эффективно избавляет от компонента Crypto-Key p256ecdsa. Вместо этого ключ авторизации становится:
Авторизация: vapid t=JWT, содержащий информацию VAPID,k=Открытый ключ VAPID
e.g.
vapid t=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJtYWlsdG86d2VicHVzaF9vcHNAY2F0ZmFjdHMuZXhhbXBsZS5jb20iLCJleHAiOjE0ODc0NDM3MTR9.mlLOWYMt-6aM3NB6b6_Msf8LqRKCuHd1Vfdp_fuJ3eqsQoID8lit305hIfNubTbvfACucuCygF3qB4scDbuHvg,k=EJwJZq_GN8jJbo1GGpyU70hmP2hbWAUpQFKDByKB81yldJ9GTklBM5xqEwuPM7VuQcyiLDhvovthPIXx-gsQRQ
Я неоднозначного мнения об этом. Это снижает потребность в отдельном заголовке, но также сокращает объем информации, которую вы можете вставить в свои претензии, прежде чем у вас закончится место в заголовке.
person
JR Conlin
schedule
17.02.2017