Вход пользователей приложения
Включите вход в публичное приложение и проверьте провайдеры, сессии и события безопасности.
Что это
App Auth управляет пользователями проекта, которые входят в ваш Web или API. Они не становятся участниками организации или команды проекта в Agnostic.
Когда использовать
- Нужно включить регистрацию или вход для пользователей приложения.
- Нужно проверить, какие провайдеры входа настроены.
- Нужно посмотреть сессии, профиль пользователя приложения или события входа.
Перед началом
- Откройте проект, в котором находится приложение.
- Для изменения настроек нужна роль владельца или администратора организации
либо администратора или разработчика проекта.
- Подготовьте публичный адрес приложения, если вход будет использоваться в Web.
Как сделать
- Откройте
Приложенияи выберитеАвторизациярядом с действием создания.
Этот же раздел доступен с карточки Авторизация на экране Обзор.
- Нажмите
Включитьв верхней части страницы и подтвердите действие. При
отключении авторизации также потребуется подтверждение.
Настройки App Auth общие для всех окружений проекта. При отключении новые регистрации и входы станут недоступны во всём проекте. Если Agent сообщает, что прежнее подтверждение больше не подходит для отключения, попросите подготовить действие заново и подтвердите новую карточку.
- Откройте вкладку
Интеграция. В блокеПубличный API App Authскопируйте
Realm ID: он подставляется вместо :realm во все публичные маршруты авторизации. Ниже сразу показан готовый маршрут входа для текущего проекта.
- Вход по email и паролю доступен после включения App Auth. Если дополнительно
нужен внешний способ входа, на вкладке Способы входа выберите Google, Yandex, GitHub или OpenID Connect и нажмите Настроить. Параметры провайдера откроются в отдельном окне. Полный callback URL отображается под настроенным способом входа: нажмите Копировать и вставьте адрес в настройки провайдера.
- На вкладке
Письманастройте тему и текст подтверждения почты и
восстановления пароля.
- На вкладке
Безопасностьукажите разрешённые адреса приложения, срок
сессии и требования к паролю.
- На вкладке
Пользователинайдите пользователя по имени или email и нажмите
на его имя. Профиль откроется на отдельной странице.
- В профиле проверьте статус почты, дату регистрации, связанные аккаунты и
сессии. В таблице сессий каждая строка содержит устройство, IP-адрес, время начала, окончание и статус. Кнопка Завершить относится к сессии в той же строке. На узком экране таблицу можно прокручивать по горизонтали. При необходимости приостановите пользователя, завершите подозрительную сессию или отключите связанную учётную запись. Во время завершения индикатор отображается только у выбранной сессии. Ссылка К пользователям вернёт к списку в выбранной среде.
- На вкладке
Событияпроверьте успешные и неуспешные входы и ошибки
провайдеров.
Эту базовую настройку можно попросить подготовить у 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» различаются. Сложные и защищённые свойства недоступны для редактирования. После конфликта ввод сохраняется: закройте редактор и явно выберите «Перечитать и открыть редактор заново», прежде чем подготовить новую запись. При потере ответа проверьте ту же операцию; повторное действие не отправляется автоматически. Идентификатор сохраняется на этом устройстве, а значения свойств остаются только в открытом редакторе.