Авторизация
Чтобы HTTP-запрос был обработан, он должен пройти авторизацию по
токену приложений. Заранее сгенерированный (например,
в веб-интерфейсе TDG) токен
приложений необходимо передать в HTTP-заголовке запроса по схеме
Authorization: Bearer <token>, где:
Authorization- имя заголовка;Bearer- схема HTTP-аутентификации;<token>- ключ токена.
Пример
Authorization: Bearer 2fc136cf-8cae-4655-a431-7c318967263d
В HTTP-запросе в заголовке указывается один из двух вариантов схемы данных:
- схема
default(по умолчанию) - работа с пользовательскими данными. Если схема данных в заголовке пропущена, для запроса используется схемаdefault. - схема
admin- управление настройками TDG.
Для выполнения запросов в примерах ниже используется утилита curl.
Пример запроса на добавление данных в схеме default:
curl –request POST \–url http://172.19.0.2:8080/graphql \–header 'Authorization: Bearer 2fc136cf-8cae-4655-a431-7c318967263d' \–data '{"query":"mutation{ Country(insert: { title: \"Poland\", phone_code:\"+48\"}) {title phone_code}}"}'
Пример запроса в схеме admin:
curl –request POST \–url http://172.19.0.2:8080/graphql \–header 'Authorization: Bearer 2fc136cf-8cae-4655-a431-7c318967263d' \–header 'schema: admin' \–header 'Content-Type: application/json' \–data '{"query":"mutation{ token{ add(name:\"App01\", role:\"user\") { name, token, created_at role } } } "}'
В запросе внешнее приложение авторизуется, используя свой заранее
созданный токен, и выпускает (генерирует) новый токен App01. Подробнее
о генерации токена приложений через GraphQL API рассказывается в разделе
Добавление токена Руководства
администратора.
Приложения, использующие для доступа к данным в TDG коннекторы для языков программирования, авторизуются по токенам приложений. Подробнее о настройке таких коннекторов, запросах к данным и вызове сервисов рассказано в главе Использование бинарного протокола iproto.
Чтобы авторизовать коннектор, нужно указать токен приложения
непосредственно в вызываемой функции в дополнительном аргументе
credentials. Например, запрос на вставку объекта через
интерфейс репозитория будет выглядеть следующим
образом:
repository.put(type_name, obj, options, context, credentials)
где:
type_name- тип объекта;object- объект для вставки;options- параметры для управления запросом;context- контекст выполнения запроса;credentials- таблица с данными токена приложения. Единственный обязательный параметр в таблице - это ключ токена.
Пример авторизации с использованием токена приложений на языке Python:
from tarantool.connection import Connectionconn = Connection(server.host, server.binary_port, user='tdg_service_user', password='')admin_token = {'token': '2fc136cf-8cae-4655-a431-7c318967263d'}obj = {'id': '12567', 'name': 'John'}conn.call('repository.put', 'Users', obj, {}, {}, admin_token)
Запрос из примера добавит новый объект Users с первичным ключом id,
равным 12567, если такой ещё не существует.