Управление OpenID Connect-приложениями Avanpost FAM


Avanpost FAM реализует возможность управления OIDC-приложениями, предоставляя для приложений и систем набор HTTP(S)-методов в соответствии с протоколами OAuth 2.0 и OpenID Connect.

Добавление OIDC-приложения

Первичная настройка OpenID Connect-приложения осуществляется при добавлении нового приложения. Для этого требуется нажать кнопку "Добавить приложение" сервиса "Приложения" и перейти на вкладку добавления приложения.

Шаг 1. Основные настройки

На данном шаге продукт предлагает ввести следующие параметры.

Название параметраОписание параметра
НаименованиеНазвание приложения
Тип

Типы механизма интеграции приложения:

  • OAuth/OpenID Connect;
  • SAML;
  • RADIUS;
  • Reverse Proxy;
  • Agent;
  • Windows Logon;
  • Linux Logon;
  • LDAP Proxy;
  • Exchange ActiveSync.

Для настройки OIDC-приложения выбрать опцию "OAuth/OpenID Connect"

Дополнительные опции

Чекбокс "Показывать приложение пользователям":

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

Для перехода к следующему шагу требуется нажать "Далее" после установки параметров. Для отказа от создания приложения следует нажать "Отмена". 

Шаг 2. Настройки интеграции

На данном шаге продукт предлагает ввести следующие параметры.

Название параметраОписание параметра
SecretПроизвольный секрет, который будет использоваться для подключения к приложению.
Redirect URIsURL-адрес, на который пользователь будет перенаправлен после успешной аутентификации.
Base URLURL-адрес, на который пользователь будет перенаправляться при переходе из личного кабинета.
LogoutURL-адрес, на который пользователь будет перенаправлен после выхода из приложения.
Форма подтверждения перехода

Переключатель "Форма подтверждения перехода":

  • при включенном переключателе пользователю после завершения сессии выводится форма подтверждения перехода перед перенаправлением на настроенный URL-адрес;
  • при выключенном переключателе форма подтверждения перехода не выводится.

Для перехода к следующему шагу требуется нажать "Далее" после установки параметров, для отказа от создания приложения - "Отмена", для возврата к предыдущему шагу - "Назад".

Шаг 3. Настройки аутентификации

На данном шаге требуется настроить сценарий аутентификации приложения.

Avanpost FAM предлагает следующие вариант:

  • создать новый сценарий аутентификации для данного приложения;
  • выбрать существующий сценарий аутентификации.

Для установки существующего сценария аутентификации необходимо выбрать один из сценариев в выпадающем списке поля "Выберите процесс аутентификации или создайте новый". Шаги аутентификации, настроенные для выбранного сценария, отобразятся в поле "Шаги" без возможности редактирования.

Для установки нового сценария аутентификации следует выбрать "Новый процесс аутентификации" в выпадающем списке поля "Выберите процесс аутентификации или создайте новый" и настроить количество шагов аутентификации и использующиеся на них факторы.

Путем включения/выключения переключателей есть возможность подключить/отключить для OIDC-приложения следующие факторы:

  • Факторы:
    • Идентификация пользователя;
    • Внешний провайдер (доступно при установке переключателя "Идентификация пользователя");
    • Script;
    • Вход по QR-коду;
    • Password;
    • TOTP;
    • Avanpost Authenticator;
    • OTP via Email;
    • SMS;
    • Telegram;
    • Сертификат;
    • Hardware (доступен для второго и последующих шагов);
    • IP-адрес как фактор – ввести диапазон IP-адресов (доступен для второго и последующих шагов);
  • Окружение:
    • Kerberos.

Для добавления второго и последующего шагов требуется нажать "Добавить шаг".

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

После создания приложения новому сценарию аутентификации присваивается наименование созданного приложения. Изменение сценария можно осуществить на вкладке "Настройка процессов аутентификации" режима "Сервис"

Для перехода к следующему шагу после настройки сценария требуется нажать "Далее" после установки параметров, для отказа от создания приложения - "Отмена", для возврата к предыдущему шагу - "Назад".

Некоторые внешние приложения автоматически создают пользователей на после первой аутентификации посредством Avanpost FAM. Данное поведение зависит непосредственно от клиентских приложений и на стороне Avanpost FAM не настраивается.

Шаг 4. Завершение

На данном шаге доступен чекбокс "Сделать приложение активным":

  • при установленном флажке приложение включается сразу после создания;
  • при выключенном флажке приложение выключено после создания: для включения потребуется нажать в профиле приложения.

Для сохранения приложения требуется нажать "Сохранить", для отказа от создания приложения - "Отмена", для возврата к предыдущему шагу - "Назад".

Настройка OIDC-приложения

Настройка созданного OIDC-приложения доступна в его профиле (графическое обозначение  в реестре приложений). В профиле осуществляется управление параметрами, общими для всех приложений (функционал профиля приложения описан в разделе Управление приложениями). Также в профиле осуществляется управление специфическими параметрами OIDC-приложений во вкладках "Настройки", "Модель доступа", "Scopes", "Сертификаты".

Вкладка "Настройки"

Вкладка позволяет осуществлять редактировать настраиваемые атрибуты OIDC-приложений и содержит следующие разделы:

  • Настройки интеграции; 
  • Смена секрета; 
  • Настройки безопасности;
  • Настройки регистрации.

Для внесения изменений в параметры того или иного раздела необходимо нажать в соответствующем разделе. Для сохранения изменений следует нажать "Сохранить" в соответствующем разделе, для отмены изменений - "Отмена".

Вкладка "Настройки" позволяет просматривать и управлять следующими настраиваемыми атрибутами.

Название параметраОписание параметра
Настройки интеграции
Client ID

Уникальный идентификатор приложения (не доступен для изменения)

Чекбокс "Публичный":

  • при активном флажке запрещается программная передача учетных данных (логина и пароля) напрямую от клиента к серверу для входа;
  • при выключенном флажке в качестве идентификатора приложения передается только Client ID.
ID synonymСиноним идентификатора приложения.
Base URLURL-адрес, на который пользователь будет перенаправлен при переходе из личного кабинета.
Redirect URIs

URL-адрес, на который пользователь будет перенаправлен после успешной аутентификации. Допускается указать несколько URL-адресов через пробел.

Backchannel-logout URI

URL-адрес, на который отправляется запрос для централизованного завершения сессии. Используется для реализации выхода пользователя без перенаправления в браузере (серверный выход). Позволяет провайдеру идентификации (IdP) уведомить клиентское приложение о том, что пользователь вышел из системы, чтобы приложение завершило сессию.

Отправлять из SelfService

Чекбокс "Отправлять из SelfService":

  • при включенном флажке механизм Logout проксируется через FAM SelfService (для случаев, когда отсутствует сетевое подключение между FAM Server и интегрируемым OIDC-приложением);
  • при выключенном флажке механизм Logout работает только при наличии сетевого подключения между FAM Server и интегрируемым OIDC-приложением.
Post logout redirect URIsURL-адрес, на который пользователь будет перенаправлен после централизованного завершения сессии.
Форма подтверждения перехода

Переключатель "Форма подтверждения перехода":

  • при включенном переключателе пользователю после завершения сессии выводится форма подтверждения перехода перед перенаправлением на настроенный URL-адрес;
  • при выключенном переключателе форма подтверждения перехода не выводится.
Audience

Параметр JWT, указывающий, для какого ресурса или сервиса предназначен токен. Avanpost FAM проверяет, что значение в токене совпадает с ожидаемым зачением Audience, чтобы исключить использование токена в другом сервисе. Обычно используется Client ID или URL ресурса, для которого выпускается токен. 

Обязательно заполнять, если для параметра Client assertion type выбрано значение client_secret_jwt или private_key_jwt. Для значения client_secret_basic заполнение обычно не требуется.

Audience type

Тип параметра Audience. Выбрать из следующих вариантов:

  • Строка - Одно значение: при использовании токена JWT для одного ресурса (одного приложения или API);
  • Массив - Несколько значений: если планируется использовать JWT для нескольких ресурсов (например, микросервисы внутри одной системы).
Client assertion type

Метод аутентификации клиента, с помощью которого клиент подтверждает свою подлинность при обмене кодов на токены:

  • client_secret_basic - Клиенты, получившие значение client_secret от Сервера авторизации, проходят аутентификацию на Сервере авторизации, используя базовую схему HTTP-аутентификации (HTTP Basic Authentication): client_secret передается в заголовке HTTP-запроса (рекомендуется использовать для приложений с защищенным backend, где client_secret можно хранить безопасно);
  • client_secret_jwt - Клиенты, получившие значение client_secret от Сервера авторизации, создают токен JWT и подписывают его своим client_secret, используя алгоритм HMAC SHA, а затем направляют подписанный JWT в FAM для прохождения аутентификации (более безопасный способ в сравнении с HTTP Basic Authentication); 
  • private_key_jwt - клиент формирует и подписывает JWT своей асимметричной парой ключей (private/public). Рекомендуется использовать для повышения безопасности в случаях, когда нельзя хранить общий секрет (например, в распределенных приложениях).
Алгоритм подписи секрета

Выбор алгоритма подписи секрета из вариантов (параметр появляется, если параметр Client assertion type настроен как client_secret_jwt или private_key_jwt):

  • RS256;
  • RS384:
  • RS512;
  • ES256;
  • ES384:
  • ES512;
  • PS384:
  • PS512.
JWKs URI

URL-адрес, предоставленный доверенной стороной, с которого возвращается JSON Web Key при валидации JSON Web Token (появляется, если параметр Client assertion type настроен как private_key_jwt).

Allowed grant types

Разрешенные приложению Grant Types, т.е. методы, с помощью которых приложение получает Access token и с помощью которых приложению предоставляется ограниченный доступ к данным Avanpost FAM. Доступны следующие Grant Types:

  • Authorization code - Access token получается после предоставления клиентом кода авторизации. После перенаправления пользователя к клиенту через Redirect URIs приложение получит код авторизации из URL-адреса и использует его, чтобы запросить Access token.
  • Implicit - Упрощенный вариант для приложений, где Access token предоставляется немедленно без дополнительного шага обмена кода авторизации на Access token.
  • Hybrid - Комбинированный метод на базе Authorization code grant type и Implicit grant type. ID token передается через канал браузера и содержит подписанный ответ протокола и сигнатуры для других артефактов, например, кода авторизации.
  • Refresh token - Когда истекает срок действия старого Access token, новый Access token предоставляется после предъявления клиентом Refresh token.
  • Password - Получение Access token посредством предоставления учетных данных пользователя, включая пароль.
  • Client credentials - Используется клиентом для получения Access token вне контекста пользователя. Обычно используется для обеспечения доступа клиентов для доступа к собственным ресурсам о себе.
Access token lifetime (in seconds)Время действия маркера доступа (Access token).
Access token type

Тип Access token, допускается выбрать:

  • Случайное значение – токен представляет собой opaque-строку (произвольный идентификатор), не содержащую данных внутри себя (в данном случае информация о пользователе и его правах хранится в FAM и выдается по специальному запросу к Introspection Endpoint. Использование данного значения более безопасно, т.к. клиентскому приложению передается минимальное количество данных, но требует обращения приложения к FAM Server для получения данных токена. Рекомендуется использовать, если клиентское приложение и Avanpost FAM находятся в одной инфраструктуре, и приложение может делать introspection-запросы (запросы о текущем состоянии и содержимом Access token).
  • JSON Web Token – токен содержит внутри claims с данными о пользователе и его правах доступа, подписан сервером. Использование данного значения требует корректной валидации подписи, но более удобно для клиентских приложений, которым требуется читать claims без дополнительных запросов. Рекомендуется использовать для внешних или распределенных внешних приложений, которым требуется обладать полной информацией токена доступа, не выполняя дополнительные запросы.
JWT Signature Algorhithm

Алгоритм подписи JSON Web Token, допускается выбрать:

  • RS256 (RSA Signatiure with SHA-256);
  • GOST3410_2012_256 (ГОСТ Р 34.10-2012 256).
Authorization code lifetime (in seconds)Время действия кода авторизации (Authorization code)
Refresh token lifetime (in seconds)Время действия Refresh token
Refresh token strategy

Стратегия использования refresh token:

Чекбокс "Переиспользовать refresh token":

  • при установленном флажке пользователь может повторно использовать refresh token для обновления токена;
  • при выключенном флажке при повторном использовании refresh token отзываются все токены, выданные пользователю ранее.
ID token lifetime (in seconds)Время действия ID token
End session strategy

Политика в отношении токена при завершении сессии:

  • Clear - Токен очищается от всех привязанных к нему сессий;
  • None - Токен может использоваться после завершения сессии.
Scope (default)

Области действия (scope) приложения по умолчанию. Данные scopes действуют вне зависимости от scopes, настраивающихся в соответствующем разделе. Допускается указать несколько scopes, разделив их пробелом.

Ошибки аутентификации

Чекбокс "Обрабатывать как ошибки протокола":

  • при установленном флажке OAuth-сервер передает данные об ошибке приложению, т. е. через параметры запроса по redirect_uri;
  • при выключенному флажке данные об ошибке не передаются приложению.
Allowed origins

Список доменов, которым разрешено выполнять CORS-запросы к Avanpost FAM (обычно используется для фронтенд-приложений в браузере). На данные домены не будет действовать правило ограничения домена (Same Origin Policy) на запрашиваемые страницы. Адреса доменов вводятся в текстовое поле и разделяются пробелом.

Необходимо заполнять при использовании SPA (Single Page Application) или веб-клиентов, которые обращаются к Avanpost FAM напрямую из браузера. Если приложение работает как backend-сервис и не выполняет прямых CORS-запросов, заполнять поле не требуется.

Смена секрета
Новый секрет

Для смены секрета следует нажать . Новый секрет необходимо ввести в текстовое поле и сохранить. 

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

Настройки безопасности
Настройка сессии

Чекбокс "Ограничивать количество активных сессий":

  • при выключенном флажке количество сессий не ограничивается;
  • при включенном флажке открываются дополнительные настройки:
    • Максимальное количество сессий для пользователя - Строка ввода максимального количества сессий, доступных одному пользователю.
    • Чекбокс "Разрешить пользователю закрывать активные сессии":
      • при включенном флажке пользователь может самостоятельно завершать активные сессии (при превышении максимального числа сессий у пользователя автоматически возникает окно с возможностью завершения активных сессий);
      • при выключенном флажке пользователю запрещено самостоятельно завершать активные сессии.
Повысить уровень безопасности и отключить SSO для приложения

Чекбокс "Отключить":

  • при выключенном флажке технология единого входа SSO используется для данного приложения;
  • при включенном флажке SSO недоступно для данного приложения.

Настройки регистрации

Статус

Управление функцией самостоятельной регистрации пользователя применительно к приложению. Информация о всех возможностях управления саморегистрацией доступна в разделе Самостоятельная регистрация пользователей.

Выбрать из выпадающего списка:

  • По умолчанию - К пользователю применяется общая политика регистрации, настроенная для Avanpost FAM;
  • Включена - Пользователю доступна самостоятельная регистрация при входе в приложение;
  • Выключена - Пользователю недоступна самостоятельная регистрация при попытке входа в приложение, добавление пользователей осуществляется иными способами.
URL перенаправления после регистрации

URL-адрес, на который пользователь будет перенаправлен после регистрации. Текстовое поле доступно для заполнения при статусе "Включена".

Unified SSO

Включить USSO

Чекбокс "Включить USSO":

  • при включении чекбокса для OIDC-приложения доступно использования специализированного механизма Unified SSO, предназначенного для выполнения кросспротокольной аутентификации при помощи компонента FAM Агент;
  • при выключенном чекбоксе механизм USSO не используется.
Режим для устаревших браузеров

Переключатель "Режим для устаревших браузеров":

  • при включении переключателя поддерживается аутентификация в приложениях с WebView, не поддерживающими кастомные URL-схемы (например, тонкий клиент 1С);
  • при выключенном переключателе работа с устаревшими браузерами не поддерживается.

Вкладка "Scopes"

Области действия (scopes) предоставляют приложению набор пользовательских атрибутов, называемых утверждениями (claims). Настройка scopes, запрашиваемых приложением при аутентификации, зависит от того, с какими пользовательскими атрибутами приложение оперирует.

Вкладка предоставляет расширенные возможности для настройки областей действия (scopes) приложения и утверждений (claims), которые будут запрошены при аутентификации в OIDC-приложении. Из дополнительных scopes, настроенных в данной вкладке и запрошенных приложением, будут переданы claims в состав JWT-токена.

Список scopes отображается в общем реестре, содержащем:

  • Название - Наименование scope;
  • Кнопка "Изменить" - Изменить параметры выбранной scope;  
  • Кнопка "Удалить"- Удалить выбранную scope.

Для добавления scopes требуется нажать. Откроется возможность ввода данных в поле "Новое разрешение":

Название параметраОписание параметра
ScopeНазвание области действия приложения
Утверждения (Claims)

Поле содержит реестр с утверждениями (claims). Для одной области действия (scope) может быть настроено несколько утверждений (claims). Для добавления нового утверждения следует нажать. Avanpost FAM предлагает следующие параметры для настройки утверждений (claims):

  • Наименование - Название данного утверждения;
  • Тип - Выбор типа атрибута из выпадающего списка:
    • Значение из атрибута;
    • Постоянное значение;
    • Вычисляемое значение;
  • Значение, присваиваемое атрибуту для передачи в целевое приложение:
    • Для типа утверждения "Значение из атрибута" выбрать атрибут из которого присваивается значение для данного утверждения;
    • Для типа утверждения "Постоянное значение" ввести значение в текстовое поле;
    • Для типа утверждения "Вычисляемое значение" путем нажатия перейти в редактор и ввести алгоритм расчета вычисляемого значения.

Для удаления существующего утверждения (claim) требуется нажать.

Поле "Список утверждений (Claims), обязательных для аутентификации в приложении" содержит список утверждений (claims), которым обязательно должно быть присвоено значение для успешной аутентификации пользователя в приложении. Поле содержит реестр таких утверждений со следующими параметрами и возможностями:

  • Scope - Наименование области действия, к которой принадлежит утверждение, обязательное для аутентификации в приложении;
  • Утверждение (Claim) - Наименование утверждения (claim). обязательного для аутентификации в приложении;
  • Кнопка - Следует нажать для добавления утверждения в данный список;
  • Кнопка  - Следует нажать удаления выбранного утверждения (claim) из списка. 

При нажатии кнопки откроется форма для добавления утверждения со следующими параметрами и возможностями:

  • Scope - Выбрать из выпадающего списка доступных областей действия (Scopes);
  • Утверждение (Claim) - Выбрать из выпадающего списка утверждений, доступных для данной Scope;
  • Кнопка "Сохранить" - Нажать для добавления настроенного утверждения в "Список утверждений (Claims), обязательных для аутентификации в приложении";
  • Кнопка "Отмена" - Нажать для отмены изменений.

Вкладка "Модель доступа"

Вкладка позволяет настраивать модель доступа, используемую при настройке полномочий роли в отношении целевого приложения. Механизм модели доступа реализуется для протокола управления доступом UMA (User-Managed Access) на основе OAuth 2.0.

Модель доступа строится на существовании объектов доступа (Resourse) внутри целевого приложения и прав (Scopes), которые получает пользователь в отношении объектов доступа после аутентификации в Avanpost FAM. После настройки модели доступа для OIDC-приложения администратор может предоставлять те или иные права (scopes) в отношении объектов доступа (Resourse) ролям, настраиваемым в Avanpost FAM во вкладке "Настройки ролей и прав". Роли с назначенными правами присваиваются пользователям.

Avanpost FAM также содержит ряд внутренних объектов доступа (Resourse) и прав (Scopes). Модели доступа в отношении внутренних функциональных элементов Avanpost FAM не редактируются. Администратор назначает права в отношении объектов доступа внутри Avanpost FAM через механизм управления ролями, пользуясь предустановленными моделями доступа.

Механизм использования модели доступа в ролевой модели описан в разделе Настройки ролей и прав.

Вкладка "Модель доступа" содержит список объектов доступа со следующим данными и возможностями:

  • Объект доступа (Resource) - Название объекта доступа;
  • Число прав - Количество прав (scopes), настроенных для объекта доступа;
  • Кнопка "Изменить" - Нажать для изменения настроек выбранного объекта доступа;
  • Кнопка "Удалить" - Нажать для удаления.

Для добавления нового объекта доступа, к которому настраивается доступ, требуется нажать . Значения параметров объектов доступа (Resource) и прав (Scopes) должны соответствовать значениям Resourse и Scopes в целевом приложении. В открывшейся форме нужно ввести следующие параметры:

  • Код - Код объекта доступа;
  • Описание - Название объекта доступа (отображается в "Объект доступа (Resource)" реестра объектов доступа);
    • Код - Добавить код права;
    • Описание - Наименование, которое отображается в списке;
    • Кнопка - Следует нажать, чтобы добавить новое право;
    • Кнопка - Следует нажать, чтобы удалить выбранное право.

Вкладка "Сертификаты"

Вкладка позволяет управлять криптографическими ключами JSON Web Key Sets для OIDC-приложения. Для подписи JWT-токенов в OIDC-приложениях используются алгоритмы RS256 и HS256. Алгоритм RS256 генерирует асимметричную подпись, то есть для подписи JWT-токена используется закрытый ключ, а для проверки подписи - открытый ключ. JSON Web Key Set (JWKS) представляет собой набор публичных ключей, используемых для проверки токенов JWT-токенов, выданных сервером авторизации и подписанных с использованием алгоритма RS256 (или GOST3410_2012_256). 

Вкладка содержит реестр сертификатов, в котором отражаются следующие данные:

  • Алгоритм - Тип алгоритма для подписи JWT-токена:
    • RS256 (RSA Signatiure with SHA-256);
    • GOST3410_2012_256 (ГОСТ Р 34.10-2012 256);
  • Key ID - Идентификатор ключа.

Чтобы добавить новый сертификат, требуется нажать и ввести ключ в редакторе. Чтобы сохранить сертификат, следует нажать "Сохранить". Для отмены изменений следует нажать "Отмена".

Приложение А. Бесшовная идентификация в OIDC-приложении

Для бесшовной идентификации пользователя в OpenID-приложении через IFrame можно использовать HTTP-метод POST вместо стандартного метода GET. Данный позволяет передавать идентификатор (логин) пользователя напрямую в запросе авторизации. Этап идентификации пользователя будет пропущен, так как логин уже передан в HTTP-запросе. В частности, рекомендуется использовать при интеграции с ADFS, когда логин пользователя известен на момент инициализации аутентификации и может быть направлен FAM Server для бесшовного продолжения процесса авторизации. Ниже приведен пример создания iframe и скрытой формы с последующим выполнением скрипта для автоматической идентификации пользователя. 

Пример запроса
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>

<form id="hiddenForm" type="hidden" target="famFrame" action="[FAM_AUTH_PAGE]" method="post">
        <input type="hidden" name="identificator" id="username" value="[FAM_USER_LOGIN]" />
</form>

<iframe
        name="famFrame"
        style="width: 430px; height: 680px; left: 50%; top: 50%; margin-left: -215px; margin-top: -340px; position: absolute; border: 0; box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);">
</iframe>

<script>
        let form = document.getElementById("hiddenForm")
        form.submit()
</script>

Основные параметры, передаваемые в запросе POST, указаны в таблице:

ПараметрЗначение
idИдентификатор формы.
typeТип формы.
target

Фрейм, в который загружается результат. В данном примере указывается, что результат отправки формы должен быть загружен в фрейм с именем famFrame.

action

Ссылка на authorization endpoint.

Допускается передать на данную конечную точку значение login_hint (параметр для предварительного заполнения формы входа идентификатором пользователя), содержащий идентификатор (логин, номер телефона, Email) пользователя. 

method
Тип HTTP-метода (POST). 
input type
Тип формы поля ввода (в данном примере hidden, т.е. поле ввода скрыто и не отображается пользователю).
nameИмя поля, используемое при отправке данных на сервер (identificator).
idТип передаваемого идентификатора пользователя (в данном примере username, т.е. логин)
valueЗначение передаваемого идентификатора пользователя (логин, номер телефона, Email).

Обсуждение