Бета

РазработчикамNoir ID на вашем сайте.

Noir ID использует стандартный OpenID Connect. Ваш сайт отправляет людей на готовую страницу входа и получает обратно идентификатор. Пока идёт бета, каждого клиента мы регистрируем сами.

Модель
в шести строках

Стандарт
OpenID Connect
Поток
Authorization Code с PKCE (S256)
Вход
На стороне Noir ID, в первую очередь по ключу доступа
Идентификатор
Попарный, один на клиента
Callback-адреса
Точные URL, без масок
Права доступа
Остаются в вашем продукте

Какой сценарий
у вашего приложения

  • Веб-приложение с сервером

    Ваш сервер выполняет поток с кодом и хранит токены. Браузер держит только защищённую cookie сессии, которая сама по себе ничего не значит.

  • Мобильное или десктопное приложение

    Открывайте вход в системном браузере, никогда не во встроенном WebView, и получайте результат на зарегистрированный callback-адрес.

  • Сервис к сервису

    Машинные клиенты используют поток Client Credentials с собственными короткоживущими токенами.

Четыре шага
до рабочего входа

  1. Зарегистрируйте клиента

    Пришлите нам название приложения и его точные callback-адреса. Вы получите идентификатор клиента (client ID), а если у приложения есть сервер, ещё и секрет.

  2. Отправьте людей на вход

    Перенаправьте на эндпоинт авторизации с вашим client ID, callback-адресом, scope, случайным state и PKCE challenge.

  3. Обработайте callback

    Проверьте state, обменяйте код, передав PKCE verifier, и валидируйте ID-токен: подпись, издателя, аудиторию и срок действия.

  4. Сохраните идентификатор

    Привяжите запись пользователя к идентификатору, который возвращает Noir ID. Для вашего клиента он не меняется, а за его пределами ничего не значит.

Как выглядит запрос

Значения в угловых скобках подставляете вы. Издатель (issuer) находится по адресу https://id.noir.bzh: берите эндпоинты из его discovery-документа, а не прописывайте их в коде.

GET <authorization_endpoint>
  ?response_type=code
  &client_id=<your client id>
  &redirect_uri=https://app.example/callback
  &scope=openid
  &state=<random value>
  &code_challenge=<base64url(sha256(verifier))>
  &code_challenge_method=S256

Чего Noir ID делать не будет

  • Потоки password и implicit
  • Callback-адреса с масками или частичным совпадением
  • Вход, встроенный в вашу страницу или в iframe
  • Открытая регистрация клиентов без проверки
  • Решать, что пользователю можно делать в вашем продукте

Перед запуском

  • Каждый callback-адрес зарегистрирован ровно в том виде, в каком используется
  • State и PKCE проверяются при каждом входе
  • ID-токены валидируются, а не просто декодируются
  • Неудачный вход обрабатывается как неудачный вход, а не как сбой
  • Вы знаете, как перенесёте пользователей, если решите уйти

Хотите подключитьсязаранее?

Расскажите, что вы делаете и какой сценарий используете. Ранние интеграции помогают сформировать первую версию.