Authenticate

Authenticate v3

POST /V3/Authenticate
Request Headers:
 
Query Parameters:
 
  • type – Параметр type обозначает метод, которым пользователь хочет аутентифицироваться. Параметр не может быть пустым и принимает значения
Status Codes:
  • 200 OK – операция успешно завершена;
  • 400 Bad Request – данные в запросе имеют неверный формат или отсутствуют обязательные параметры;
  • 401 Unauthorized – в запросе отсутствует HTTP-заголовок Authorization, или в этом заголовке отсутствует параметр ddauth_api_client_id, или переданный в нем ключ разработчика не зарегистрирован в Диадоке;
  • 405 Method Not Allowed – используется неподходящий HTTP-метод;
  • 500 Internal Server Error – при обработке запроса возникла непредвиденная ошибка.

Параметр type может принмать значения:

  • password - логин и пароль
  • sid - auth.sid из API Аутентификатора
  • certificate - сертификат
  • trust - доверительная аутентификаци

В версии v3 от передаваемого параметра type зависит тело запроса.

  • Аутентификация по логину и паролю :

Необходимо указывать type - password, и в теле запроса передавать сериализованный объект. Возможно передавать данные в формате json, в этом случае необходимо указать заголовок Content-Type: application/json

{
    "login" : "login",
    "password" : "pass"
}

Либо передавать в формате protobuf. В этом случае Content-Type указывать не обязательно, так как по умолчанию десериализация происходит из protobuf.

message LoginPassword {
    required string Login = 1;
    required string Password = 2;
}
  • Аутентификация по auth.sid API аутентификатора :

Необходимо указать type - sid, в теле запроса передавая auth.sid c заголовком Content-Type: text/plain

  • Аутентификация по сертификату:

Необходимо указать type - certificate, в тело запроса передать бинарное содержимое открытого ключа сертификата c заголовком Content-Type: application/octet-stream. Ответ метода необходимо интерпретировать как зашифрованную строку, аналогично Authenticate V2 , расшифровать закрытым ключом сертификата, и передать в AuthenticateConfirm

  • Доверительная аутентификация

Чтобы сохранить привязку(Binding) для доверительной аутентификации, необходимо авторизоваться с помощью пароля или сертификата, с указанием заголовков:

  • X-Diadoc-ServiceKey (ServiceKey)
  • X-Diadoc-ServiceUserId (ServiceUserId)

Чтобы воспользоваться доверительной аутентификацией, необходимо указать type - trust, с указанием заголовков X-Diadoc-ServiceKey, X-Diadoc-ServiceUserId, после создания привязки.

Authenticate v2

Предупреждение

Метод является устаревшим, для получения шаблона документа необходимо использовать метод Authenticate V3

POST /V2/Authenticate
Request Headers:
 
Query Parameters:
 
  • login – имя учетной записи пользователя при авторизации по логину/паролю (может отсутствовать);
  • password – пароль учетной записи пользователя при авторизации по логину/паролю (обязателен при наличии параметра login);
  • key – ключ, полученный доверенным сервисом (может отсутствовать);
  • id – идентификатор пользователя доверенного сервиса (обязателен при наличии параметра key);
Status Codes:
  • 200 OK – операция успешно завершена;
  • 400 Bad Request – данные в запросе имеют неверный формат или отсутствуют обязательные параметры;
  • 401 Unauthorized – в запросе отсутствует HTTP-заголовок Authorization, или в этом заголовке отсутствует параметр ddauth_api_client_id, или переданный в нем ключ разработчика не зарегистрирован в Диадоке;
  • 405 Method Not Allowed – используется неподходящий HTTP-метод;
  • 500 Internal Server Error – при обработке запроса возникла непредвиденная ошибка.

Тело запроса:

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

Для аутентификации по ключу, полученному доверенным сервисом, нужно передать этот ключ в параметре key;

В случае успешного выполнения запроса:

  • если авторизация производится по логину/паролю или по ключу, полученному доверенным сервисом, тело ответа следует интерпретировать как строку в кодировке UTF-8, содержащую авторизационный токен;
  • авторизация по сертификату является двухфазной. В этом случае ответ следует интерпретировать как зашифрованную строку. Для получения авторизационного токена необходимо расшифровать ее сертификатом с закрытым ключом и подтвердить расшифровку с помощью запроса AuthenticateConfirm;

В случае авторизации по логину/паролю с указанием ключа, полученного доверенным сервисом, привязка пользователя доверенного сервиса сохраняется автоматически (см. описание привязки в методе AuthenticateConfirm).

Authenticate v1

Предупреждение

Метод является устаревшим, для получения шаблона документа необходимо использовать метод Authenticate V3

POST /Authenticate
Request Headers:
 
Query Parameters:
 
  • login – имя учетной записи пользователя при авторизации по логину/паролю (может отсутствовать);
  • password – пароль учетной записи пользователя при авторизации по логину/паролю (обязателен при наличии параметра login);
  • key – ключ, полученный доверенным сервисом (может отсутствовать);
  • id – идентификатор пользователя доверенного сервиса (обязателен при наличии параметра key);
Status Codes:
  • 200 OK – операция успешно завершена;
  • 400 Bad Request – данные в запросе имеют неверный формат или отсутствуют обязательные параметры;
  • 401 Unauthorized – в запросе отсутствует HTTP-заголовок Authorization, или в этом заголовке отсутствует параметр ddauth_api_client_id, или переданный в нем ключ разработчика не зарегистрирован в Диадоке;
  • 405 Method Not Allowed – используется неподходящий HTTP-метод;
  • 500 Internal Server Error – при обработке запроса возникла непредвиденная ошибка.

Тело запроса:

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

Для аутентификации по ключу, полученному доверенным сервисом, нужно передать этот ключ в параметре key (не поддерживается при аутентификации по сертификату).

В случае успешного выполнения запроса:

  • если авторизация производится по логину/паролю или по ключу, полученному доверенным сервисом, тело ответа следует интерпретировать как строку в кодировке UTF-8, содержащую авторизационный токен;
  • если авторизация производится по сертификату, то выдаваемый токен будет зашифрован в адрес пользовательского сертификата. В этом случае тело ответа следует интерпретировать как структуру CMS EnvelopedData в DER-кодировке;

В случае авторизации по логину/паролю с указанием ключа, полученного доверенным сервисом, привязка пользователя доверенного сервиса сохраняется автоматически (см. описание привязки в методе AuthenticateConfirm).