Работа с IdM предполагает общение IdM с клиентскими аутентификаторами, а также непосредственно с Вашим сервисом.
Для корректной работы аутентификационных операций, необходимо перенаправлять публичный аутентификационный трафик на следующий адрес:
https://<host>:<public_port>/query
По этому адресу и происходит все взаимодействие аутентификаторов и IdM, касаемое криптографических операций и управления ключами
Внутренние операции предусматривают регистрацию и аутентификацию. Операции просты в реализации и не требуют глубоких технических знаний
Для того, чтобы начать сессию регистрации, необходимо привязать ключ к IdM. Для этого используются MiME-ссылки в следующем формате:
acrauth://register
?idm=<idm_endpoint_encoded>
®ister=<register_endpoint_encoded>
&auth=<auth_endpoint_encoded>
&server_name=<server_name>
Объяснение параметров:
idm_endpoint_encoded - путь к эндпоинту из предыдущего пункта, откуда будет перенаправляться трафик от клиентских аутентификаторов на IdM;register_endpoint_encoded - путь к регистрационному эндпоинту;auth_endpoint_encoded - путь к аутентификационному эндпоинта (будет сохранён клиентским аутентификатором для последующих операций аутентификации).Пути следует закодировать в URL для безопасной их передачи
После перехода по ссылке управление будет передано аутентификатору, который в последствии сделает вот такой запрос:
GET https://<server_name>/<register_endpoint>?auth_token=<auth_token>
Для продолжения регистрации необходимо будет auth_token по следующему эндпоинту:
POST https://<host>:<internal_port>/query
При общении с internal_port необходимо указывать SERVER_SECRET (см. Развертывание и настройка) в заголовке Authorization
Данный POST-запрос имеет следующий формат:
{
"type": 257,
"data": {
"auth_token": "<your_auth_token>"
}
}
На что в случае успеха будет получен следующий ответ:
{
"type": 257,
"data": {
"user_id": "<user_id>"
}
}
Этот user_id и будет служить для последующей идентификации данного пользователя
Для инициализации сессии аутентификации, передаём управление клиенту по следующей MiME-ссылке:
acrauth://auth?server_name=<server_name>
В последствии аутентификатор сделает вот такой запрос:
GET https://<server_name>/<auth_endpoint>?auth_token=<auth_token>
Данный auth_token необходимо передать по следующему эндпоинту:
POST https://<host>:<internal_port>/query
При общении с internal_port необходимо указывать SERVER_SECRET (см. Развертывание и настройка) в заголовке Authorization
Данный POST-запрос должен иметь следующий формат:
{
"type": 3,
"data" {
"auth_token": "<your_auth_token>"
}
}
Ответом на данный запрос придёт:
{
"type": 3,
"data" {
"user_id": "<user_id>"
}
}
Этот user_id - пользователь, который пытается войти в систему. В данном случае аккаунту необходимо выдать его сессию