Перейти к содержанию

Вход пользователей приложения

Включите вход в публичное приложение и проверьте провайдеры, сессии и события безопасности.

Что это

App Auth управляет пользователями проекта, которые входят в ваш Web или API. Они не становятся участниками организации или команды проекта в Agnostic.

Когда использовать

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

Перед началом

  • Откройте проект, в котором находится приложение.
  • Для изменения настроек нужна роль владельца или администратора организации

либо администратора или разработчика проекта.

  • Подготовьте публичный адрес приложения, если вход будет использоваться в Web.

Как сделать

  1. Откройте Приложения и выберите Авторизация рядом с действием создания.

Этот же раздел доступен с карточки Авторизация на экране Обзор.

  1. Нажмите Включить в верхней части страницы и подтвердите действие. При

отключении авторизации также потребуется подтверждение.

Настройки App Auth общие для всех окружений проекта. При отключении новые регистрации и входы станут недоступны во всём проекте. Если Agent сообщает, что прежнее подтверждение больше не подходит для отключения, попросите подготовить действие заново и подтвердите новую карточку.

  1. Откройте вкладку Интеграция. В блоке Публичный API App Auth скопируйте

Realm ID: он подставляется вместо :realm во все публичные маршруты авторизации. Ниже сразу показан готовый маршрут входа для текущего проекта.

  1. Вход по email и паролю доступен после включения App Auth. Если дополнительно

нужен внешний способ входа, на вкладке Способы входа выберите Google, Yandex, GitHub или OpenID Connect и нажмите Настроить. Параметры провайдера откроются в отдельном окне. Полный callback URL отображается под настроенным способом входа: нажмите Копировать и вставьте адрес в настройки провайдера.

  1. На вкладке Письма настройте тему и текст подтверждения почты и

восстановления пароля.

  1. На вкладке Безопасность укажите разрешённые адреса приложения, срок

сессии и требования к паролю.

  1. На вкладке Пользователи найдите пользователя по имени или email и нажмите

на его имя. Профиль откроется на отдельной странице.

  1. В профиле проверьте статус почты, дату регистрации, связанные аккаунты и

сессии. В таблице сессий каждая строка содержит устройство, IP-адрес, время начала, окончание и статус. Кнопка Завершить относится к сессии в той же строке. На узком экране таблицу можно прокручивать по горизонтали. При необходимости приостановите пользователя, завершите подозрительную сессию или отключите связанную учётную запись. Во время завершения индикатор отображается только у выбранной сессии. Ссылка К пользователям вернёт к списку в выбранной среде.

  1. На вкладке События проверьте успешные и неуспешные входы и ошибки

провайдеров.

Эту базовую настройку можно попросить подготовить у Agent: например, «Включи вход пользователей приложения по email». Он покажет текущие настройки и подготовит карточку подтверждения перед включением, изменением разрешённых адресов или срока сессии. Для email и пароля не нужен OAuth-провайдер. Выключенная или приостановленная авторизация не означает работающий вход.

Настройки App Auth относятся ко всему проекту. Переключение Dev/Live не создаёт отдельные настройки входа: перед подтверждением проверьте влияние на все окружения проекта. После изменения настроек проверьте регистрацию, подтверждение email, вход и отказ при неверном пароле. Сохранённые настройки сами по себе не подтверждают работу этих действий.

В приложении код подтверждения почты, смены адреса или сброса пароля действует один раз: повторная или одновременная отправка не применит его второй раз. После успешного сброса прежние сессии отзываются. Сохранение имени или аватара не меняет назначенные администратором права. Готовые формы и подключение через сервер приложения описаны в Runtime SDK.

Если дополнительному OAuth-провайдеру нужен секрет, задайте его в защищённой форме: не отправляйте секрет в чат.

Способы входа относятся только к App Auth и не появляются среди общих подключений для автоматизаций и сервисов. Перейти к ним можно по ссылке общие подключения на вкладке Способы входа.

Свойства пользователя

В карточке пользователя раздел Свойства пользователя показывает дополнительные данные приложения: ключ, тип и значение. Нажмите Изменить свойства, чтобы добавить, изменить или удалить их. Доступны режимы Поля и JSON. Можно хранить текст, логические значения, числа, объекты, массивы и null. Ключ вводится в верхнем поле, а тип и значение расположены рядом. Для логического значения используйте переключатель: включён — true, выключен — false. На узком экране поля располагаются друг под другом. Логическое false, текст "false", null и отсутствие свойства — разные значения.

Нажмите Проверить изменения: перед сохранением появятся старые и новые значения только изменённых свойств. Подтвердите действие кнопкой Сохранить изменения. Остальные свойства сохранятся. При закрытии окна с несохранёнными правками потребуется подтверждение.

Изменять свойства могут владельцы и администраторы организации, администраторы и разработчики проекта. Для остальных участников они доступны только для чтения. Свойства относятся ко всему App Auth проекта: переключение окружения не создаёт отдельную копию пользовательских данных.

Если другой администратор уже изменил свойства, сохранение будет отклонено: закройте редактор, обновите карточку и повторите правку с актуальными данными. При сетевой ошибке черновик остаётся в окне для повторной попытки.

Приложение само определяет значение этих свойств, в том числе правила доступа. Свойства не назначают роли в организации Agnostic и не подтверждают email. Не храните в них пароли, токены и другие секреты: данные доступны приложению.

Как подключить API

Для браузерного fullstack-приложения используйте адрес опубликованного backend:

https://<адрес backend>/_agnostic/auth

Например, браузер выполняет вход запросом с включённой передачей cookie:

POST https://<адрес backend>/_agnostic/auth/login
Content-Type: application/json

{
  "email": "user@example.com",
  "password": "strongPassword123"
}

Для регистрации замените /login на /register. Для обновления и завершения сессии используйте /refresh и /logout, а текущего пользователя проверяйте через GET /me.

Вход через Google, Yandex, GitHub или OpenID Connect также запускайте через адрес backend. Передайте два URL:

  • callbackUrl — точный адрес возврата провайдера на том же backend, например

https://<адрес backend>/_agnostic/auth/oauth/google/callback?environment=production;

  • returnTo — адрес сайта, который должен открыться после входа, например

https://<адрес frontend>/.

Добавьте полный callbackUrl в список разрешённых callback URL у провайдера. Скопируйте его без изменения пути и параметра окружения: служебные параметры, которые провайдер добавляет при возврате, App Auth обработает самостоятельно. Домен callback должен быть активным адресом backend-сервиса этого проекта, а адрес сайта из returnTo — присутствовать среди разрешённых адресов App Auth на вкладке Безопасность. После успешного входа App Auth установит cookie на backend-домене и вернёт браузер на сайт.

Приложение может дать вошедшему пользователю настройки профиля. Backend/BFF вызывает App Auth от имени текущей сессии:

PATCH /auth/:realm/me
POST  /auth/:realm/me/email-change
POST  /auth/:realm/me/email-change/confirm

Первый маршрут меняет только отображаемое имя и адрес аватара. Email нельзя заменить обычным обновлением профиля: сначала приложение отправляет код на новый адрес, затем пользователь подтверждает его. Код действует один час, используется один раз, а новый адрес должен быть свободен среди пользователей этого App Auth. После подтверждения текущая сессия продолжает работать и сразу возвращает обновлённый профиль.

App Auth установит защищённую cookie для домена выбранного backend. Поэтому следующий запрос к API приложения получит ту же сессию. Браузер не должен вызывать api.agn0.ru напрямую, если приложение затем обращается к backend на другом домене: cookie одного хоста не передаётся другому. Не сохраняйте токены в localStorage, sessionStorage или frontend-коде.

Если приложению нужна собственная политика сессии, используйте backend/BFF: он обращается к публичному App Auth в режиме bearer, сохраняет токены только в своей HttpOnly cookie и возвращает браузеру безопасные данные пользователя.

Что дальше

Публичное приложение сможет использовать настроенный вход. В верхней части раздела отображаются количество пользователей проекта, активных сессий, настроенных способов входа и выбранная среда. На вкладках ниже можно проверить провайдеры, пользователей и последние события безопасности.

В fullstack-приложении браузер отправляет регистрацию, вход, обновление сессии и выход через адрес backend этого же приложения. Системный мост App Auth или собственный BFF сохраняет защищённую cookie на backend-домене и не возвращает токены браузеру. Проверка сессии, прав на объект и обращения к данным также выполняются в backend. Для изменяющих запросов frontend передаёт отдельный CSRF-токен; это не токен сессии. На вкладке Интеграция есть безопасный пример проверки сессии и прав через Runtime SDK. Server runtime token и токены сессии не должны попадать в browser storage.

Участники проекта с доступом только для чтения могут просматривать состояние авторизации, пользователей, способы входа и события, но не могут менять настройки или завершать сессии. Владельцы и администраторы организации, а также администраторы и разработчики проекта могут управлять разделом.

Частые проблемы

ПроблемаЧто сделать
Вход отключенВключите App Auth и сохраните настройки.
API отвечает 404 для маршрута /auth/...Скопируйте актуальный Realm ID на вкладке Интеграция и проверьте, что подставили его вместо :realm.
Браузер сообщает об ошибке CORSДобавьте точный адрес приложения на вкладке Безопасность и сохраните его.
Вход успешен, но следующий запрос сразу возвращает 401Проверьте, что браузер вызывает /_agnostic/auth/login на адресе backend с передачей cookie, а не прямой адрес App Auth на другом домене. Снова сохраните настройки безопасности, чтобы восстановить системный мост у опубликованных сервисов.
После входа через провайдера браузер показывает JSONЗапускайте OAuth через /_agnostic/auth/oauth/<провайдер> на адресе backend. Передайте callback того же backend и разрешённый адрес сайта для возврата.
Провайдер требует настройкиПроверьте адрес возврата и состояние подключения.
Пользователь не может войтиПроверьте статус пользователя приложения и последние события входа.
Сессия выглядит подозрительноЗавершите сессию и попросите пользователя войти снова.
Новый email не сохраняетсяПроверьте, что пользователь ввёл код из письма для нового адреса, код ещё действует, а адрес не занят другим пользователем приложения.
Изменение профиля возвращает 403Передайте CSRF-токен вместе с cookie-сессией. Не подставляйте вместо него токен сессии или Runtime SDK.
Настройки недоступныПопросите администратора или разработчика проекта внести изменения.
Agent просит ввести секретНе вставляйте его в сообщение; откройте предложенную защищённую форму.

Связанные статьи

Пользователи приложения на iPhone

В проекте откройте «Пользователи приложения». Поиск и статус отбирают серверный каталог; «Ещё пользователи» загружает следующую страницу. Профиль читается после его открытия. Realm относится к проекту: выбор окружения не переключает пользователей. App User входит в ваше приложение; Platform User работает в Agnostic, а Runtime Identity — отдельная идентичность программного запроса.

В профиле можно приостановить или активировать пользователя, завершить выбранную сессию и отвязать выбранный провайдер. Доступные действия определяет сервер. Входы и роли команды Agnostic при этом не меняются. Обзор провайдеров отдельно показывает их окружение и наличие настроенного секрета. Callback можно скопировать; полные настройки открываются по ссылке. Значения секретов не показываются.

Для простого свойства выберите ключ и тип, затем «Проверить изменения». Обзор «До / после» показывает только изменяемое свойство. Отсутствующее значение, null, логическое false и строка «false» различаются. Сложные и защищённые свойства недоступны для редактирования. После конфликта ввод сохраняется: закройте редактор и явно выберите «Перечитать и открыть редактор заново», прежде чем подготовить новую запись. При потере ответа проверьте ту же операцию; повторное действие не отправляется автоматически. Идентификатор сохраняется на этом устройстве, а значения свойств остаются только в открытом редакторе.