Инструменты пользователя

Инструменты сайта


about-rest-support

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
about-rest-support [2019/05/21 06:09]
admin1 создано
about-rest-support [2019/10/28 04:17] (текущий)
admin1
Строка 1: Строка 1:
 ====== Реализация поддержки REST ====== ====== Реализация поддержки REST ======
  
-Начнем с определения того, что означает REST в контексте X-Road. В отличие от протокола SOAP, который является протоколом с подробной спецификацией,​ REST - это архитектурный стиль, состоящий из лучших практик и рекомендаций. В случае с X-Road поддержка REST означает использование и создание REST API через X-Road поддерживающее любой тип HTTP контента.+Начнем с определения того, что означает ​[[https://​ru.wikipedia.org/​wiki/​REST|REST]] в контексте X-Road. В отличие от протокола ​[[https://​ru.wikipedia.org/​wiki/​SOAP|SOAP]], который является протоколом с подробной спецификацией,​ REST - это архитектурный стиль, состоящий из лучших практик и рекомендаций. В случае с X-Road поддержка REST означает использование и создание REST API через X-Road поддерживающее любой тип ​[[https://​ru.wikipedia.org/​wiki/​HTTP|HTTP]] контента.
  
 Одним из руководящих принципов при разработке протокола сообщений REST для X-Road был принцип простоты использования как для поставщиков сервисов , так и для потребителей. Следовательно,​ использование и разработка REST сервисов для X-Road стала возможной без необходимости разработки дополнительного компонента адаптера. Информация,​ специфичная для X-Road, требуемая сервером безопасности (например,​ идентификатор клиента,​ идентификатор сервиса,​ идентификатор поставщика услуг, идентификатор сообщения и т.д), передается и обрабатывается,​ так что существующие службы и потребители услуг использующие REST могут быть подключены к X-Road с минимальными изменениями или без изменений вообще. Это было достигнуто путем выноса специфической информации X-Road, требуемой сервером безопасности,​ в заголовки HTTP и параметры URL. Одним из руководящих принципов при разработке протокола сообщений REST для X-Road был принцип простоты использования как для поставщиков сервисов , так и для потребителей. Следовательно,​ использование и разработка REST сервисов для X-Road стала возможной без необходимости разработки дополнительного компонента адаптера. Информация,​ специфичная для X-Road, требуемая сервером безопасности (например,​ идентификатор клиента,​ идентификатор сервиса,​ идентификатор поставщика услуг, идентификатор сообщения и т.д), передается и обрабатывается,​ так что существующие службы и потребители услуг использующие REST могут быть подключены к X-Road с минимальными изменениями или без изменений вообще. Это было достигнуто путем выноса специфической информации X-Road, требуемой сервером безопасности,​ в заголовки HTTP и параметры URL.
  
-Поддержка REST в X-Road не ограничивается только сообщениями JSON и XML, поскольку сервер безопасности не ставит каких-либо ограничений для типа содержимого полезной нагрузки,​ передаваемой между потребителем и поставщиком сервисов. Тип содержимого полезной нагрузки определяется с в HTTP заголовках «Content-Type»,​ который передается между потребителем и поставщиком сервиса,​ так же как и сама полезная нагрузка. Полезная нагрузка передается как есть, сервер безопасности не изменяет,​ не преобразует и не проверяет обработанную полезную нагрузку. То же самое относится почти ко всем заголовкам и параметрам URL определенным потребителем и поставщиком HTTP сервиса - то есть они передаются как есть Список фильтруемых HTTP заголовков включен в спецификацию протокола REST X-Road Message protocol+Поддержка REST в X-Road не ограничивается только сообщениями ​[[https://​ru.wikipedia.org/​wiki/​JSON|JSON]] ​и [[https://​ru.wikipedia.org/​wiki/​XML|XML]], поскольку сервер безопасности не ставит каких-либо ограничений для типа содержимого полезной нагрузки,​ передаваемой между потребителем и поставщиком сервисов. Тип содержимого полезной нагрузки определяется с в HTTP заголовках «Content-Type»,​ который передается между потребителем и поставщиком сервиса,​ так же как и сама полезная нагрузка. Полезная нагрузка передается как есть, сервер безопасности не изменяет,​ не преобразует и не проверяет обработанную полезную нагрузку. То же самое относится почти ко всем заголовкам и параметрам URL определенным потребителем и поставщиком HTTP сервиса - то есть они передаются как есть Список фильтруемых HTTP заголовков включен в спецификацию протокола REST X-Road Message protocol
  
 Когда дело доходит до подписания и проверки подписи сообщений REST, полезная нагрузка сообщения,​ параметры URL и заголовки HTTP все включаются в цифровую подпись и журналы,​ генерируемые и проверяемые сервером безопасности. Следовательно,​ X-Road гарантирует подлинность REST запросов и ответов так же, как это делается для SOAP-сообщений. ​ Когда дело доходит до подписания и проверки подписи сообщений REST, полезная нагрузка сообщения,​ параметры URL и заголовки HTTP все включаются в цифровую подпись и журналы,​ генерируемые и проверяемые сервером безопасности. Следовательно,​ X-Road гарантирует подлинность REST запросов и ответов так же, как это делается для SOAP-сообщений. ​
Строка 11: Строка 11:
 ====== Использование REST сервисов ====== ====== Использование REST сервисов ======
    
-Использовать REST-сервисы через X-Road просто - вызываемый сервис определяется в URL-адресе запроса,​ а клиентская подсистема X-Road, отправляющая запрос,​ определяется в HTTP-заголовке. Другая специфичная для X-Road информация (например,​ идентификатор пользователя,​ основание , идентификатор клиентской подсистемы,​ идентификатор сообщения) является необязательной и передается в HTTP заголовках . Другие HTTP заголовки,​ параметры пути и параметры URL передаются как есть, что означает,​ что с точки зрения клиента службы единственное отличие по сравнению с прямым вызовом сервиса единственный обязательный HTTP заголовок , определяющий клиентскую подсистему X-Road.+Использовать REST-сервисы через X-Road просто - вызываемый сервис определяется в [[https://​ru.wikipedia.org/​wiki/​URL|URL]]-адресе запроса,​ а клиентская подсистема X-Road, отправляющая запрос,​ определяется в HTTP-заголовке. Другая специфичная для X-Road информация (например,​ идентификатор пользователя,​ основание , идентификатор клиентской подсистемы,​ идентификатор сообщения) является необязательной и передается в HTTP заголовках . Другие HTTP заголовки,​ параметры пути и параметры URL передаются как есть, что означает,​ что с точки зрения клиента службы единственное отличие по сравнению с прямым вызовом сервиса единственный обязательный HTTP заголовок , определяющий клиентскую подсистему X-Road.
  
 ====== Предоставление REST сервисов ====== ====== Предоставление REST сервисов ======
    
 Предоставление сервисов REST через X-Road так же просто (если не проще),​ как и использование сервисов. Существующие службы REST могут публиковаться в X-Road как есть - достаточно добавить публикуемый базовый URL-адрес REST API и определить права доступа в интерфейсе Security Server. В отличие от сервисов SOAP, Security Server не требует,​ чтобы в ответах,​ возвращаемых сервисами REST, была указана специфическая информация X-Road. Определенная информация,​ относящаяся к X-Road, по-прежнему включена в ответное сообщение,​ возвращаемое в информационную систему клиента,​ но сервер безопасности позаботится о добавлении необходимой информации в HTTP заголовки ответного сообщения. Предоставление сервисов REST через X-Road так же просто (если не проще),​ как и использование сервисов. Существующие службы REST могут публиковаться в X-Road как есть - достаточно добавить публикуемый базовый URL-адрес REST API и определить права доступа в интерфейсе Security Server. В отличие от сервисов SOAP, Security Server не требует,​ чтобы в ответах,​ возвращаемых сервисами REST, была указана специфическая информация X-Road. Определенная информация,​ относящаяся к X-Road, по-прежнему включена в ответное сообщение,​ возвращаемое в информационную систему клиента,​ но сервер безопасности позаботится о добавлении необходимой информации в HTTP заголовки ответного сообщения.
 +
 ====== Описание сервисов для REST ====== ====== Описание сервисов для REST ======
  
-В настоящее время службы ​SOAP должны быть описаны с использованием WSDL. Невозможно опубликовать сервис SOAP в X-Road, не предоставив WSDL описание сервиса. +В настоящее время службы ​ должны быть описаны с использованием ​[[https://​ru.wikipedia.org/​wiki/​WSDL|WSDL]]. Невозможно опубликовать сервис SOAP в X-Road, не предоставив WSDL описание сервиса. 
-В первой версии X-Road, включающей поддержку REST (v6.21.0), описания REST сервисов не требуются. При добавлении новой службы REST достаточно предоставить базовый URL-адрес REST API для публикации. В более поздних версиях будет добавлена поддержка описания REST сервисов с использованием спецификации OpenAPI 3.+В первой версии X-Road, включающей поддержку REST (v6.21.0), описания REST сервисов не требуются. При добавлении новой службы REST достаточно предоставить базовый URL-адрес REST API для публикации. В более поздних версиях будет добавлена поддержка описания REST сервисов с использованием спецификации ​[[https://​ru.wikipedia.org/​wiki/​OpenAPI_(%D1%81%D0%BF%D0%B5%D1%86%D0%B8%D1%84%D0%B8%D0%BA%D0%B0%D1%86%D0%B8%D1%8F)|OpenAPI 3]].
 Об автоматических преобразованиях SOAP-REST Об автоматических преобразованиях SOAP-REST
-Сервисы должны использовать их собственные реализации - SOAP или REST. Если поставщик сервиса хочет предоставить SOAP и REST версии одного и того же сервиса,​ он должен реализовать обе версии. Другими словами,​ сервер безопасности не будет обеспечивать автоматическое преобразование SOAP в REST и обратно. В случае,​ если требуется автоматическое преобразование SOAP в REST, можно использовать расширение REST Adapter Service. REST Adapter Service - это готовый компонент,​ который предоставляет X-Road-совместимый конвертер REST-SOAP. Сервис поддерживает ограниченный набор вариантов использования.+Сервисы должны использовать их собственные реализации - SOAP или REST. Если поставщик сервиса хочет предоставить SOAP и REST версии одного и того же сервиса,​ он должен реализовать обе версии. Другими словами,​ сервер безопасности не будет обеспечивать автоматическое преобразование SOAP в REST и обратно. В случае,​ если требуется автоматическое преобразование SOAP в REST, можно использовать расширение ​[[https://​github.com/​nordic-institute/​REST-adapter-service|REST Adapter Service]]. REST Adapter Service - это готовый компонент,​ который предоставляет X-Road-совместимый конвертер REST-SOAP. Сервис поддерживает ограниченный набор вариантов использования.
 ====== Аутентификация между компьютерами ====== ====== Аутентификация между компьютерами ======
  
-Реализация REST поддерживает взаимную аутентификацию TLS между Сервером безопасности и потребителем/​поставщиком услуг REST. Поддержка аутентификации на основе JWT (JSON Web Token) между Сервером безопасности и информационной системой может быть предоставлена в более поздних версиях.+Реализация REST поддерживает взаимную аутентификацию ​[[https://​ru.wikipedia.org/​wiki/​TLS|TLS]] между Сервером безопасности и потребителем/​поставщиком услуг REST. Поддержка аутентификации на основе ​[[https://​ru.wikipedia.org/​wiki/​JSON_Web_Token|JWT]] (JSON Web Token) между Сервером безопасности и информационной системой может быть предоставлена в более поздних версиях.
 Однако уже возможно использовать аутентификацию на основе JWT между клиентом сервиса и поставщиком сервиса. Как описано выше, сервер безопасности передает все HTTP-заголовки между потребителем и поставщиком услуг как есть, поэтому нет ограничений для реализации аутентификации на основе JWT на уровне приложения. Однако уже возможно использовать аутентификацию на основе JWT между клиентом сервиса и поставщиком сервиса. Как описано выше, сервер безопасности передает все HTTP-заголовки между потребителем и поставщиком услуг как есть, поэтому нет ограничений для реализации аутентификации на основе JWT на уровне приложения.
  
 +
 +----
 +
 +Автор С.Бутенко
about-rest-support.1558418965.txt.gz · Последние изменения: 2019/05/21 06:09 — admin1