
Каждая новая форма регистрации просит у людей ещё один пароль, а каждый хранимый вами пароль - это ещё одна вещь, которую нужно защищать. Login with Posty5 позволяет входить на ваш сайт или в приложение с аккаунтом Posty5, который у человека уже есть, - так же, как он выбирает Sign in with Google.
В этой статье рассказано, что видят ваши пользователи, что получаете вы как разработчик, и описаны четыре шага подключения. Статья входит в описание платформы для разработчиков Posty5 из руководства по API-ключам и SDK.
Что такое Login with Posty5
Posty5 теперь является провайдером OAuth 2.0 и OpenID Connect. Вы регистрируете приложение в Posty5 Studio, отправляете пользователей на Posty5 для входа и получаете подписанный ID-токен, который сообщает вашему серверу, кто это. Ваш сайт никогда не видит их пароль от Posty5.
Поскольку всё построено по стандарту, вход работает с пакетами Posty5 для Node.js и Angular и с любой сертифицированной библиотекой OpenID Connect - для ASP.NET Core, Python, PHP или Java. Регистрация приложений и вход пользователей не расходуют кредиты ни на одном тарифе.
Что видят ваши пользователи
- Кнопку Login with Posty5 или Continue with Posty5 на вашей странице входа.
- Собственную страницу входа Posty5, если они ещё не вошли, - пароль вводится только на posty5.com.
- Экран согласия с названием, логотипом и сайтом вашего приложения, политикой конфиденциальности и условиями, по строке на каждый запрашиваемый вами вид данных и кнопками Allow и Cancel.
- Их выбор запоминается: следующий вход проходит сразу. Отозвать доступ вашего приложения можно в любой момент в разделе «Аккаунт», затем Connected apps.
Весь путь глазами пользователя описан в статье Что такое Login with Posty5 и в безопасности ли мои данные? - на неё можно сослаться со своей страницы входа.
Что получает разработчик
- Стандартный OpenID Connect - authorization code flow с обязательным PKCE при каждом входе и discovery-документ, по которому большинство библиотек настраиваются сами.
- Подписанные ID-токены (RS256) с именем пользователя, фото, email и признаком подтверждения email - только для scopes, которые разрешил пользователь.
- Отдельный идентификатор пользователя для вашего приложения.
subпостоянен для вашего приложения и отличается в приложениях других разработчиков, поэтому приложения не могут сопоставлять пользователей между собой. - @posty5/oauth для бэкендов на Node.js - с подписанными ссылками для входа, которым не нужно хранилище сессий, и @posty5/oauth-angular - настраиваемая кнопка Continue with Posty5 для Angular.
- Вход из браузера для приложений без бэкенда - включается для каждого приложения отдельно и принимается только с указанных вами origins сайта.
- Вкладка Users для каждого приложения в Posty5 Studio и API-ключ, добавленный к приложению, который читает тот же список с вашего сервера.
Подключение за четыре шага
- В Posty5 Studio откройте Developers Kit, затем OAuth apps, и выберите Register app. Укажите название, логотип и ссылки, которые увидят пользователи, а адрес вашего callback - как redirect URI.
- Скопируйте client ID и client secret в конфигурацию сервера. Secret показывается только один раз; позже его можно перевыпустить.
- Установите @posty5/oauth и добавьте два маршрута: один создаёт ссылку для входа и отправляет пользователя на Posty5, второй - ваш callback, который проверяет результат.
- Разместите кнопку Login with Posty5 на странице входа, один раз войдите сами и привяжите записи пользователей к полученному
sub.
const link = await posty5.createLoginLink({ returnTo: "/account" });
res.cookie("p5_binding", link.binding, { httpOnly: true, secure: true, sameSite: "lax" });
res.redirect(link.url);
// on your redirect URI
const { claims, returnTo } = await posty5.handleLoginCallback(req.query, { binding: req.cookies.p5_binding });Ссылка для входа несёт PKCE verifier, nonce и адрес возврата внутри запечатанного state, поэтому серверу ничего не нужно хранить между двумя запросами, а cookie привязывает ссылку к браузеру, который её запросил.
Зарегистрируйте первое OAuth-приложение
Создайте приложение в Posty5 Studio, скопируйте его учётные данные и проверьте вход на своём сайте.
Выберите способ интеграции
- Сайт с бэкендом на Node.js - используйте @posty5/oauth. Client secret остаётся на вашем сервере.
- Приложение на Angular - используйте кнопку из @posty5/oauth-angular, а вход пусть выполняет ваш бэкенд. Подробнее - как добавить кнопку Continue with Posty5 в Angular.
- Статическое приложение без бэкенда - включите для приложения вход из браузера, укажите origins сайта и используйте режим browser пакета для Angular или любой клиент OpenID Connect с поддержкой PKCE.
- Любой другой язык - направьте свою библиотеку OpenID Connect на https://api.posty5.com, указав client ID и secret.
Ограничения, о которых стоит знать заранее
- Refresh-токенов нет. Access-токен действует 1 час, поэтому после входа ведите собственную сессию.
- Тихий вход (prompt=none) не поддерживается. Принудительно запросить повторный вход можно через prompt=login или max_age.
- Login with Posty5 передаёт только данные личности - имя, фото и email. Он не даёт вашему приложению доступа к контенту пользователя в Posty5.
- Один аккаунт может зарегистрировать до 20 OAuth-приложений, у каждого - до 10 точных redirect URI.
Частые вопросы
Расходует ли Login with Posty5 кредиты?
Нет. Регистрация OAuth-приложений и вход пользователей не расходуют кредиты ни на одном тарифе.
Какие данные может получить моё приложение?
Только то, что разрешил пользователь: всегда - идентификатор пользователя для вашего приложения, со scope profile - имя и фото профиля, со scope email - адрес email и признак его подтверждения.
Можно ли обойтись без бэкенда?
Да. Включите для приложения вход из браузера и укажите origins своего сайта. Тогда браузер обменивает код через PKCE без client secret. Если бэкенд у вас есть, вход всё же лучше выполнять на нём.
Почему в другом моём приложении идентификатор пользователя другой?
sub попарный (pairwise): он зависит от хоста первого redirect URI каждого приложения, поэтому приложения разных разработчиков не могут сопоставлять пользователей. Приложения, зарегистрированные с одним хостом, получают одно и то же значение.
Можно ли увидеть, кто вошёл в моё приложение?
Да. У каждого приложения в Posty5 Studio есть вкладка Users, а API-ключ, добавленный к приложению, читает тот же список с вашего сервера - только с теми данными, которыми поделился каждый пользователь.
Что происходит, когда пользователь отзывает доступ?
Ваши access-токены для этого пользователя перестают работать, он исчезает из списка Users, а при следующем входе снова увидит экран согласия. Его аккаунт на вашем сайте это не затрагивает.



