» » » Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация

 

Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация

Автор: admin от 12-08-2018, 22:35, посмотрело: 21

Во второй статье из цикла про разработку приложений на SAP Cloud Platform в среде Neo мы затронем один из самых важных аспектов — управление авторизацией и аутентификацией пользователей.



В этой статье мы покажем, как установить связь между SAP Cloud Platform и провайдером идентификаций (IDP) воображаемого клиента «ABC PetroCorp», а также добавим пользователей в IDP. Далее мы рассмотрим, как назначить роли для пользователей из компании клиента в конкретном приложении (из IDP), а также — как настроить атрибуты SAML для их передачи из IDP в приложение облачной платформы SCP.

из первой статьи уже установлена подписка на приложения мониторинга загрязнения в SCP, предоставляемые «ITeLO Consulting». Теперь сотруднику «ABC PetroCorp» нужно сделать это приложение доступным для других коллег.



Пользователь SAP Cloud Platform может подключить свой корпоративный IDP к облачной платформе и настроить управление безопасностью и аутентификацией для своего приложения, загруженного в SCP.



Компания «ABC PetroCorp» подключила сервис SAP Cloud Platform Identity Authentication, который позволяет обеспечить доступ к бизнес-процессам, приложениям и данным. Этот сервис предоставляет собой SCI-тенант, внутри которого происходит конфигурация приложений и управление авторизацией пользователей.



У Эмили, воображаемого героя из первой статьи, есть доступ к данному SCI-тенанту — она является его администратором и может настраивать авторизацию пользователей в конкретном приложении. Она хочет разобраться в том, как создать эти конфигурации при помощи сервиса Identity Authentication.



Требования:




  • Продуктивный глобальный аккаунт SCP (не триальный) с подключённым к нему сервисом Identity Authentication (как IDP для субаккаунта «ABC PetroCorp»);

  • Пользователь суббакаунта клиента должны быть администратором SCI-тенанта, таким образом у него будет доступ к консоли администрирования сервиса Identity Authentication.



Эмили необходимо выполнить следующие шаги в консоли администрирования сервиса Identity Authentication и панели управления SCP, чтобы сделать приложение в облачной платформе доступным другим сотрудникам компании «ABC PetroCorp»:



Шаг 1: Установка доверительных отношений между SCI-тенантом и субаккаунтом SCP.

Шаг 2: Импорт пользователей в SCI-тенант и обновление (добавление) необходимых атрибутов.

Шаг 3: Назначение ролей пользователям на уровне приложения в SCP.

Шаг 4: Настройка атрибутов в SCI-тенанте и панели управления SCP для их передачи в приложение.

Шаг 5: Проверка настроек.




Шаг 1: Установка доверительных отношений между SCI-тенантом и субаккаунтом SCP



Эмили является администратором субаккаунта «ABC PetroCorp» и SCI-тенанта, что дает ей возможность применить необходимые настройки для использования SCI-тенанта в качестве «хранилища пользователей» для мультитенантного приложения, предоставляемого провойдером «ITeLO Consulting».



Для начала Эмили необходимо установить доверительные отношения между SCI-тенантом и субаккаунтом SCP клиента «ABC PetroCorp».



Перейдем к консоли администрирования сервиса Identity Authentication, воспользовавшись ссылкой «https://.accounts.ondemand.com/admin», где — это идентификатор SCI-тенанта. Эту ссылку можно найти в регистрационном письме, которые приходит администратору тенанта сервиса Identity Authentication. Там же обозначен и идентификатор тенанта.



Консоль администрирования сервиса Identity Authentication выглядит следующим образом:



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


В другой вкладке браузера откроем панель управления для субаккаунта клиента «ABC PetroCorp» и перейдем во вкладку «Security» «Trust».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


В открывшемся меню «Trust Management» переходим во вкладку «Local Service Provider» и нажимаем «Edit».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Затем выполняем следующие шаги:




  • В поле «Configuration Type» меняем тип на «Custom»;

  • Нажимаем «Generate Key Pair» для создания ключа и сертификата для учетной записи;

  • Меняем значение в поле «Principal Propagation» на «Enable»;

  • Нажимаем «Save».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Нажимаем на «Get Metadata», чтобы скачать файл метаданных в формате «xml», который содержит ранее описанные конфигурации. Он будет использован для установления доверительных отношений с SCI-тенантом.



Вернемся к консоли администрирования сервиса Identity Authentication и перейдем в вкладку «Applications & Resources» «Applications» в меню слева. В области «Applications» нажимаем кнопку «Add», чтобы обозначить новое приложение, развернутое в субаккаунте «ABC PetroCorp».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


В появившемся окне вводим имя приложения (например, ABC_PetroCorp_IDP) и нажимаем «Save». После этого в тенанте для нашего приложения будет создана новая точка.



В созданном приложении переходим во вкладку «Trust» и выбираем параметр «SAML 2.0 Configuration».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


В разделе «Define from Metadata» нажимаем «Browse» и выбираем файл метаданных в формате «xml», который мы скачали ранее при настройке доверительных отношений в субаккаунте SCP. Детали, касающиеся конфигурации SAML 2.0, будут автоматически заполнены после загрузки файла. Нажимаем «Save» — теперь конфигурация SAML 2.0 создана и сохранена для этого приложения.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Возвращаемся назад к точке приложения под названием ABC_PetroCorp_IDP в тенанте, нажимаем на «Home URL» и вводим URL типа «https://pollutionmonitoringui-.dispatcher.».



Этот URL можно найти в описании HTML5-приложения, на которое подписан клиент (субаккаунт «ABC PetroCorp»). Для этого переходим в субаккаунт клиента во вкладку «Applications» «Subscriptions» и выбираем подписанное HTML5-приложение.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Во вкладке «Overview» будет нужный нам URL.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Затем возвращаемся к точке приложения в SCI-тенанте, обозначаем URL-приложения в «Home URL» и нажимаем «Save».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Теперь перейдем во вкладку «Applications & Resources» «Tenant Settings» в консоли администрирования сервиса Identity Authentication. На странице настроек тенанта выбираем «SAML 2.0 Configuration».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


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



Возвращаемся обратно в субаккаунт «ABC PetroCorp» и переходим в меню «Security» «Trust», в открывшемся окне выбираем вкладку «Application Identity Provider». Нажимаем на «Add Trusted Identity Provider», чтобы добавить детали о SCI-тенанте.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Во вкладке «General» нажимаем «Browse» и выбираем файл метаданных в формате «xml», скачанный из консоли администрирования сервиса Identity Authentication. Детали конфигурации автоматически заполняются после загрузки файла. Убираем галочку у поля «Only for IDP-Initiated SSO» и нажимаем «Save».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Теперь доверительные отношения между субаккаунтом клиента «ABC PetroCorp» и его SCI-тенантом успешно установлены. Те же настройки можно применить для субаккаунтов других клиентов (например, для клиента «XYZ EnergyCorp»).



Шаг 2: Импорт пользователей в SCI-тенант и обновление (добавление) необходимых атрибутов



Эмили необходимо обеспечить регистрацию пользователей приложения в корпоративном IDP компании ABC PetroCorp.



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

Демо-пользователи для приложения хранятся в файле формата «csv» на github — в Github.



Скачаем файл «CSV» для «ABC PetroCorp» из GitHub. В файле формата «csv» обозначены два пользователя:




  • ABCPlantSupervisor: Этот пользователь будет руководителем конкретного завода компании «ABC PetroCorp» и сможет просматривать данные только о своем заводе;

  • ABCAreaManager: Этот пользователь будет руководителем целой области, которая может включать в себя несколько заводов «ABC PetroCorp». Он сможет просматривать данные о всех заводах в своей области.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


«CSV»-файл для «ABC PetroCorp» содержит вымышленные email-адреса пользователей. Их нужно заменить на реальные, так как потом на них придут письма для активации аккаунтов. Например, если ваша реальная почта «john.smith@sap.com», то необходимо заменить обозначение <> на «john.smith», а insert_your_company на «sap».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Перейдем в консоль администрирования сервиса Identity Authentication и выберем вкладку «Users &Authorizations» «Import Users». Выбираем созданную ранее точку приложения «ABC_PetroCorp_IDP» и нажимаем «Browse», после чего выбираем файл «ABCPetroCorp.csv», описывающий наших демо-пользователей — и нажимаем кнопку «Import».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Пользователи должны активировать свой аккаунт. Чтобы получить e-mail со ссылкой для активации, необходимо нажать «Send» в окне «Send E-Mails».



Перед тем, как активировать пользователя, нужно поменять некоторые конфигурации.

Перейдем во вкладку «Users &Authorizations» «User Management». В списки пользователей появились два пользователя: «Area Manager» и «Plant Supervisor». Им автоматически присвоены идентификаторы: P000011 и P000010. Эти идентификаторы можно использовать в качестве логинов для входа в тенант (и в приложение, когда будут произведены все необходимые настройки).



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Перейдем к пользователю P000011 или «Area Manager» и добавим имя, которое можно будет также использовать и в качестве логина для входа. Для этого нажимаем на значок редактирования в поле «Personal Information» и заполняем «Login Name» (в нашем случае это Johan).



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


После чего нажимаем «Save».



Теперь проделаем тоже самое с пользователем P000010 или «Plant Supervisor», но назовем его Smith.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


У пользователя «Plant Supervisor» должна быть возможность просмотра информации только о своем заводе, то в секции с информацией о компании необходимо обозначить идентификатор компании (как этот идентификатор будет использоваться, будет объяснено в Шаге 4).



Для этого перейдем к разделу «Company Information» и введем идентификатор завода, а именно «101», в поле «Company».



Теперь информация о наших пользователях изменена. Для их активации переходим в указанные в «csv» файле почтовые ящики и переходим по ссылке для активации, либо нажимаем «Click here to activate your account».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Итак, мы успешно импортировали пользователей в SCI-тенант, обновили информацию о них и активировали их.



Шаг 3: Назначение ролей пользователям на уровне приложения в SAP Cloud Platform



Мультитенантное приложение «Pollution Monitoring», созданное Робертом из компании «ITeLO Consulting», предоставляет две предопределенные роли «PlantSupervisor» и «AreaManager», которые контролируют авторизацию пользователей в приложении и определяют, что видит конечный пользователь.




  • Роль «PlantSupervisor»: пользователи, которым назначена эта роль, смогут просматривать данные только того завода, который обозначен в сведениях о пользователе (Company Information) в SCI-тенанте.

  • Роль «AreaManager»: пользователи, которым назначена эта роль, смогут просматривать данные всех заводов в своей области.



Давайте посмотрим, как разделение по ролям достигается на уровне кода проекта.



Перейдем к файлу «web.xml», расположенном по пути «/pollutionmonitoring

/src/main/webapp/WEB-INF/web.xml» в папке проекта.



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



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Теперь перейдем к файлу «PollutionDataService.java», расположенному по пути «/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java» проекта и откроем его.



В этом файле обозначен метод «getCompanyPollutionData()». Он позволяет проверить, является ли пользователь администратором (менеджером). Если да, то в приложении отображаются данные по всем заводам, если же нет – данные фильтруются по идентификатору завода (plant_id). Также в приложении будет отображаться информация только по тем заводам, идентификаторы которых соответствуют обозначенным в информации о пользователе.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Для большей ясности можно обратиться к методу «isUserAdmin()», который позволяет определить по роли, является ли тот или иной пользователь администратором (менеджером) или нет.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Аналогичный алгоритм применяется для извлечения данных о заводе из локальных систем.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Теперь Эмили как сотруднику компании «ABC PetroCorp» нужно выделить менеджеров области и руководителей заводов, назначив им соответствующие роли («ABCPlantSupervisor» и «ABCAreaManager») в приложении в SCP.



Перейдем в субаккаунт клиента «ABC PetroCorp» и выберем Java-приложение «pollutionmonitoring», предоставленное провайдером «ITeLO Consulting» (оно расположено во вкладке «Applications» «Subscriptions»).



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Далее переходим во вкладку «Roles» (на уровне приложения).



В открывшемся окне появится список ролей, обозначенных в приложении. Выбираем роль «PlantSupervisor» и нажимаем «Assign». В появившемся окне вводим идентификатор пользователя, обозначенного в SCI-тенанте как «ABCPlantSupervisor». В нашем случае идентификатором такого пользователя будет P000010.



Затем выбираем роль «AreaManager» и нажимаем «Assign». В появившемся окне вводим идентификатор пользователя, обозначенного в SCI-тенанте как «ABCAreaManager» (в нашем случае идентификатором такого пользователя будет P000011).



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Итак, мы успешно сопоставили роли приложения с соответствующими пользователями «ABC PetroCorp» из SCI-тенанта.



Те же настройки можно применить в субаккаунте другого клиента (например, «XYZ EnergyCorp»).



Шаг 4: Настройка атрибутов в SCI-тенанте и панели управления SCP для их передачи в приложение



Роберт из «ITeLO Consulting» запрограммировал мультитенантное приложение таким образом, что ему необходимо передать идентификатор завода пользователя «PlantSupervisor», чтобы данные о заводе могли быть отфильтрованы в приложении для этого конкретного идентификатора завода.

В предыдущих шагах мы добавили идентификатор завода пользователю «PlantSupervisor» в SCI-тенанте в поле «Company Information», который теперь нам нужно передать в мультитенантное приложение. Далее он может использоваться в приложении для отображения данных, относящийся к конкретному заводу. Пользователь «AreaManager» по сути является администратором, который может просматривать данные со всех заводов.



Давайте посмотрим, как это организовано на уровне кода приложения.



Откроем файл «PollutionDataService.java», расположенный по пути «/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java» в проекте.



В данном файле описан метод «getPlantId()». Этот метод описывает получение имени пользователя и проверку атрибута «PLANT_ID», который используется для фильтрации данных об уровне загрязнения и данных завода.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Мы можем передавать атрибуты пользователя из SCI-тенанта в приложение через «SAML Assertion Attributes». Это необходимо, чтобы атрибут пользователя из SCI-тенанта, содержащий информацию о компании, был считан SCP во время входа пользователя в систему. Нужно, чтобы так называемый «Assertion Attribute» (атрибут утверждения), определенный для пользователя, был передан в приложение мониторинга загрязнения.



Для этого сначала создаём «Assertion Attribute» в SCI-тенанте, затем — обозначаем атрибут утверждения в основном атрибуте («Principal Attribute») в субаккаунте «ABC PetroCorp», который может быть прочитан кодом приложения, как показано выше.



Перейдем в консоль администрирования сервиса Identity Authentication и выберем вкладку «Applications & Resources» «Applications». Выбираем нужное нам приложение (ABC_PetroCorp_IDP) и во вкладке «Trust» нажимаем на «Assertion Attributes».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Появится список уже существующих атрибутов, нам нужно в него ещё один. Для этого нажимаем на кнопку «Add» и выбираем атрибут «Company».



Затем в значение атрибута добавляем «plant_id» (чувствителен к регистру) и нажимаем «Save».



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


Теперь перейдем к субаккаунту «ABC PetroCorp» в SCP и перейдем во вкладку «Security» «Trust». В окне «Trust Management» переходим на вкладку «Application Identity Provider» и выбираем привязанный к субаккаунту IdP.



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


В открывшемся окне переходим на вкладку «Attributes» и нажимаем «Add Assertion-Based Attribute». В поле «Assertion Attribute» вводим значение «plant_id» (как в SCI-тенанте), а в поле «Principal Attribute» вводим «PLANT_ID» (это значение будет передано в приложение как код завода) — и нажимаем «Save».



Итак, мы успешно настроили атрибуты в SCI-тенанте и в панели управления SCP для их передачи в приложение.



Шаг 5: Проверка настроек

Теперь Эмили может проверить, правильно ли определены настройки SCI-тенанта (IdP) для субаккаунта «ABC PetroCorp» в SCP и для приложения, которое предоставляет провайдером.



Для этого перейдем в субаккаунт «ABC PetroCorp» и обратимся к HTML5-приложению «pollutionmonitoringui» (оно расположено во вкладке «Applications» «Subscriptions»).



Разработка мультитенантных приложений на SAP Cloud Platform в среде Neo, часть 2: авторизация и аутентификация


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



Если всё настроено верно, то у вас должна появиться возможность входа в приложение под пользователями «AreaManager» и «PlantSupervisor», обозначенными в SCI-тенанте.



В нашем случае менеджером области является пользователь Johan (P000011), а начальником завода – Smith (P000010). В приложение под этими пользователями можно войти, используя в качестве логина либо имя пользователя, либо его идентификатор.



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





Итак, мы настроили связь провайдера идентификаций (IDP) с нашим приложением для мониторинга загрязнения в SCP. Мы также импортировали пользователей и назначили им правильные роли для доступа к приложению, обеспечили передачу корректной информации о заводе в приложение.

Источник: Хабр / Интересные публикации

Категория: Веб-разработка

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Добавление комментария

Имя:*
E-Mail:
Комментарий:
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Введите два слова, показанных на изображении: *