Начало

Быстрый старт

От заявки до первого входа: что сделать в UNIT ID и что написать в приложении.

1. Подайте заявку

  1. Войдите в UNIT ID и откройте «Разработчикам».
  2. Укажите название и в паре предложений — что делает приложение и зачем ему вход через UNIT. По этому описанию администратор решает, одобрить ли заявку.
  3. Укажите адрес возврата — страницу вашего приложения, куда UNIT ID вернёт человека после входа, например https://myapp.ru/auth/callback. Для разработки можно http://localhost:порт/…. Адрес сверяется символ в символ.
  4. Отметьте нужные права. Чем меньше просите — тем охотнее люди соглашаются.
  5. Если приложение работает целиком в браузере или на телефоне и не может хранить секрет — отметьте «Публичное»: такому приложению секрет не выдаётся, вход защищает PKCE.

2. Получите client_id и секрет

Когда администратор одобрит заявку, на странице приложения появится кнопка «Выпустить секрет». client_id виден всегда, а client_secret показывается один раз — сохраните его в настройках сервера (переменная окружения, хранилище секретов), не в коде и не в браузере. Потеряли — выпустите новый, старый перестанет работать.

3. Подключите вход

Проще всего — библиотекой OpenID Connect: ей достаточно адреса discovery, client_id и секрета, остальное она прочитает сама.

Настройки для любой OIDC-библиотеки
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» и готовый код в «Примерах».

UNIT · UNIT ID · вопросы по интеграции — администратору UNIT