Интеграция сервиса

Работа с IdM предполагает общение IdM с клиентскими аутентификаторами, а также непосредственно с Вашим сервисом.

Общение с аутентификаторами

Для корректной работы аутентификационных операций, необходимо перенаправлять публичный аутентификационный трафик на следующий адрес:

https://<host>:<public_port>/query

По этому адресу и происходит все взаимодействие аутентификаторов и IdM, касаемое криптографических операций и управления ключами

Внутренние операции

Внутренние операции предусматривают регистрацию и аутентификацию. Операции просты в реализации и не требуют глубоких технических знаний

Регистрация

Для того, чтобы начать сессию регистрации, необходимо привязать ключ к IdM. Для этого используются MiME-ссылки в следующем формате:

acrauth://register
	?idm=<idm_endpoint_encoded>
	&register=<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 - пользователь, который пытается войти в систему. В данном случае аккаунту необходимо выдать его сессию