Здравствуйте! Спасибо огромное за SHM и за то, что проект продолжает активно развиваться — особенно за улучшение привязки Telegram через виджет в 2.10 и за поле login2. Пользуемся с удовольствием.
Хотел предложить одно направление на будущее, если оно созвучно вашим планам. Речь про внешних OAuth/OIDC-провайдеров. Сейчас в SHM такая интеграция есть только с Telegram (через Login Widget), и у неё, и в целом у идеи добавить Google, есть пара мыслей.
1. Telegram — через OIDC (tap-to-auth без ввода номера)
Текущий Login Widget (POST /telegram/web/auth с uid + bind_to_profile: 1) на мобильных браузерах и там, где юзер не залогинен в web.telegram.org, просит ручной ввод номера телефона. На практике это заметно снижает конверсию привязки TG у пользователей, зашедших в ЛК с телефона.
Telegram не так давно выкатил OIDC-флоу для сайтов, где подтверждение идёт тапом в самом приложении, без номера:
- Authorization:
https://oauth.telegram.org/auth (PKCE, response_type=code)
- Token:
https://oauth.telegram.org/token
- Discovery:
https://oauth.telegram.org/.well-known/openid-configuration
- JWKS:
https://oauth.telegram.org/.well-known/jwks.json
- Setup: @Botfather → Bot Settings → Web Login →
client_id + client_secret
- Scopes:
openid, profile, phone, telegram:bot_access
Было бы здорово, если бы появился эндпоинт, принимающий id_token (JWT), который валидирует подпись по JWKS и iss/aud/exp, достаёт telegram-данные и выполняет ту же логику bind, что и текущий web_auth. Фронту тогда достаточно заменить виджет на OIDC-редирект.
Документация: https://core.telegram.org/bots/telegram-login
2. Google (и по аналогии Yandex / VK / Apple)
Сейчас в SHM нет интеграций с внешними OAuth/OIDC-провайдерами, кроме Telegram. Для пользователей, которые регистрируются по email, привычный «Войти через Google» сильно снижает трение на этапе входа — не нужно помнить пароль, не нужен reset-флоу.
Примерный набросок API, которого хватило бы для ЛК:
- эндпоинт принимает Google
id_token (credential из Google Identity Services),
- валидирует его по Google JWKS (
https://www.googleapis.com/oauth2/v3/certs),
- проверяет
aud = настроенный Google Client ID, iss = accounts.google.com,
- по email ищет пользователя; если есть — выдаёт сессию (как
/user/auth), если нет — опционально создаёт с login=email и случайным паролем,
- параметры (
client_id, allowed_domains, auto_register) — через конфигурацию SHM, чтобы инстансы могли включать/выключать фичу.
По аналогии потом легко добавить Yandex / VK / Apple — эндпоинты очень похожие, отличаются в основном URL JWKS и именами полей.
Документация по Google:
Понимаю, что объём работы тут немаленький и приоритетов хватает и без этого. Если задача не попадёт в ближайшие релизы — это совершенно нормально, никакого давления. Просто хотел оставить идею на радаре.
Спасибо!
Здравствуйте! Спасибо огромное за SHM и за то, что проект продолжает активно развиваться — особенно за улучшение привязки Telegram через виджет в 2.10 и за поле
login2. Пользуемся с удовольствием.Хотел предложить одно направление на будущее, если оно созвучно вашим планам. Речь про внешних OAuth/OIDC-провайдеров. Сейчас в SHM такая интеграция есть только с Telegram (через Login Widget), и у неё, и в целом у идеи добавить Google, есть пара мыслей.
1. Telegram — через OIDC (tap-to-auth без ввода номера)
Текущий Login Widget (
POST /telegram/web/authсuid + bind_to_profile: 1) на мобильных браузерах и там, где юзер не залогинен вweb.telegram.org, просит ручной ввод номера телефона. На практике это заметно снижает конверсию привязки TG у пользователей, зашедших в ЛК с телефона.Telegram не так давно выкатил OIDC-флоу для сайтов, где подтверждение идёт тапом в самом приложении, без номера:
https://oauth.telegram.org/auth(PKCE,response_type=code)https://oauth.telegram.org/tokenhttps://oauth.telegram.org/.well-known/openid-configurationhttps://oauth.telegram.org/.well-known/jwks.jsonclient_id+client_secretopenid,profile,phone,telegram:bot_accessБыло бы здорово, если бы появился эндпоинт, принимающий
id_token(JWT), который валидирует подпись по JWKS иiss/aud/exp, достаёт telegram-данные и выполняет ту же логику bind, что и текущийweb_auth. Фронту тогда достаточно заменить виджет на OIDC-редирект.Документация: https://core.telegram.org/bots/telegram-login
2. Google (и по аналогии Yandex / VK / Apple)
Сейчас в SHM нет интеграций с внешними OAuth/OIDC-провайдерами, кроме Telegram. Для пользователей, которые регистрируются по email, привычный «Войти через Google» сильно снижает трение на этапе входа — не нужно помнить пароль, не нужен reset-флоу.
Примерный набросок API, которого хватило бы для ЛК:
id_token(credential из Google Identity Services),https://www.googleapis.com/oauth2/v3/certs),aud= настроенный Google Client ID,iss=accounts.google.com,/user/auth), если нет — опционально создаёт сlogin=emailи случайным паролем,client_id,allowed_domains,auto_register) — через конфигурацию SHM, чтобы инстансы могли включать/выключать фичу.По аналогии потом легко добавить Yandex / VK / Apple — эндпоинты очень похожие, отличаются в основном URL JWKS и именами полей.
Документация по Google:
Понимаю, что объём работы тут немаленький и приоритетов хватает и без этого. Если задача не попадёт в ближайшие релизы — это совершенно нормально, никакого давления. Просто хотел оставить идею на радаре.
Спасибо!