VK Generic OAuth Proxy
VK использует немного нестандартные практики OAuth:
token_typeне возвращается при полученииaccess_tokenemailвозвращается только при получении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