VK Generic OAuth Proxy
VK использует немного нестандартные практики OAuth:
token_type
не возвращается при полученииaccess_token
email
возвращается только при полученииaccess_token
, получить его черезusers.get
уже не получится- Ответы от
api.vk.com
оборачиваются в объектresponse
, иногда это может быть неудобно
vk-oauth-proxy решает эти проблемы:
- В ответ на запрос
access_token
вместе с ним придёт и полеtoken_type
со значениемBearer
email
, который приходит сaccess_token
запоминается и ассоциируется с ID пользователя, полеemail
с этим значением будет добавлено в ответusers.get
(хранится не на диске, просто кэш в рантайме с TTL – для большинства сценариев подойдёт)- Поля объекта
response
из ответовapi.vk.com
будут разворачиваться в корень ответа (только для методаusers.get
)
Протестировано с версией VK API 5.199
Я не мог нормально подключить ZITADEL к OAuth VK. Потенциально может пригодиться для других SSO-сервисов и OAuth-клиентов.
Конфигурация происходит при помощи переменных окружения среды
ENV | default | Описание |
---|---|---|
VOP_USER_EMAIL_STORE_TTL |
1m |
Время хранения email |
VOP_OAUTH_UPSTREAM_HOST |
https://oauth.vk.com |
URL VK OAuth |
VOP_API_UPSTREAM_HOST |
https://api.vk.com |
URL VK API |
VOP_OAUTH_PROXY_ADDR |
:9090 |
Адрес для запуска прокси OAuth |
VOP_API_PROXY_ADDR |
:9091 |
Адрес для запуска прокси API |
docker run -p 9090:9090 -p 9091:9091 afansv/vk-oauth-proxy:latest