Интеграция со СБИС

Появилась HTTP-ошибка 401 «Unauthorized»

Появилась HTTP-ошибка 401 «Unauthorized»

При вызове метода вернулась HTTP-ошибка 401 «Unauthorized» с сообщением «Not authorized».

Класс ошибки:фатальная.

Причина № 1

Идентификатор сессии (X-SBISSessionID) в HTTP заголовке запроса не указан

Решение № 1

  1. Пройдите аутентификацию для получения нового идентификатора.
  2. Укажите правильный идентификатор сессии как значение заголовка HTTP-пакета «X-SBISSessionID».

Пример неверного запроса (идентификатор сессии отсутствует)

POST https://online.sbis.ru/service/&srv=1 HTTP/1.1
Content-Type: application/json; charset=utf-8
{
  "jsonrpc": "2.0",
  "method": "СБИС.ПрочитатьДокумент",
  "params": {
    "Документ": {
      "Идентификатор": "e1756445-f1be-4562-b5cf-4549968b5f4f"
    }
  },
  "id": 0
}

Пример ответа

HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
 "jsonrpc": "2.0",
 "error": "Not authorized.",
 "id": -1
}

Причина №2

Идентификатор сессии (X-SBISSessionID) в HTTP заголовке запроса устарел. Это может произойти из-за большого периода неактивности (отсутствия вызовов) или после окончания регламентных работ на online.sbis.ru.

Решение № 2

  1. Пройдите аутентификацию для получения нового идентификатора.
  2. Укажите правильный идентификатор сессии как значение заголовка HTTP-пакета «X-SBISSessionID».

Пример неверного запроса

Ошибка — в указании кодировки UTF-8. При этом, в JSON части запроса используется кодировка Win-1251. По тексту запроса это невозможно определить.

POST https://online.sbis.ru/service/?srv=1 HTTP/1.1
Content-Type: application/json; charset= utf-8
Accept: */*, application/json-rpcD
X-SBISSessionID: 0005281a-0005281b-00ba-3beb110a20594e21
{
  "jsonrpc": "2.0",
  "method": "СБИС.СписокСлужебныхЭтапов",
  "params": {
    "Фильтр": {}
  },
  "id": 0
}

Пример ответа

POST https://online.sbis.ru/service/?srv=1 HTTP/1.1
Content-Type: application/json; charset= utf-8
Accept: */*, application/json-rpcD
X-SBISSessionID: 0005281a-0005281b-00ba-3beb110a20594e21
{
  "jsonrpc": "2.0",
  "method": "СБИС.СписокСлужебныхЭтапов",
  "params": {
    "Фильтр": {}
  },
  "id": 0
}

Причина № 3

В запросе указан неверный адрес. Такое случается, если при выполнении методов аутентификации указан адрес https://online.sbis.ru/service/?srv=1 вместо https://online.sbis.ru/auth/service/. Часто происходит при выполнении команд «СБИС.Аутентифицировать», «СБИС.АутентифицироватьПоСертификату», «СБИС.Выход», «СБИС.СписокСертификатовДляАутентификации» и других.

Решение № 3

Укажите правильный адрес в запросе.

Пример ответа на неправильный запрос

Указан неправильный адреса сервера (https://online.sbis.ru/service/?srv=1 вместо https://online.sbis.ru/auth/service/)

HTTP/1.1 401 Unauthorized
Server: nginx/1.4.4
Date: Fri, 11 Apr 2014 09:42:14 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=30
Cache-Control: must-revalidate, max-age=0
X-Path: internal;
X-QACheck: true
34
{
  "jsonrpc": "2.0",
  "error": "Not authorized.",
  "id": -1
}