Авторизация

Платформа Carusto предоставляет разные варианты для авторизации на основании данных, которые доступны в вашем приложении. Любой из авторизационных методов принимает строку, которая может представлять:

  • API_KEY - Уникальный ключ вашего приложения, который можно сгенерировать в панели администратора.
  • UserId:UserHash - Строка из внутреннего идентификатора и ключа, разделенная двоеточием и закодированная при помощи Base64. Эту информацию можно узнать только после авторизации и использовать вместо временных сессий.
  • UserLogin:UserPassword - Строка из логина и пароля разделенная двоеточием и закодированная при помощи Base64.

Эти данные можно передать или в заголовке или в строке запроса. Настоятельно рекомендуется использовать протокол HTTPS для безопасности этих данных.

Используя HTTP Headers

Платформа Carusto при поступлении запроса проверяет наличие заголовка Authorization в HTTP запросе. В случае, если там указана валидная строка для авторизации, система будет использовать ее.

То есть, чтобы авторизоваться от имени пользователя John Snow, необходимо указать его имя и пароль, после чего закодировать эту информацию в base64.

При помощи утилиты CURL можно указать авторизационные данные в параметре -u

curl -u admin:test https://demo.carusto.net/api/v2/calls/all/

Точно так же, если у нас есть ключ приложения, мы можем указать его в этом заголовке.

curl -H "Authorization: Bearer 9090328211896121" http://local.carusto.com/api/v2/calls/all/

В том случае, если в заголовке Authorization указан валидный API ключ, то система также будет анализировать содержимое заголовков X-Auth-Id и X-Auth-Info. X-Auth-Id и X-Auth-Info существуют для того что бы максимально упростить авторизацию и создание пользователя в системе Carusto со сторонних приложений.

Используя Query Parameters

В том случае, если система не обнаруживает авторизационные данные в заголовках HTTP запроса, она пытается найти эти данные в строке запроса. При наличии параметра x-auth система будет проверять этот параметр с доступными ключами или авторизационными данными пользователя.

Таким способом передать авторизационные данные очень просто: необходимо лишь вставить API ключ в параметр x-auth

curl https://demo.carusto.net/api/v2/calls/all/?x-auth=9090328211896121

Также, если вы хотите авторизоваться при помощи логина и пароля, вам нужно сначала закодировать Login:Password при помощи base64.

curl https://demo.carusto.net/api/v2/calls/all/?x-auth=YWRtaW46dGVzdA%3D%3D

В том случае, если в параметре x-auth указан валидный API ключ, то система также будет анализировать содержимое параметров x-auth-id и x-auth-info.

Параметры x-auth-id и x-auth-info существуют для того, чтобы максимально упростить авторизацию и создание пользователя в системе Carusto со сторонних приложений.

Автоматическое создание пользователей

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

Система Carusto может сама создать пользователя или обновить его данные при поступлении запроса на основании данных x-auth-id и x-auth-info. Эти параметры можно указать в заголовках или в параметрах запроса.

Для каждого пользователя должен быть уникальный идентификатор, произвольное число или строка. На основании нее система и делает обновления данных и проверяет на наличие уже ранее созданного пользователя. Если вместе с параметром x-auth-id будет передан параметр x-auth-info, то система обновит данные о пользователе (если они отличаются) и после выполнит нужный запрос. Это очень удобно, поскольку не нужно заботиться о синхронизации пользователей, что значительно упрощает процедуру интеграции.

x-auth-id

Произвольное число или строка для идентификации стороннего пользователя. При наличии этого параметра в запросе, система будет создавать пользователя в том случае, если он отсутствует.

Примеры запросов:

https://pbx.carusto.com/connect/?x-auth=XXX_YYY&x-auth-id=100500

x-auth-info

Дополнительный параметр в виде строки, закодированный при помощи Base64.

Этот параметр при декодировании должен быть валидным JSON массивом, где каждый элемент - объект с тремя полями:

  • key - Тип контактных данных. В случае нестандартного поля должно быть null. Доступные значения: FN, TEL, EMAIL, ORG, TITLE, ADR, URL, IM, BDAY, RELATIONSHIP.
  • type - Подтип данных. В случае, если key null, то необходимо указать название поля.
  • value - Произвольный текст.

Таким образом, чтобы указать пользовательские данные с именем John Doe, мобильным телефоном +380962369977 и внутренним номером 1000, нужно сформировать следующий JSON:

[ {"key":"TEL","type":"MOBILE","value":"+380962369977"}, {"key":"TEL","type":"EXT","value":"1000"}, {"key":"FN","value":"John Doe"} ]

Пример запроса для отображения страницы для подключения:

  • x-auth - 9090328211896121
  • x-auth-id - 100500
  • x-auth-info - W3sia2V5IjoiVEVMIiwidHlwZSI6Ik1PQklMRSIsInZhbHVlIjoiKzM4MDk2MjM2OTk3NyJ9LHsia2V5IjoiVEVMIiwidHlwZSI6IkVYVCIsInZhbHVlIjoiMTAwMCJ9LHsia2V5IjoiRk4iLCJ2YWx1ZSI6IkpvaG4gRG9lIn1d

https://local.carusto.com/connect/?x-auth=9090328211896121&x-auth-id=100500&x-auth-info=W3sia2V5IjoiVEVMIiwidHlwZSI6Ik1PQklMRSIsInZhbHVlIjoiKzM4MDk2MjM2OTk3NyJ9LHsia2V5IjoiVEVMIiwidHlwZSI6IkVYVCIsInZhbHVlIjoiMTAwMCJ9LHsia2V5IjoiRk4iLCJ2YWx1ZSI6IkpvaG4gRG9lIn1d