Быстрый старт
От заявки до первого входа: что сделать в UNIT ID и что написать в приложении.
1. Подайте заявку
- Войдите в UNIT ID и откройте «Разработчикам».
- Укажите название и в паре предложений — что делает приложение и зачем ему вход через UNIT. По этому описанию администратор решает, одобрить ли заявку.
- Укажите адрес возврата — страницу вашего приложения, куда UNIT ID вернёт человека после входа, например
https://myapp.ru/auth/callback. Для разработки можноhttp://localhost:порт/…. Адрес сверяется символ в символ. - Отметьте нужные права. Чем меньше просите — тем охотнее люди соглашаются.
- Если приложение работает целиком в браузере или на телефоне и не может хранить секрет — отметьте «Публичное»: такому приложению секрет не выдаётся, вход защищает PKCE.
2. Получите client_id и секрет
Когда администратор одобрит заявку, на странице приложения появится кнопка «Выпустить секрет». client_id виден всегда, а client_secret показывается один раз — сохраните его в настройках сервера (переменная окружения, хранилище секретов), не в коде и не в браузере. Потеряли — выпустите новый, старый перестанет работать.
3. Подключите вход
Проще всего — библиотекой OpenID Connect: ей достаточно адреса discovery, client_id и секрета, остальное она прочитает сама.
issuer / server_metadata_url: https://auth.labunit.ru/.well-known/openid-configuration
client_id: unit-xxxxxxxxxxxxxxxx
client_secret: •••••••• # у публичного приложения — нет
redirect_uri: https://myapp.ru/auth/callback
scope: openid profile email
pkce: S256
Без библиотеки вход — это два запроса. Отправьте человека на авторизацию:
https://auth.labunit.ru/oauth/authorize
?client_id=unit-xxxxxxxxxxxxxxxx
&response_type=code
&redirect_uri=https%3A%2F%2Fmyapp.ru%2Fauth%2Fcallback
&scope=openid%20profile%20email
&state=СЛУЧАЙНАЯ_СТРОКА
&code_challenge=BASE64URL(SHA256(verifier))
&code_challenge_method=S256
Он вернётся на redirect_uri с параметрами code и state. Проверьте state и обменяйте код на токены с вашего сервера:
curl -X POST https://auth.labunit.ru/oauth/token \
-u "unit-xxxxxxxxxxxxxxxx:CLIENT_SECRET" \
-d grant_type=authorization_code \
-d code=ПОЛУЧЕННЫЙ_КОД \
-d redirect_uri=https://myapp.ru/auth/callback \
-d code_verifier=ВАШ_VERIFIER
В ответе — access_token и id_token. Узнайте, кто вошёл:
curl https://auth.labunit.ru/oauth/userinfo -H "Authorization: Bearer ACCESS_TOKEN"
{"sub": "a-7f3k2m", "name": "Анна Смирнова", "preferred_username": "anna",
"email": "anna@labunit.ru", "email_verified": true,
"unit_roles": ["student"], "unit_tags": ["школа", "ученик"]}
sub — он постоянный. Почту и имя человек может сменить.4. Кнопка входа
Подпишите кнопку «Войти через UNIT ID». Логотип UNIT можно взять по адресу https://auth.labunit.ru/static/logo.png. Дальше — подробно о каждом шаге в разделе «Вход через UNIT ID» и готовый код в «Примерах».