Разное

1С обращение к веб сервису из 1с: Использование внешних веб-сервисов в 1С на примере загрузки курсов валют / Хабр

Web-сервисы в 1С — настройка, пример создания и обращения

Web-сервис в 1С 8.3 и 8.2 — объект метаданных, позволяющий интегрировать платформу 1С с другими информационными системами при помощи сервис-ориентированной архитектуры (SOA).

1С умеет как публиковать свои веб-сервисы, так и использовать веб-сервисы других информационных систем с помощью WS-ссылок.

Для публикации своих веб-сервисов необходимы: рабочий веб-сервер (IIS или Apache) и созданные в метаданных веб-сервисы. Пример обращения к веб-сервису 1С и множество другой полезной информации можно увидеть в данной статье.

Пример создания и настройки web-сервиса в 1С

Рассмотрим создание и настройку на примере веб-сервиса, позволяющего производить двухсторонний обмен между базами 1С 8 по средству SOAP.

Для начала обратим внимание на вкладку Прочее:

  • В поле URI пространства имен описывается расположение идентификатора ресурса.
  • Пакеты XDTO — описание типов, с которыми сможет работать будущий веб-сервис.
  • Имя файла публикации — название файла *.1CWS, который будет размещен на веб-сервере

Структура веб-сервиса 1С

Рассмотрим структуру веб-сервиса:

Если вы только начинаете программировать в 1С или просто хотите систематизировать свои знания — попробуйте Школу программирования 1С нашего друга Владимира Милькина. Пошаговые и понятные уроки даже для новичка с поддержкой учителя.
Попробуйте бесплатно по ссылке >>

DataExchange — сам web-сервис. UnloadData, LoadData — операции, по сути, описание функций, которые можно вызывать по протоколу SOAP.  ExchangePlanName, NodeCode и т.д. — передаваемые веб-сервису значения.

Модуль веб-сервиса

В модуле закладывается самое интересное — описание функций будущего веб-сервиса.  В нашем случае мы описываем функционал, позволяющий получать и отправлять данные, используя стандартные механизмы обмена 1С. Т.к. обмен идёт между одной платформой — 1С, то они не требуют сериализации данных.

Проверка работы http сервиса 1С на веб-сервере

Сделать это очень просто — после публикации достаточно вбить адрес веб-сервера 1С в браузер в таком формате:

http://<имя сервера>/ws/<ИмяФайлаВебСервиса>.1cws?wsdl

Если Вы увидите что-то вроде этого, Вы на правильном пути, и веб-сервис опубликован на сервере верно.

Если Вы начинаете изучать 1С программирование, рекомендуем наш бесплатный курс (не забудьте подписаться на YouTube — регулярно выходят новые видео):

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Web сервисы 1С, создание, настройка, примеры


Сегодня WEB сервисы используются практически повсеместно – именно они предоставляют нам информацию о рейсах самолетов и поездов, курсах валют и погоде. Неудивительно, что и 1С обладает возможностью создания собственных WEB сервисов, позволяющих выступать как в роли поставщика, так и потребителя. Данный механизм встроен в платформу «1С:Предприятие 8.3» и разработчики могут добавлять даже в типовую конфигурацию собственные объекты типа «WEB-сервисы». Их архитектура построена на наборе сервисов, позволяющих обмениваться информацией с другим программным обеспечением.

Создание веб-сервиса 1С


Одним из главных преимуществ WEB-сервисов 1С является отсутствие необходимости давать прямой доступ к данным ИБ. Правильно настроенный веб-сервис 1С позволяет другим приложениям пользоваться функциями извне. В таких случаях определять право пользования данными по заданным параметрам должна сама функция по прописанным разработчиком правилам.

Как создавать веб-сервис в 1С?


Чтобы определенная функция системы 1С стала доступна внешнему ПО, необходимо выполнить следующий алгоритм действий:


  1. Зайти в конфигурацию и в определенной ветке дерева добавить объект WEB-сервис;

  2. Описать все операции, которые сможет выполнять наш функционал. Описание функций производиться в модуле на встроенном в 1С языке;

  3. Добавить описание параметров функций веб-сервиса. Учтите, что типы данных описываются с учетом существующих типов механизма XDTO, появившегося в платформе версии 8.1;

  4. Опубликовать созданный WEB-сервис на сервере. Механизм, встроенный в платформу 1С, поддерживает следующие стандарты:

  • SOAP

  • WSDL

  • HTTP

  • SSL/TLS

  • WS-I BP

Пример создания простого WEB-сервиса


Чтобы наиболее наглядно продемонстрировать работу механизма WEB-сервисов, создадим пример – функционал, определяющий длину введенной строки. Программное обеспечение передаст в качестве параметра запроса строку, а функция, описанная в 1С, вернет число символов. При создании нужно помнить, что публикация этого механизма даст возможность обращения к нему различного ПО. Так как не каждое ПО способно воспринимать кириллицу, будем называть объекты конфигурации, используя латинские знаки.


Открываем конфигуратор, находим в дереве ветку «WEB-сервисы» и добавляем новый сервис «wa_LengthString». Также необходимо на вкладке «Операции» добавить новую операцию. Назовем ее «CalcLengthString», в свойствах укажем тип возвращаемого значения – int или integer и создадим внутри нее параметр «InputString». Тип значения оставляем string.

Рис.1 Работа в конфигураторе


Теперь необходимо прописать действие функции CalcLengthString в модуле WEB-сервиса. Для этого открываем свойства созданной функции и нажимаем кнопку в виде лупы справа, у поля ввода «Имя процедуры». 1С автоматически создаст функцию в модуле нашего WEB-сервиса и откроет его для того, чтобы мы описали действие CalcLengthString. Воспользуемся этим и напишем действие функции – определение длины вводимой строки.

Рис.2 Действие функции CalcLengthString


Фактически на этом создание простейшего WEB-сервиса закончено. Теперь необходимо «выложить» этот сервис в общий доступ, чтобы стороннее ПО или другие системы 1С могли пользоваться данным функционалом.

Публикация веб-сервиса 1С


Для того чтобы мы смогли опубликовать созданный веб-сервис с его функциональностью, нам необходимо иметь доступ на сайт. Перед тем как мы начнем публикацию сервиса, необходимо проверить имя файла в свойствах созданного модуля wa_LengthString. Оно должно быть понятное, простое и иметь расширение «1cws».

Рис.3 Публикация веб-сервиса


Теперь настало время публиковать созданный нами WEB-сервис на сервере. Эта возможность появилась в версии платформы 8.3 и многие компании уже поняли всю пользу этого функционала. Для того чтобы приступить к публикации, необходимо в конфигураторе открыть форму «Администрирование/Публикация на веб-сервере…».

Рис.4 Опубликовать созданный нами WEB-сервис


В открывшемся окне нам необходима настройка Web сервисов 1С и заполнение определенных полей:


  • Имя. Обозначает папку на веб-сервере, в которой будет храниться описание нашего веб-сервиса. Будьте внимательны к регистрам, так как иногда серверы различают символы большого и малого регистра;

  • Веб-сервер. Необходимо выбрать сервер из установленных на компьютере;

  • Каталог. Вы должны выбрать путь к папке, где хранятся данные веб-сервера по настройке подключения. Используются исключительно латинские буквы;

  • Два признака типа «Булево». Первый нам пригодиться, если необходимо настроить доступ через веб-клиент к конфигурации. Для того чтобы опубликовать сервис 1С, необходимо поставить вторую отметку.


Остается лишь проверить, что у нужного WEB-сервиса установлена галка в первом столбце, и нажать на «Опубликовать».

Рис.5 Опубликовать


Так как данный механизм еще достаточно новый, то вы можете столкнуться с ошибкой вида «Ошибка при выполнении файловой операции…». В этом случае вам нужно просто повторить нажатие «Опубликовать». В большинстве случаев это помогает, и вам покажется сообщение о том, что публикация веб-сервиса выполнена.


Проверить, опубликован ли ваш WEB-сервис на сервере, достаточно просто. Необходимо открыть любой браузер и в адресную строку вбить строчку типа:


.ru//ws/.1cws?wsdl


В ответ на такой запрос адреса браузер должен отобразить структуру файла XML. Если же вы видите пустую страницу, ошибку или непонятные символы (проблемы с кодировкой), то нужно еще раз проверить все действия. Также не лишним будет убедиться, что сервер настроен верно, и у вас есть к нему доступ. После успешной публикации WEB-сервис 1С смогут использовать сторонние приложения.

WS-ссылка


WS-ссылка — это общий объект конфигурации. Она предназначена для описания в прикладном решении «статической» ссылки на некоторый внешний веб-сервис стороннего поставщика.


WS-ссылка представляет собой WSDL описание веб-сервиса, импортированное из указанного источника. WS-ссылка недоступна для редактирования, однако можно просмотреть ее структуру и структуру типов данных, которые используются для описания параметров и возвращаемых значений:



Дальнейшая работа с такой ссылкой выполняется средствами встроенного языка.


Описание ссылки на веб-сервис в дереве конфигурации, с помощью объекта WS-ссылка, удобно для редко меняющихся сервисов. Описание веб-сервиса получается один раз, при создании объекта конфигурации, и хранится в конфигурации. Поэтому все обращения к такой ссылке из встроенного языка будут выполняться быстро. Однако в случае изменения описания веб-сервиса, потребуется повторный импорт его описания в WS-ссылку.

Динамическое обращение к веб-сервисам


Для работы с часто меняющимися веб-сервисами во встроенном языке предусмотрена возможность динамического считывания описания веб-сервиса и построение его прокси. Также эта возможность позволяет вызывать веб-сервисы, расположение которых станет известно только уже в процессе выполнения программы. Однако, несмотря на все преимущества, такой способ работы медленнее, т. к. каждый раз при создании прокси веб-сервера будет тратиться время на получение описания веб-сервиса.


Ниже приведен пример создания прокси веб-сервиса и использования одного из методов веб-сервиса.


Web-сервисы


 Web-сервисы — это один из механизмов платформы, используемых для интеграции с другими информационными системами. Он является средством поддержки SOA (Service-Oriented Architecture) — сервис-ориентированной архитектуры, которая является современным стандартом интеграции приложений и информационных систем.


Значительным преимуществом сервис — ориентированной архитектуры является то, что она позволяет развивать инфраструктуру предприятия однородным образом, без разрушения уже существующих решений. Ее использование позволяет минимизировать издержки за счет интеграции разнородных и унаследованных систем в современный ландшафт предприятия. Она позволяет реализовывать слабо связные программные компоненты с тем, чтобы максимально повысить их повторную используемость.


Сервис-ориентированная архитектура интенсивно развивается и поддерживается крупными вендорами. Она строится на базе сервисов, автономных или управляемых извне. Предпочтительным способом их реализации являются веб-сервисы. Они независимы от платформы, автономны и поддерживаются повсеместно.


Прикладное решение 1С:Предприятия 8 может являться как поставщиком веб-сервисов, так и потребителем веб-сервисов, опубликованных другими поставщиками.

  • 1С:Предприятие — поставщик веб-сервисов

    В конфигурацию можно добавить специальный объект, — Web-сервис, — с помощью которого описать некоторую функциональность прикладного решения, например, получение списка имеющихся на некотором складе товаров, их количества и цен. После публикации на веб-сервере такой сервис будет доступен сторонним потребителям.


В качестве потребителей могут выступать системы, использующие произвольные аппаратные и программные платформы. Технология веб-сервисов является платформенно независимой. 

  • 1С:Предприятие — потребитель веб-сервисов

    В прикладном решении можно описать ссылку на веб-сервис, опубликованный сторонним поставщиком. После этого прикладное решение сможет использовать данные, получаемые с помощью такого веб-сервиса, в своих внутренних прикладных алгоритмах. Подробнее…

Техническая реализация web-сервисов


Если прикладное решение является поставщиком веб-сервиса то и в файловом, и в клиент-серверном варианте работы взаимодействие между прикладным решением и потребителями веб-сервиса осуществляется через веб-сервер, с помощью модуля расширения веб-сервера.



При этом, когда потребитель обращается к web-сервису прикладного решения, выполняется модуль web-сервиса. Этот модуль содержится в конфигурации и в нем располагаются процедуры, выполняемые при вызове тех или иных операций web-сервиса.


В случае клиент-серверного варианта работы этот модуль будет исполняться в кластере. В случае файлового варианта работы — в модуле расширения веб-сервера.


Если прикладное решение является потребителем веб-сервиса стороннего поставщика, то в этом случае взаимодействие между прикладным решением и поставщиком веб-сервиса осуществляет клиентское приложение. Оно вызывает те или иные операции веб-сервиса и обрабатывает полученные данные.



Платформа 1С:Предприятия, выступающая в роли потребителя веб-сервиса, поддерживает оптимизированную передачу двоичных данных по протоколу MTOM. Включение режима MTOM в 1С:Предприятии происходит автоматически.

Предприятие 8. Веб-сервисы. Реализация веб-сервиса

Содержание статей: 1С:Предприятие 8. Веб-сервисы
Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Введение

Для создания самого простого веб-сервиса необходимо:

  1. создать в дереве метаданных объект Web-Сервис;

  2. указать его URI пространства имен;
  3. создать необходимую операцию, если нужно указать ее параметры и тип возвращаемого значения;
  4. написать обработчик вызываемой операции;
  5. опубликовать веб-сервис.

После этих действий веб-сервисом можно будет пользоваться. Таким образом будет создан веб-сервис, который сможет оперировать только простыми типами данных. 

Итак начнем.

Откройте конфигурацию и в дереве метаданных найдите ветку «Общие — Web-сервисы». Нажмите правой кнопкой и добавьте новый элемент.

Введите имя создаваемого веб-сервиса.

Имя веб-сервиса можно задать русское. И платформа его сохранит и опубликует, но рекомендую использовать латиницу в названиях веб-сервисов,  ws-операций, параметров ws-операций. Например, chrome не смог отобразить wsdl файл веб-сервиса с русским именем.
Перейдите на вкладку  «Прочее» и укажите параметр «URI пространство имен».

В документации об этом параметре написано чуть больше чем ничего, примерно то, что это поле служит для идентификации вашего веб-сервиса. Когда я делал свой первый веб-сервис, мне казалось что это ссылка на сайт, на котором я публикую свой веб-сервис и все наименования буду получаться через запрос к этому сайту. На самом деле «URI пространство имен» не что иное как строка определяющая название набора ваших имен (названий веб-сервиса, операций, параметров, типов данных и т.д.). То есть если вы объявите свой тип «integer» то xml-парсер не будет ругаться, так как этот тип принадлежит вашему пространству имен. Мало того если «URI пространство имен» будет содержать русские символы и не будет соответствовать стандарту как формат URI, платформа все равно опубликует такой веб-сервис, и он будет работать. Но по стандартам рекомендуется использовать URI ссылку. Я советую того же самого.
Простое и понятное объяснение пространства имен можно прочитать тут.

Поле «Пакеты XDTO» не обязательное. Оно определяет набор пакетов XDTO в которых вы можете оказать свои типы значений. Это не обязательное поле, по умолчанию вам всегда доступны типы пространства имен «http://www.w3.org/2001/XMLSchema». О пакетах XDTO я расскажу чуть позже.

«Имя файла публикации», это имя файла, в котором хранятся настройки веб-сервиса для Apache(путь к базе и другие) после публикации. Папка, в которой находится этот файл, определяется при публикации. О публикации на веб-сервере будет рассказано позже.

Веб-сервис создан, но еще нет ни одной функции которую он мог бы исполнить. Надо добавить операцию. Для этого добавьте в созданный веб-сервис операцию. Нажмите не веб-веб-сервис правой кнопкой и выберите «Добавить-Операция». Она будет к вашему операнду прибавлять 2 и возвращать значение. Давайте назовем ее «Plus2». Можно указать и русское название, многие клиенты его обработают, но все же могут возникнуть проблемы. 

    «Тип возвращаемого значения» это тип описанный в указанном вами пакете XDTO или же тип из пространства имен «http://www.w3.org/2001/XMLSchema». Именно в этом типе веб сервис будет возвращать значение.
    «Возможно пустое значение» признак что ws-операция может не вернуть значение(nillable=»true»).
    «В транзакции» указывает что код веб-сервиса будет выполняться в транзакции. А «Режим управления блокировкой данных» определяет тип блокировки данных при транзакции по умолчанию.

    Установим тип возвращаемого значения в int. В поле «Имя метода» укажем имя «Plus2» для нового метода, который будет выполнять обработку. При нажатии на лупу метод будет автоматом создан в модуле веб-сервиса.
    Напишем простой код.

    Функция Plus2(Параметр)
    Возврат Параметр+2;
    КонецФункции

    Вы заметили что на входе функции у нас есть параметр «Параметр». Для того что бы в метод этот параметр был передан надо добавить его в дереве метаданных. Для этого щелкните правой кнопкой по веб-операции Plus2 и выберите «Добавить-Параметр».

    Давайте назовем его «Param». Названия параметров тоже можно указывать русскими, мало того  класс SoapClient языка PHP работает с ними корректно, ведь параметры передаются через массив. Желательно использовать кодировку UTF-8.

    Укажем «Тип значения» int из пространства имен «http://www.w3.org/2001/XMLSchema».

    Свойство «Возможно пустое» указывает что можно передать значение null в веб-операцию.

    «Направление передачи» указывает по значению или по «ссылке» передается операнд в ws-операцию. Возможные значение «Входной», «Выходной», «Входной-Выходной». Таким образом если вы для параметра укажете «Выходной» или «Входной-Выходной» то сможете менять значения операнда. В результате xml сообщение-ответ дополнится строкой с новым значением операнда. Я пока не сталкивался с задачами которые можно решить только используя Выходное направление операнда, потому не могу дать какие то комментарии по этому свойству.

    Вот в принципе и всё! Веб сервис создан, но существует он пока что только как описание в вашей конфигурации. Для того что бы им воспользоваться надо его опубликовать на вашем веб-сервере. Как опубликовать вы можете прочитать в статье 1С:Предприятие 8. Веб-сервисы. Публикация и тестирование.

    Предприятие 8. Веб-сервисы. Публикация и тестирование

    Содержание статей: 1С:Предприятие 8. Веб-сервисы
    Предыдущая статья: 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса

    Публикация веб-сервиса — это процесс настройки веб-сервера (Apache или IIS) на работу совместно с Платформой 1С. То есть, после публикации, ваш веб-сервер станет посредником между клиентом веб-сервисов и базой 1С. При этом веб-сервер, а точнее менеджер сервисов 1с, запущенный в процессе веб-сервера, будет заниматься слежением за соединениями с информационной базой, приемом запросов от клиентов, поддержкой WSDL описания, сериализацией сообщений, реализацией протоколов SOAP.

    Обязательным условием для   публикации является наличие установленного веб-сервера и установленные модули расширения веб-сервера. Модули расширения веб-сервера устанавливаются из инсталлятора платформы 1С. Веб-сервер Apache можно скачать по ссылке:  httpd-2.2.25-win32-x86-openssl-0.9.8y.msi или найти другую версию на странице загрузки. Про установку Apache довольно много статей, думаю установить ее не составит проблем.

    Сделаю примечание: публикацию можно осуществить как на клиент-серверном варианте базы, так и на файловом, но публикация на файловом варианте существует исключительно для тестов и заметно уступает по скорости клиент-серверному варианту.

    Публикацию веб-сервисов можно выполнять и на ОС Linux и на ОС Windows. Я работал пока что только с Windows, потому расскажу про нее.

    Публикация на ОС Windows

    Если для публикации веб-сервиса на Linux не обойтись без командной строки(8.3 пока еще бета), то для публикации на Windows достаточно конфигуратора 1С.
    Откройте конфигуратор и зайдите в меню «Администрирование — Публикация на веб-сервере…».

    Появится окно «Публикация на веб-сервере».

    «Имя» — это имя публикации. Если бы можно было представить «сайт» 1С как папку на вашем веб сервере, то путь к этой папке в браузере как раз бы определялся как имя сервера / имя публикации. То есть ссылка на веб-клиент выглядит так:

    http://имя сервера/имя публикации

    Примечание: при использовании в качестве веб-сервера Apache все ссылки веб-клиента будут регистрозависимыми. То есть в данном случае при переходе по ссылке


    http://имя сервера/forCodeNotesBlog

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

    «Веб-сервер» — это список выбора веб-сервера из установленных на данный момент веб-серверов на текущей машине. Если вы установите веб-сервер Apache то он появится в этом поле автоматически.

    «Каталог» — это путь к каталогу в котором хранится файл настройки подключения веб-сервера к информационной базе 1С. Путь должен содержать только латинские символы.

    «Публиковать тонкий клиент и веб-клиент» — указывает можно ли подключиться к базе в тонком клиенте и веб-клиенте. Простыми словами, если галочка снята то интерфейс конфигурации не будет отображен и работать с базой будет невозможно. Это может быть полезно если конфигурация выступает только как поставщик веб-сервисов.

    «Публиковать Web-сервисы» — указывает, будут ли опубликованы ваши веб-сервисы.

    После заполнения всех полей нажмите кнопку «Опубликовать» и веб-сервис будет опубликован.

    Теперь можно воспользоваться свои веб-сервисом. После публикации я для начала смотрю формируется ли описание WSDL. Чтобы его получить достаточно браузера. Ссылка на описание WSDL формируется по следующему принципу:

    http://имя сервера/имя публикации/ws/имя веб-сервиса?wsdl

    То есть в нашем случае ссылка будет выглядеть так:

    http://192.168.1.100/ForCodeNotesBlog/ws/WebService?wsdl

    Если WSDL сформировался, то это хороший знак). 

    Но сейчас мы рассмотрим более качественный продукт, чем самописная обработка — это кросстлатформенная система для работы с веб-сервисами soapUI(http://www.soapui.org).

    Имеется платная и бесплатная версия программы. Нам достаточно будет бесплатной. Скачать ее можно по ссылке http://sourceforge.net/projects/soapui/files/. 

    Ну что же. Давайте вызовем нашу веб-операцию. Для этого программе надо указать описание нашего веб-сервиса. В левой части программы есть дерево проектов. Нажмем по корню дерева правой кнопку и вызовем команду «New soapUI project».

    Появится окно ввода ссылки или файла с описанием веб-сервиса.

    Укажите название проекта и ссылку на WSDL файл. На форме так же присутствует набор галочек, для формирования тестов. Но в этой статье мы рассмотрим только вызов веб-операций.
    Если в вашей базе есть пользователи, то доступ к описанию веб-сервиса будет происходить с запросом логина и пароля. После нажатия на OK вы получите предложение ввести логин пароль пользователя, который имеет доступ на использование. Скажу так: любой пользователь базы данных, даже тот у которого нет ни одной роли, имеет право прочитать описание веб-сервиса. Именно описание WSDL, на выполнение веб-операций у него не будет прав.

    Нажмите ОК и в дереве проектов вы увидите свой веб-сервис. 

    Почему это дерево называется деревом проектов а не деревом веб-сервисов? Потому что помимо структуры вашего веб-сервиса он содержит ветки настроек, тестов, запросов и прочего. Например если вы развернете дерево и найдете свою операцию, то заметите что у нее уже создан один запрос (Request1). Этот запрос содержит SOAP сообщение. Если по нему щелнкуть мышкой два раза то вы увидите новое окно, изображенное на рисунке выше.
    Левая часть окна содержит SOAP сообщение запрос, правая будет содержать в себе результат веб-операции. Вместо вопросительных знаков укажите свои значение параметров и нажмите кнопку «Submit request to specified endpoint URl», изображенное в виде зеленой стрелочки.
    После нажатия на эту кнопку в правом окне будет возвращен результат веб-операции.

    Примечание: в платной версии soapUI имеется возможность редактирования SOAP сообшения привычными способами — ввоз данных в поля, вместо редактирования XML.

    Если в вашей базе есть хотя бы один пользователь, то перед выполнением веб-операции вам нужно ввести его учетные данные. Для ввода учетных данных необходимо нажать кнопку «Aut» под левым окном.

    В поле «Authorisation Type» необходимо указать «Preemptive».

    И ввести логин пароль пользователя базы данных, который имеет право на исполнение этой веб-операции.

    После ввода учетных данных можно выполнить операцию получить результат в правом окне. К сожалению для каждого запроса (Request) необходимо заново вводить учетные данные.

    После выполнения веб-операции помимо результата, вам доступные дополнительные сведения, такие как длительность выполнения и объем переданных данных в байтах. Эти данные отображаются в строке состояния текущего окна.

    На приведенных выше изображениях, вы видите результат исполнения, описанной в других статьях, операции Plus2. Мы видим, что на выполнение операции ушло 1243 миллисекунд, что довольно много на операцию сложения. Объем переданных данных — 316 байт.

    Примечание: для тестирования веб-сервисов у разработчиков soapUI есть еще одно бесплатное приложение — loadUI.

    Допустим у вас есть веб-операция, имеющая операнд тип datetime. При выполнении обязательно указание даты и вы не можете указать пустое значение. Дата указывается в определенном формате:

    ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм

    либо

    ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс

    либо

    ГГГГ-ММ-ДДTЧЧ:мм:СС

    Пример:

    2012-09-14T00:00:00.000+02:00

    Возможно есть еще форматы записи для поля типа datetime. Причем формат ГГГГ-ММ-ДДTЧЧ:мм:СС.ссс+/-ЧЧ:мм содержит в себе данные о часовом поясе отправителя запроса. Если веб-операция на 1С получает такое значение, то она считает это время местным временем отправителя и преобразует в свое местное время. Данный пример, а так же как указать значение null более подробно описаны в статье 1С:Предприятие 8. Веб-сервисы. Написание кода веб-сервиса.
    Тип число тоже требует обязательного указания значения — хотя бы нуля.

    Web сервисы 1С

    Обмен данными обычно организовывается с помощью выгрузки файла из одной программы и загрузки в другую. Некоторые программисты предоставляют сторонним программам доступ в SQL базу 1С (что вроде как сильно не рекомендуется).

    Термин «обмен данными» не всегда подходит к задаче, иногда более корректно сказать – предоставление данных. Например, внешней программе требуется идентифицировать – существует ли такой клиент в 1С и его баланс.

    Предоставление доступа к данным 1С – некорректно по причинам безопасности данных. Необходим скорее механизм проверки по имени и паролю с дальнейшим возвратом баланса.

    Этот подход называют – сервисным, когда программа предоставляет не данные, а сервис, который позволяет идентифицировать клиента и узнать его баланс.

    Как это работает?

     

    Веб сервисы

    SOA – «сервис ориентированная архитектура» – означает, что программы для обмена данными друг с другом используют «сервисы».

    Веб сервис – это набор функций (процедур), которые могут быть вызваны извне программы и базы данных.

    Для того, чтобы другая программа знала, что такой «сервис» есть у этой программы, первая на веб сайте выкладывает сведения о своих сервисах. Формат такого описания – файл WSDL.

    Функции извне вызываются (запускаются) запросом по протоколу SOAP.

    Для передачи параметров и результатов используется XML. Для работы с веб-сервисами Вы должны иметь базовое понимание про XML и XDTO.

     

    Web сервисы 1С

    Web сервис 1С это способ, с помощью которого можно разрешить запускать некоторые функции 1С снаружи базы 1С, в том числе из других программ или других баз 1С.

    Это лучше, чем предоставление прямого доступа к данным 1С, так как при вызове метода (функции) web сервиса 1С, доступ к данным внешняя программа не имеет. Функция на языке 1С самостоятельно определяет право внешней программы получить конкретную толику данных по переданным параметрам (например, имени и паролю).

    Web сервис 1С это объект 1С, который находится в конфигурации, в ветке Общие/Web-сервисы.

    Так как функционирует web сервис 1С с помощью XML пространство имен и пакет XDTO. XDTO пакеты 1С мы обсуждали ранее.

    Во многих случаях, можно не создавать свой пакет XDTO, а использовать по умолчанию – выбрав из списка пакет www.sample-package.org

     

    Методы web сервиса 1С

    После этого нужно добавить список функций (методов веб сервиса 1С) – которые будут предоставляться наружу. Называть их лучше англоязычно. Функция может иметь параметры.

    Базовые типы к использованию:

    • string – строка
    • int или integer – целое число
    • real – дробное число
    • date – дата.

    Для каждой добавленной функции веб сервиса 1С, в свойствах нужно создать обработчик, так же, как мы это делали в командах 1С, подписках на событиях 1С и так далее.

    Именно эта функция 1С будет выполняться при вызове метода веб сервиса 1С. Не забывайте, что выполняться она будет на сервере 1С. Файловый режим работы 1С с веб-сервисами не рекомендуется.

    Функция обычно возвращает какие-либо данные. Обычно указывают тип string и возвращают строку XML.

    Строку XML можно сформировать с помощью объектов языка 1С для работы с XML – ДокументDOM и ФабрикаXDTO, а можно просто составить текстовую строку, в которой хранится текст XML.

     

    Публикация web сервиса 1С

    Как мы говорили раньше, другие программы должны «знать», что веб сервис 1С существует, имеет такой вот список методов и так далее.

    Описание должно лежать на веб сайте. Для этого нужно:

    • Иметь веб сайт
    • В свойствах web сервиса 1С указать имя файла с расширением 1cws, который является ссылкой на WSDL описание
    • Выложить этот файл на веб сайт в конфигураторе с помощью пункта меню Администрирование/Публикация на веб-сервере.

    Далее нужно проверить доступность и корректность файла. Для этого зайдите в Internet Explorer по адресу
    http://www.ИмяСайта.ru/ПутьНаСайте/ИмяФайла.1cws?wsdl

    Браузер должен отобразить некий файл XML (пример файла WSDL здесь http://ru.wikipedia.org/wiki/WSDL), а не ошибку, не пустую страницу и не невнятный текст на любой кодировке.

    После успешной публикации web сервис 1С можно использовать. Для этого в другой программе нужно использовать данный интернет адрес для ссылок на веб сервис 1С.

    Например, Visual Studio позволяет для любого языка (C++, C#, Visual Basic) – включить в проект web сервис 1С по его WSDL описанию и сгенерировать класс для использования веб-сервиса 1С.

    Использования веб-сервиса 1С из другой 1С читайте далее.

     

    javascript — Как ограничить доступ к моей веб-службе?

    Переполнение стека

    1. Около
    2. Продукты

    3. Для команд
    1. Переполнение стека
      Общественные вопросы и ответы

    2. Переполнение стека для команд
      Где разработчики и технологи делятся частными знаниями с коллегами

    3. Вакансии
      Программирование и связанные с ним технические возможности карьерного роста

    4. Талант
      Нанимайте технических специалистов и создавайте свой бренд работодателя

    5. Реклама
      Обратитесь к разработчикам и технологам со всего мира

    .

    Введение в веб-службы на основе SOAP

    Чтобы узнать больше о веб-сервисах, давайте сначала разберемся с концепцией сервис-ориентированной архитектуры.

    Веб-сервис на основе SOAP

    Что такое сервис-ориентированная архитектура?
    Сервис-ориентированная архитектура — это принцип проектирования программного обеспечения и архитектурный шаблон проектирования для представления автономной функциональной единицы, называемой службой. SOA продвигает принципы проектирования, включая слабую связь, возможность повторного использования и грубые сервисы.В терминах архитектуры предприятия преимущества SOA заключаются в гибкости и быстром реагировании на потребности бизнеса, повышении окупаемости инвестиций за счет снижения затрат на интеграцию и снижении затрат на разработку за счет повторного использования компонентов. Enterprise Aarchitect продвигает использование Enterprise Service Bus в качестве уровня интеграции для крупномасштабных корпоративных онлайн-приложений.
    Например. Очень хорошим примером может служить Выписка по счету ваших транзакций, информация о ценах на продукты, сервис обработки изображений, картографический сервис, сервис определения местоположения и т. Д.
    Что такое веб-службы?

    Веб-службы — это просто форма реализации сервис-ориентированной архитектуры, которая может обмениваться данными между разнородными системами независимо от платформы. Провайдеры услуг определяют интерфейс, описываемый WSDL, и сообщениями обмениваются с потребителями услуг с помощью сообщений SOAP. Сообщения могут передаваться по протоколам HTTP, FTP или SMTP.
    Веб-службы могут быть на основе SOAP или REST.
    В сегодняшнем пошаговом руководстве мы рассмотрим, как создать веб-службу на основе SOAP и потребителя, который будет ее использовать.Мы будем использовать API JAX-WS (Java API для веб-служб XML) для создания веб-службы.

    Программное обеспечение :
    Weblogic Application Server 12c
    Eclipse Oepe 12c
    Weblogic Webservice Tool — это автоматически создает весь необходимый код и файлы WSDL и позволяет разработчикам сосредоточиться на бизнес-логике.

    Шаг 1:
    Создайте в Eclipse новый динамический веб-проект.

    Создать новый динамический веб-проект

    Щелкните «Изменить» и добавьте фасеты, связанные с компонентами Weblogic Webservice.

    Шаг 2:
    Установите флажки, чтобы убедиться, что все зависимые модули также включены, как указано на снимке экрана.

    Добавить аспекты проекта, связанные с Weblogic Webservice

    Шаг 3:
    Корневой каталог контекста по умолчанию — CalculatorServiceServer, а каталог содержимого веб-модуля — WebContent. Щелкните Готово.

    Шаг 4:
    Теперь щелкните правой кнопкой мыши только что созданный проект и добавьте модуль Weblogic Web Service в свой проект.

    Создать новый веб-сервис Weblogic

    Шаг 5:
    Создайте новую веб-службу. Добавьте сведения о пакете и дайте имя веб-сервису.

    Создать новую веб-службу

    Шаг 6:

    Инструмент веб-службы в Eclipse создаст интерфейс конечной точки службы (контракт) с веб-методом по умолчанию hello (). Мы можем заменить метод по умолчанию на необходимый метод — add (). Рекомендуется создать интерфейс, объявляющий методы, сопоставленные с операциями веб-службы.Этот интерфейс известен как интерфейс конечной точки службы (SEI). Всякий раз, когда мы видим аннотацию @WebService, она означает, что интерфейс является SEI.

    Интерфейс калькулятора SEI

    Шаг 7:
    CalculatorImpl.java создается как класс JWS (веб-служба Java).
    Заменить код по умолчанию, присутствующий в CalculatorImpl.java. Добавьте детали реализации в add ().

    Внедрение SEI — CalculatorImpl.java

    Шаг 8:
    На приведенной ниже диаграмме поясняется сопоставление между реализацией веб-службы, помеченной @webService, и сопоставлением wsdl.
    Javax.jws.WebService сообщает серверу приложений, что этот класс нужно рассматривать как веб-сервис. Различные атрибуты javax.jws.Webservice:

    • имя — имя веб-службы и соответствует элементу в файле WSDL.
    • targetNameSpace — Пространство имен XML, используемое для элементов WSDL и XML, созданных из этой веб-службы.
    • serviceName — имя веб-службы. Значение по умолчанию — имя файла jws с суффиксом «служба».
    • wsdlLocation — URL абсолютного файла wsdl.
    • endpointInterface — он основан на существующей конечной точке службы веб-службы (SEI).

    Сравнение JAX-WS и WSDL

    На приведенном выше рисунке имя веб-службы в интерфейсе калькулятора сопоставляется с именем веб-службы, указанным в элементе portType в WSDL.
    Имя порта, имя службы, целевое пространство имен и взаимодействие конечной точки службы (SEI) из CalculatorImpl.java сопоставляются с CalculatorService.wsdl файл.

    Шаг 9:
    Теперь пора запустить веб-сервис на сервере Weblogic 12c, щелкнув проект правой кнопкой мыши и выбрав «Выполнить на сервере», а затем добавив проект CalculatorServiceServer на сервер Weblogic и настроив их.

    Добавить проект CalculatorServiceServer на сервер Weblogic

    Шаг 10:
    Веб-сервис теперь развернут на сервере и доступен клиентам для использования. Доступ к нему и управление им можно получить с консоли сервера weblogic.

    Серверная консоль Weblogic

    Файл wsdl можно просмотреть и протестировать из места, показанного на снимке экрана.

    Шаг 11:
    Файл wsdl с адресом удаленного расположения.

    CalculatorService WSDL

    http://10.0.2.15:7001/CalculatorServiceServer/CalculatorServer?WSDL

    Шаг 12:
    На приведенной ниже диаграмме показан файл CalculatorService.wsdl и поясняются все ключевые элементы файла WSDL.WSDL — это контракт на обслуживание с клиентами и поставщиками услуг.
    Определение — Самый внешний элемент файла WSDL — это . Это контейнер для всех других элементов, определенных в документе wsdl. Таким образом, это корневой элемент.

    • <типы> — описывает все используемые типы данных, относящиеся к обмену сообщениями между клиентом и сервером. Это необязательное поле. Раздел типов относится к XSD (определение схемы XML), который определяет типы данных.Если этот раздел пуст, тогда веб-сервисом будут использоваться только простые типы данных.
    • <сообщения> — определяет данные, которыми обмениваются поставщик и потребитель веб-сервиса. Сообщения создаются из типов данных.
    • — представляет веб-службу как именованные операции. Каждая операция может иметь одно или несколько сообщений.
    • — определяет, как передаются сообщения. Он доступен через HTTP GET, HTTP POST, SOAP (поверх протокола HTTP).В разделе привязки определения WSDL переходят от абстрактного к конкретному, предоставляя конкретные сведения о веб-службе. Элемент привязки должен указывать детали реализации веб-службы, абстрактно определенные в portType.
    • — указывает на конечной точке, что клиенты могут получить доступ к веб-службе по этому пути.

    CalculatorService Описание WSDL

    Шаг 13:
    Мы можем протестировать веб-сервис с помощью клиента Weblogic Test.

    Тестовый клиент WebLogic

    Шаг 14:

    Тестовый клиент Weblogic показывает успешный результат операции добавления и выдает сообщение SOAP запроса и ответа.

    Тестовый клиент — запрос и ответ SOAP

    Шаг 15:

    Теперь я хочу создать сервлет, который будет действовать как клиент веб-сервиса, который будет использовать веб-сервис Calculator, который мы создали на предыдущих шагах.
    Создайте новый динамический веб-проект — CalculatorServiceClient и добавьте фасеты клиентов Oracle Weblogic Web Service.

    Добавить фасет клиента Weblogic Webservice

    Шаг 16:

    Создайте новый клиент веб-службы, щелкнув правой кнопкой мыши проект CalculatorServiceClient -> Выбрать новый -> Выбрать другой -> Поиск клиента веб-службы Weblogic из мастеров. Теперь введите ссылку на файл WSDL. В этом случае мы будем использовать удаленное определение файла WSDL. Перед нажатием убедитесь, что файл WSDL подтвержден.

    Добавить расположение WSDL

    При нажатии кнопки «Далее» коды CalculatorServiceServer экспортируются в CalculatorService.банка. При нажатии кнопки «Далее» укажите расположение WSDL среды выполнения. Я использовал опцию Copy WSDL into client jar.

    Создать CalculatorService.jar

    Шаг 17:

    Теперь создайте класс сервлета, который будет вызывать веб-службу.

    Создать сервлет для вызова веб-службы

    Шаг 18:

    Давайте посмотрим на код сервлета клиента.

    Выходные данные сервлета отображают весь результат операции добавления.

    Выход сервлета TestCalculatorWS

    Надеюсь, вам понравилась статья. Публикуйте свои обзоры, комментарии и отзывы и делитесь знаниями с помощью кнопок социальных сетей.

    Загрузить полный код:

    .

    STS — Документация Boto3 Docs 1.15.6

    Возвращает набор временных учетных данных безопасности, которые можно использовать для доступа к ресурсам AWS, к которым у вас обычно нет доступа. Эти временные учетные данные состоят из идентификатора ключа доступа, секретного ключа доступа и токена безопасности. Обычно вы используете AssumeRole в своей учетной записи или для доступа между учетными записями. Для сравнения AssumeRole с другими операциями API, которые создают временные учетные данные, см. Раздел «Запрос временных учетных данных безопасности» и «Сравнение операций API AWS STS» в Руководстве пользователя IAM .

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

    Вы не можете использовать учетные данные пользователя root для учетной записи AWS для вызова AssumeRole. Вы должны использовать учетные данные для пользователя IAM или роли IAM для вызова AssumeRole.

    Для доступа между учетными записями представьте, что у вас есть несколько учетных записей и вам нужен доступ к ресурсам в каждой учетной записи. Вы можете создать долгосрочные учетные данные в каждой учетной записи для доступа к этим ресурсам. Однако управление всеми этими учетными данными и запоминание того, к какой учетной записи можно получить доступ, может занять много времени.Вместо этого вы можете создать один набор долгосрочных учетных данных в одной учетной записи. Затем используйте временные учетные данные безопасности для доступа ко всем другим учетным записям, взяв на себя роли в этих учетных записях. Для получения дополнительной информации о ролях см. Роли IAM в Руководстве пользователя IAM .

    Продолжительность сеанса

    По умолчанию временные учетные данные безопасности, созданные AssumeRole, действуют в течение одного часа. Однако вы можете использовать необязательный параметр DurationSeconds, чтобы указать продолжительность сеанса.Вы можете указать значение от 900 секунд (15 минут) до максимальной продолжительности сеанса для роли. Этот параметр может иметь значение от 1 часа до 12 часов. Чтобы узнать, как просмотреть максимальное значение для вашей роли, см. Раздел Просмотр настройки максимальной продолжительности сеанса для роли в Руководстве пользователя IAM . Максимальный предел продолжительности сеанса применяется при использовании операций API AssumeRole * или команд интерфейса командной строки accept-role *. Однако ограничение не применяется, когда вы используете эти операции для создания URL-адреса консоли.Для получения дополнительной информации см. Использование ролей IAM в Руководстве пользователя IAM .

    Разрешения

    Временные учетные данные безопасности, созданные AssumeRole, можно использовать для вызовов API к любой службе AWS за следующим исключением: нельзя вызывать операции API GetFederationToken или GetSessionToken AWS STS.

    (Необязательно) В эту операцию можно передать встроенные или управляемые политики сеанса. Вы можете передать один документ политики JSON для использования в качестве встроенной политики сеанса.Вы также можете указать до 10 управляемых политик для использования в качестве политик управляемых сеансов. Обычный текст, который вы используете как для встроенных, так и для управляемых политик сеанса, не может превышать 2048 символов. Передача политик в эту операцию возвращает новые временные учетные данные. Получающиеся в результате разрешения сеанса являются пересечением политики на основе идентификации роли и политик сеанса. Вы можете использовать временные учетные данные роли в последующих вызовах API AWS для доступа к ресурсам в аккаунте, которому принадлежит роль.Вы не можете использовать политики сеанса для предоставления большего количества разрешений, чем разрешено политикой на основе удостоверений предполагаемой роли. Для получения дополнительной информации см. Политики сеанса в Руководстве пользователя IAM .

    Чтобы взять на себя роль из другого аккаунта, ваша учетная запись AWS должна быть доверенной этой роли. Отношения доверия определяются в политике доверия роли при создании роли. В этой политике доверия указано, каким учетным записям разрешено делегировать этот доступ пользователям в учетной записи.

    Пользователь, который хочет получить доступ к роли в другой учетной записи, также должен иметь разрешения, делегированные администратором учетной записи пользователя. Администратор должен прикрепить политику, которая позволяет пользователю вызывать AssumeRole для ARN роли в другой учетной записи. Если пользователь находится в той же учетной записи, что и роль, вы можете выполнить одно из следующих действий:

    • Прикрепите к пользователю политику (идентичную предыдущему пользователю в другой учетной записи).
    • Добавьте пользователя в качестве участника прямо в политику доверия роли.

    В этом случае политика доверия действует как политика на основе ресурсов IAM. Пользователям той же учетной записи, что и роль, не требуется явного разрешения для принятия роли. Для получения дополнительных сведений о политиках доверия и политиках на основе ресурсов см. Политики IAM в Руководстве пользователя IAM .

    Теги

    (Необязательно) Вы можете передавать в сеанс пары «ключ-значение» тега. Эти теги называются тегами сеанса. Для получения дополнительной информации о тегах сеанса см. Передача тегов сеанса в STS в Руководстве пользователя IAM .

    Администратор должен предоставить вам разрешения, необходимые для передачи тегов сеанса. Администратор также может создавать отдельные разрешения, позволяющие передавать только определенные теги сеанса. Для получения дополнительной информации см. Учебное пособие: Использование тегов для управления доступом на основе атрибутов в Руководстве пользователя IAM .

    Вы можете установить теги сеанса как переходные. Транзитивные теги сохраняются во время связывания ролей. Дополнительные сведения см. В разделе «Объединение ролей с тегами сеанса» в Руководстве пользователя IAM .

    Использование MFA с AssumeRole

    (Необязательно) Вы можете включить информацию многофакторной аутентификации (MFA) при вызове AssumeRole. Это полезно для сценариев с несколькими учетными записями, чтобы гарантировать, что пользователь, который принимает роль, прошел аутентификацию с помощью устройства AWS MFA. В этом сценарии политика доверия предполагаемой роли включает условие, которое проверяет аутентификацию MFA. Если вызывающий абонент не включает действительную информацию MFA, запрос на принятие роли отклоняется.Условие в политике доверия, которое проверяет проверку подлинности MFA, может выглядеть следующим образом.

    «Condition»: {«Bool»: {«aws: MultiFactorAuthPresent»: true}}

    Дополнительные сведения см. В разделе «Настройка доступа к API с защитой MFA» в руководстве пользователя IAM .

    Чтобы использовать MFA с AssumeRole, вы передаете значения для параметров SerialNumber и TokenCode. Значение SerialNumber определяет оборудование пользователя или виртуальное устройство MFA. TokenCode — это временный одноразовый пароль (TOTP), который выдает устройство MFA.

    См. Также: Документация по API AWS

    Синтаксис запроса

     response = client.assume_role (
        RoleArn = 'строка',
        RoleSessionName = 'строка',
        PolicyArns = [
            {
                'arn': 'строка'
            },
        ],
        Политика = 'строка',
        DurationSeconds = 123,
        Теги = [
            {
                'Ключ': 'строка',
                'Значение': 'строка'
            },
        ],
        TransitiveTagKeys = [
            'строка',
        ],
        ExternalId = 'строка',
        SerialNumber = 'строка',
        TokenCode = 'строка'
    )
     
    Параметры
    • RoleArn ( строка ) —

      [ТРЕБУЕТСЯ]

      Имя ресурса Amazon (ARN) принимаемой роли.

    • RoleSessionName ( строка ) —

      [ТРЕБУЕТСЯ]

      Идентификатор предполагаемой ролевой сессии.

      Используйте имя сеанса роли, чтобы однозначно идентифицировать сеанс, когда одну и ту же роль принимают на себя разные участники или по разным причинам. В сценариях с несколькими учетными записями имя сеанса роли видно и может регистрироваться учетной записью, которой принадлежит роль. Имя сеанса роли также используется в ARN предполагаемого субъекта роли.Это означает, что последующие запросы API между аккаунтами, в которых используются временные учетные данные, будут открывать имя сеанса роли для внешней учетной записи в их журналах AWS CloudTrail.

      Регулярное выражение, используемое для проверки этого параметра, представляет собой строку символов, состоящую из буквенно-цифровых символов верхнего и нижнего регистра без пробелов. Вы также можете включить подчеркивание или любой из следующих символов: =,. @ —

    • PolicyArns ( список ) —

      Имена ресурсов Amazon (ARN) управляемых политик IAM, которые вы хотите использовать в качестве политик управляемых сеансов.Политики должны существовать в той же учетной записи, что и роль.

      Этот параметр не является обязательным. Вы можете предоставить до 10 ARN с управляемой политикой. Однако простой текст, который вы используете как для встроенных, так и для управляемых политик сеанса, не может превышать 2048 символов. Дополнительные сведения о ARN см. В разделах Amazon Resource Names (ARN) и AWS Service Namespaces в Общем справочнике по AWS.

      Примечание

      При преобразовании AWS переданные политики сеанса и теги сеанса сжимаются в упакованный двоичный формат с отдельным ограничением.Ваш запрос может не соответствовать этому пределу, даже если ваш простой текст соответствует другим требованиям. Элемент ответа PackedPolicySize указывает в процентах, насколько близки политики и теги для вашего запроса к верхнему пределу размера.

      Передача политик в эту операцию возвращает новые временные учетные данные. Получающиеся в результате разрешения сеанса являются пересечением политики на основе идентификации роли и политик сеанса. Вы можете использовать временные учетные данные роли в последующих вызовах API AWS для доступа к ресурсам в аккаунте, которому принадлежит роль.Вы не можете использовать политики сеанса для предоставления большего количества разрешений, чем разрешено политикой на основе удостоверений предполагаемой роли. Для получения дополнительной информации см. Политики сеанса в Руководстве пользователя IAM .

    • Политика ( строка ) —

      Политика IAM в формате JSON, которую вы хотите использовать в качестве политики встроенного сеанса.

      Этот параметр не является обязательным. Передача политик в эту операцию возвращает новые временные учетные данные. Получающиеся в результате разрешения сеанса являются пересечением политики на основе идентификации роли и политик сеанса.Вы можете использовать временные учетные данные роли в последующих вызовах API AWS для доступа к ресурсам в аккаунте, которому принадлежит роль. Вы не можете использовать политики сеанса для предоставления большего количества разрешений, чем разрешено политикой на основе удостоверений предполагаемой роли. Для получения дополнительной информации см. Политики сеанса в Руководстве пользователя IAM .

      Обычный текст, который вы используете как для встроенных, так и для управляемых политик сеанса, не может превышать 2048 символов. Символы политики JSON могут быть любым символом ASCII от символа пробела до конца действительного списка символов (от u0020 до u00FF).Он также может включать символы табуляции (u0009), перевода строки (u000A) и возврата каретки (u000D).

      Примечание

      При преобразовании AWS переданные политики сеанса и теги сеанса сжимаются в упакованный двоичный формат с отдельным ограничением. Ваш запрос может не соответствовать этому пределу, даже если ваш простой текст соответствует другим требованиям. Элемент ответа PackedPolicySize указывает в процентах, насколько близки политики и теги для вашего запроса к верхнему пределу размера.

    • DurationSeconds ( целое число ) —

      Продолжительность сеанса роли в секундах.Значение может варьироваться от 900 секунд (15 минут) до максимальной продолжительности сеанса, установленной для роли. Этот параметр может иметь значение от 1 часа до 12 часов. Если вы укажете значение выше этого параметра, операция завершится ошибкой. Например, если вы укажете продолжительность сеанса 12 часов, но ваш администратор установил максимальную продолжительность сеанса на 6 часов, операция завершится ошибкой. Чтобы узнать, как просмотреть максимальное значение для вашей роли, см. Раздел Просмотр настройки максимальной продолжительности сеанса для роли в Руководстве пользователя IAM .

      По умолчанию установлено значение 3600 секунд.

      Примечание

      Параметр DurationSeconds отличается от продолжительности сеанса консоли, который вы можете запросить, используя возвращенные учетные данные. Запрос к конечной точке федерации для токена входа в консоль принимает параметр SessionDuration, который указывает максимальную длину сеанса консоли. Дополнительную информацию см. В разделе Создание URL-адреса, позволяющего объединенным пользователям получить доступ к Консоли управления AWS в Руководстве пользователя IAM .

    • Теги ( список ) —

      Список тегов сеанса, которые вы хотите передать. Каждый тег сеанса состоит из имени ключа и соответствующего значения. Дополнительные сведения о тегах сеансов см. В разделе Добавление тегов к сеансам AWS STS в Руководстве пользователя IAM .

      Этот параметр не является обязательным. Вы можете передать до 50 тегов сеанса. Ключи тегов сеанса в виде обычного текста не могут превышать 128 символов, а значения не могут превышать 256 символов. Эти и дополнительные ограничения см. В разделе «Ограничения символов IAM и STS» в Руководстве пользователя IAM .

      Примечание

      При преобразовании AWS переданные политики сеанса и теги сеанса сжимаются в упакованный двоичный формат с отдельным ограничением. Ваш запрос может не соответствовать этому пределу, даже если ваш простой текст соответствует другим требованиям. Элемент ответа PackedPolicySize указывает в процентах, насколько близки политики и теги для вашего запроса к верхнему пределу размера.

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

      Пары «ключ-значение» тега не чувствительны к регистру, но регистр сохраняется. Это означает, что у вас не может быть отдельных ключей тегов отдела и отдела. Предположим, что у роли есть тег Department = « Marketing«, и вы передаете тег сеанса Department = « engineering«. Отдел и отдел не сохраняются как отдельные теги, а тег сеанса, переданный в запросе, имеет приоритет над тегом роли.

      Кроме того, если вы использовали временные учетные данные для выполнения этой операции, новый сеанс наследует все транзитивные теги сеанса из вызывающего сеанса.Если вы передадите тег сеанса с тем же ключом, что и унаследованный тег, операция завершится ошибкой. Чтобы просмотреть унаследованные теги для сеанса, см. Журналы AWS CloudTrail. Для получения дополнительной информации см. Просмотр тегов сеанса в CloudTrail в Руководстве пользователя IAM .

      • (dict) —

        Вы можете передать настраиваемые атрибуты пары «ключ-значение», когда вы берете на себя роль или объединяете пользователя. Они называются тегами сеанса. Затем вы можете использовать теги сеанса для управления доступом к ресурсам. Дополнительные сведения см. В разделе Добавление тегов к сеансам AWS STS в Руководстве пользователя IAM .

        • Ключ (строка) — [ТРЕБУЕТСЯ]

          Ключ для тега сеанса.

          Вы можете передать до 50 тегов сеанса. Ключи тегов сеанса в виде обычного текста не могут превышать 128 символов. Эти и дополнительные ограничения см. В разделе «Ограничения символов IAM и STS» в Руководстве пользователя IAM .

        • Значение (строка) — [ОБЯЗАТЕЛЬНО]

          Значение тега сеанса.

          Вы можете передать до 50 тегов сеанса.Значение тега сеанса в виде обычного текста не может превышать 256 символов. Эти и дополнительные ограничения см. В разделе «Ограничения символов IAM и STS» в Руководстве пользователя IAM .

    • TransitiveTagKeys ( список ) —

      Список ключей для тегов сеанса, которые вы хотите установить как транзитивные. Если вы установите ключ тега как транзитивный, соответствующий ключ и значение передаются в последующие сеансы в цепочке ролей. Дополнительные сведения см. В разделе «Объединение ролей с тегами сеанса» в Руководстве пользователя IAM .

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

      Если вы решите не указывать переходный ключ тега, то никакие теги не передаются из этого сеанса ни в какие последующие сеансы.

    • ExternalId ( строка ) —

      Уникальный идентификатор, который может потребоваться, когда вы берете на себя роль в другой учетной записи. Если администратор учетной записи, которой принадлежит роль, предоставил вам внешний идентификатор, укажите это значение в параметре ExternalId.Это значение может быть любой строкой, например кодовой фразой или номером учетной записи. Роль перекрестной учетной записи обычно настраивается так, чтобы доверять всем в учетной записи. Поэтому администратор доверенной учетной записи может отправить внешний идентификатор администратору доверенной учетной записи. Таким образом, только кто-то с идентификатором может взять на себя роль, а не все в учетной записи. Дополнительные сведения о внешнем идентификаторе см. В разделе Как использовать внешний идентификатор при предоставлении доступа к ресурсам AWS третьей стороне в Руководстве пользователя IAM .

      Регулярное выражение, используемое для проверки этого параметра, представляет собой строку символов, состоящую из буквенно-цифровых символов верхнего и нижнего регистра без пробелов. Вы также можете включить подчеркивание или любой из следующих символов: =,. @: / —

    • SerialNumber ( строка ) —

      Идентификационный номер устройства MFA, связанного с пользователем, который выполняет вызов AssumeRole. Укажите это значение, если политика доверия предполагаемой роли включает условие, требующее аутентификации MFA.Значение представляет собой либо серийный номер для аппаратного устройства (например, GAHT12345678), либо имя ресурса Amazon (ARN) для виртуального устройства (например, arn: aws: iam :: 123456789012: mfa / user).

      Регулярное выражение, используемое для проверки этого параметра, представляет собой строку символов, состоящую из буквенно-цифровых символов верхнего и нижнего регистра без пробелов. Вы также можете включить подчеркивание или любой из следующих символов: =,. @ —

    • TokenCode ( строка ) —

      Значение, предоставляемое устройством MFA, если политика доверия предполагаемой роли требует MFA (то есть, если политика включает условие, которое проверяет MFA).Если для предполагаемой роли требуется MFA и если значение TokenCode отсутствует или истекло, вызов AssumeRole возвращает ошибку «доступ запрещен».

      Формат этого параметра, описанный его шаблоном регулярного выражения, представляет собой последовательность из шести цифр.

    Тип возврата

    dict

    Возвращает

    Синтаксис ответа

     {
        'Credentials': {
            'AccessKeyId': 'строка',
            'SecretAccessKey': 'строка',
            'SessionToken': 'строка',
            'Истечение': datetime (2015, 1, 1)
        },
        'AssumedRoleUser': {
            'AssumedRoleId': 'строка',
            'Арн': 'строка'
        },
        PackedPolicySize: 123
    }
     

    Структура ответа

    • (дикт) —

      Содержит ответ на успешный запрос AssumeRole, включая временные учетные данные AWS, которые можно использовать для выполнения запросов AWS.

      • Учетные данные (dict) —

        Временные учетные данные безопасности, которые включают идентификатор ключа доступа, секретный ключ доступа и токен безопасности (или сеанса).

        Примечание

        Размер маркера безопасности, возвращаемого операциями STS API, не фиксирован. Мы настоятельно рекомендуем не делать никаких предположений относительно максимального размера.

        • AccessKeyId (строка) —

          Идентификатор ключа доступа, который определяет временные учетные данные безопасности.

        • SecretAccessKey (строка) —

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

        • SessionToken (строка) —

          Маркер, который пользователи должны передать API службы, чтобы использовать временные учетные данные.

        • Срок действия (дата и время) —

          Дата истечения срока действия текущих учетных данных.

      • AssumedRoleUser (дикт) —

        Имя ресурса Amazon (ARN) и предполагаемый идентификатор роли — идентификаторы, которые можно использовать для ссылки на полученные временные учетные данные безопасности.Например, вы можете ссылаться на эти учетные данные как на участника в политике на основе ресурсов, используя ARN или предполагаемый идентификатор роли. ARN и ID включают RoleSessionName, который вы указали при вызове AssumeRole.

        • AssumedRoleId (строка) —

          Уникальный идентификатор, содержащий идентификатор роли и имя сеанса роли предполагаемой роли. Идентификатор роли генерируется AWS при создании роли.

        • Arn (строка) —

          ARN временных учетных данных безопасности, возвращаемых действием AssumeRole.Дополнительные сведения о ARN и их использовании в политиках см. В разделе «Идентификаторы IAM» в Руководстве пользователя IAM .

      • PackedPolicySize (целое число) —

        Процентное значение, которое указывает упакованный размер политик сеанса и тегов сеанса, вместе переданных в запросе. Запрос не выполняется, если упакованный размер превышает 100 процентов, что означает, что политики и теги превышают допустимое пространство.

    Исключения

    • СТС.Client.exceptions.MalformedPolicyDocumentException
    • STS.Client.exceptions.PackedPolicyTooLargeException
    • STS.Client.exceptions.RegionDisabledException
    • STS.Client.exceptions.ExpiredTokenException

    Примеры

     response = client.assume_role (
        DurationSeconds = 3600,
        ExternalId = '123ABC',
        Policy = '{"Version": "2012-10-17", "Statement": [{"Sid": "Stmt1", "Effect": "Allow", "Action": "s3: *", "Resource ":" * "}]} ',
        RoleArn = 'arn: aws: iam :: 123456789012: роль / демо',
        RoleSessionName = 'Боб',
    )
    
    печать (ответ)
     

    Ожидаемый результат:

     {
        'AssumedRoleUser': {
            'Arn': 'arn: aws: sts :: 123456789012: предположительная роль / demo / Bob',
            'AssumedRoleId': 'ARO123EXAMPLE123: Bob',
        },
        'Credentials': {
            'AccessKeyId': 'AKIAIOSFODNN7EXAMPLE',
            'Истечение': datetime (2011, 7, 15, 23, 28, 33, 4, 196, 0),
            'SecretAccessKey': 'wJalrXUtnFEMI / K7MDENG / bPxRfiCYzEXAMPLEKEY',
            'SessionToken': 'AQoDYXdzEPT ////////// wEXAMPLEtc764bNrC9SAPBSM22wDOk4x4HIZ8j4FZTwdQWLWsKWHGBuFqwAeMicRXmxfpSPfIeoIYRqTflfKD8YUuwthAx7mSEI / qkPpKPi / kMcGdQrmGdeehM4IC1NtBmUpp2wUE8phUZampKsburEDy0KPkyQDYwT7WZ0wq5VSXDvp75YU9HFvlRd8Tx6q6fE8YQcHNVXAkiY9q6d + xo0rKwT38xVqr7ZD0u0iPPkUL64lIZbqBAz + scqKmlzm8FDrypNC9Yjc8fPOLn9FX9KSYvKTr4rvx3iSIlTJabIQwj2ICCR / oLxBA ==',
        },
        'PackedPolicySize': 6,
        'ResponseMetadata': {
            '... ':' ... ',
        },
    }
     

    .

    Предоставьте экземпляру EC2 доступ к сегменту S3 в другом аккаунте AWS

    Я хочу, чтобы у моего экземпляра Amazon Elastic Compute Cloud (Amazon EC2) был доступ к моей корзине Amazon Simple Storage Service (Amazon S3) в другой учетной записи AWS. Как я могу предоставить этот доступ, не сохраняя учетные данные на экземпляре?

    Разрешение

    Примечание. Хотя этот пример относится к доступу к корзине Amazon S3, шаги аналогичны для предоставления вашему экземпляру доступа к другим ресурсам AWS в другой учетной записи.

    Выполните следующие действия, чтобы предоставить экземпляру Amazon EC2 в одной учетной записи (учетная запись A) разрешения на доступ к корзине Amazon S3 в другой учетной записи (учетная запись B).

    Из учетной записи B создайте роль IAM

    1. Войдите в Консоль управления AWS с учетной записью B.

    2. Откройте консоль AWS Identity and Access Management (IAM).

    3. На панели навигации выберите Роли .

    4.Выберите Создать роль .

    5. Для Выберите тип доверенного объекта , выберите Другая учетная запись AWS .

    6. Для Account ID введите идентификатор счета A.

    7. Выберите Далее: Разрешения .

    8. Прикрепите политику к роли, которая делегирует доступ к Amazon S3. Например, эта политика предоставляет доступ ко всем действиям с определенной корзиной и объектами, хранящимися в ней:

      {
        «Версия»: «2012-10-17»,
        "Утверждение": [
            {
                «Эффект»: «Разрешить»,
                «Действие»: «s3: *»,
                «Ресурс»: [
                    "arn: aws: s3 ::: awsexamplebucket",
                    "arn: aws: s3 ::: awsexamplebucket / *"
                ]
            }
        ]
    }  

    9.Выберите Далее: добавьте теги .

    10. Вы можете добавить в роль дополнительные теги. Или вы можете оставить поля пустыми и выбрать Next: Review .

    11. Для Имя роли введите имя роли.

    12. Выберите Создать роль .

    Со счета B получите ARN роли

    1. На панели навигации консоли IAM выберите Роли .

    2.Выберите созданную вами роль IAM.

    3. Обратите внимание на значение, указанное для Role ARN .

    Из учетной записи A создайте другую роль (профиль экземпляра) и прикрепите ее к экземпляру

    1. Войдите в Консоль управления AWS с учетной записью A.

    2. Откройте консоль IAM.

    3. На панели навигации выберите Роли .

    4. Выберите Создать роль .

    5. Для Выберите тип доверенного объекта , выберите Сервис AWS .

    6. Для Выберите сервис, который будет использовать эту роль , выберите EC2 .

    7. Выберите Далее: Разрешения .

    8. Выберите Далее: Теги .

    9. Вы можете добавить в роль дополнительные теги. Или вы можете оставить поля пустыми и выбрать Next: Review .

    10.Для Имя роли введите имя роли.

    11. Выберите Создать роль .

    12. Из списка ролей выберите только что созданную роль.

    13. Выберите Добавить встроенную политику , а затем выберите представление JSON .

    14. Введите следующую политику. Замените arn: aws: iam :: 111111111111: role / ROLENAME на имя ресурса Amazon (ARN) роли IAM, созданной в учетной записи B.

      {
        «Версия»: «2012-10-17»,
        "Утверждение": [
            {
                «Эффект»: «Разрешить»,
                "Действие": "sts: AssumeRole",
                «Ресурс»: «arn: aws: iam :: 111111111111: роль / ROLENAME»
            }
        ]
    }  

    15. Выберите Просмотреть политику .

    16. Для Имя введите имя политики.

    17. Выберите Создать политику .

    18.Прикрепите роль IAM (профиль инстанса) к инстансу Amazon EC2, который вы будете использовать для доступа к корзине Amazon S3.

    В инстансе Amazon EC2 настройте роль с вашими учетными данными

    1. Подключитесь к инстансу Amazon EC2. Дополнительные сведения см. В разделах Подключение к экземпляру Linux или Подключение к экземпляру Windows.

    2. После подключения к экземпляру проверьте, есть ли в каталоге уже папка с именем ~ /.AWS . Чтобы найти эту папку, вы можете запустить команду, которая выводит список каталогов, примерно так:

    3. Если вы найдете папку ~ / .aws , перейдите к следующему шагу. Если в каталоге еще нет папки ~ / .aws , создайте папку, выполнив команду, подобную следующей:

    4. В папке ~ / .aws используйте текстовый редактор для создания файла. Назовите файл config .

    5. В файле введите следующий текст. Замените имя файла предприятия именем роли, которую вы присвоили экземпляру. Затем замените arn: aws: iam :: 111111111111: role / ROLENAME на ARN роли, которую вы создали в учетной записи B.

      [имя профиля]
    
    role_arn = arn: aws: iam :: 111111111111: роль / ROLENAME
    
    credential_source = Ec2InstanceMetadata  

    6. Сохраните файл.

    Проверить профиль экземпляра

    Чтобы убедиться, что роль вашего экземпляра (профиль экземпляра) может принимать на себя роль в учетной записи B, выполните следующую команду при подключении к экземпляру. Замените profilename именем роли, которую вы прикрепили к экземпляру.

      $ aws sts get-caller-identity --profile имя профиля  

    Команда возвращает ответ, подобный следующему:

      «Счет»: «11111111111»,
    
     "UserId": "AROAEXAMPLEID: sessionName",
    
     «Arn»: «arn: aws: sts :: 111111111111: предположительная роль / ROLENAME / sessionName»  

    Убедитесь, что значение для «Arn» соответствует ARN роли, созданной вами в учетной записи B.

    Подтвердить доступ к корзине Amazon S3

    Чтобы убедиться, что ваш экземпляр может получить доступ к корзине Amazon S3, запустите эту команду list при подключении к экземпляру. Замените profilename именем роли, которую вы прикрепили к экземпляру.

      aws s3 ls s3: // awsexamplebucket --profile имя профиля  

    Если ваш экземпляр может успешно получить доступ к корзине, вы получите ответ со списком содержимого корзины, подобный следующему:

      PRE Привет /
    2018-08-15 16:16:51 Индекс 89.HTML  

    Эта статья вам помогла?

    Что-нибудь можно улучшить?


    .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *