Mengembangkan Aplikasi Multi-Penyewa pada Platform SAP Cloud di Neo, Bagian 2: Otorisasi dan Otentikasi

Dalam artikel kedua dalam seri tentang pengembangan aplikasi pada SAP Cloud Platform di lingkungan Neo, kami akan membahas salah satu aspek terpenting - otorisasi dan manajemen otentikasi pengguna.

Pada artikel ini, kami akan menunjukkan cara membuat koneksi antara SAP Cloud Platform dan penyedia identitas (IDP) dari klien ABC PetroCorp imajiner, dan juga menambahkan pengguna ke IDP. Selanjutnya, kita akan melihat bagaimana menetapkan peran untuk pengguna dari perusahaan klien dalam aplikasi spesifik (dari IDP), serta cara mengkonfigurasi atribut SAML untuk transfer mereka dari IDP ke aplikasi platform cloud SCP.

Dalam subaccount klien ABC PetroCorp fiktif dari artikel pertama , berlangganan aplikasi pemantauan polusi SCP yang disediakan oleh ITeLO Consulting telah diinstal. Sekarang karyawan ABC PetroCorp perlu membuat aplikasi ini tersedia untuk kolega lain.

Pengguna SAP Cloud Platform dapat menghubungkan IDP perusahaan mereka ke platform cloud dan mengonfigurasi manajemen keamanan dan otentikasi untuk aplikasi mereka yang dimuat ke dalam SCP.

ABC PetroCorp telah mengaktifkan layanan SAP Cloud Platform Identity Authentication, yang menyediakan akses ke proses bisnis, aplikasi, dan data. Layanan ini menyediakan penyewa SCI, di dalamnya terdapat konfigurasi aplikasi dan manajemen otorisasi pengguna.

Emily, pahlawan imajiner dari artikel pertama, memiliki akses ke penyewa SCI ini - dia adalah administratornya dan dapat mengonfigurasi otorisasi pengguna dalam aplikasi tertentu. Dia ingin mengetahui cara membuat konfigurasi ini menggunakan layanan Identity Authentication.

Persyaratan:

  • Akun SCP global yang produktif (bukan percobaan) dengan layanan Identity Authentication yang terhubung dengannya (sebagai IDP untuk subaccount ABC PetroCorp);
  • Pengguna sub-akun klien harus menjadi administrator penyewa SCI, sehingga ia akan memiliki akses ke konsol administrasi layanan Identity Authentication.

Emily perlu menyelesaikan langkah-langkah berikut di konsol administrasi layanan Otentikasi Identitas dan panel kontrol SCP untuk membuat aplikasi di platform cloud tersedia bagi karyawan ABC PetroCorp lainnya:

Langkah 1: Membangun hubungan kepercayaan antara penyewa SCI dan sub-akun SCP.
Langkah 2: Impor pengguna ke penyewa SCI dan perbarui (tambahkan) atribut yang diperlukan.
Langkah 3: Tetapkan peran untuk pengguna tingkat aplikasi di SCP.
Langkah 4: Konfigurasikan atribut di penyewa SCI dan panel kontrol SCP untuk mentransfernya ke aplikasi.
Langkah 5: Verifikasi Pengaturan.

Langkah 1: Membangun kepercayaan antara penyewa SCI dan sub-akun SCP

Emily adalah administrator sub-akun ABC PetroCorp dan penyewa SCI, yang memungkinkannya untuk menerapkan pengaturan yang diperlukan untuk menggunakan penyewa SCI sebagai "repositori pengguna" untuk aplikasi multi penyewa yang disediakan oleh penyedia ITeLO Consulting.

Pertama, Emily perlu membangun hubungan saling percaya antara penyewa SCI dan sub-akun SCP dari klien ABC PetroCorp.

Kami akan pergi ke konsol administrasi layanan Identity Authentication menggunakan tautan "https: //.accounts.ondemand.com/admin", di mana pengidentifikasi penyewa SCI. Tautan ini dapat ditemukan dalam surat registrasi yang datang ke administrator penyewa layanan Identity Authentication. Identifier penyewa juga ditunjukkan di sana.

Konsol administrasi layanan Identity Authentication adalah sebagai berikut:



Di tab browser lain, buka panel kontrol untuk subkount klien "ABC PetroCorp" dan buka tab "Keamanan" -> "Kepercayaan".



Di menu "Manajemen Kepercayaan" yang terbuka, buka tab "Penyedia Layanan Lokal" dan klik "Edit."



Kemudian kami melakukan langkah-langkah berikut:

  • Di bidang "Tipe Konfigurasi", ubah tipe menjadi "Kustom";
  • Klik "Hasilkan Pasangan Kunci" untuk membuat kunci dan sertifikat untuk akun;
  • Ubah nilai di bidang "Propagasi Utama" menjadi "Aktifkan";
  • Klik "Simpan."



Klik "Get Metadata" untuk mengunduh file metadata dalam format "xml", yang berisi konfigurasi yang dijelaskan sebelumnya. Ini akan digunakan untuk membangun kepercayaan dengan penyewa SCI.

Mari kita kembali ke konsol administrasi layanan Identity Authentication dan pergi ke "Aplikasi & Sumber Daya" -> "Aplikasi" tab di menu di sebelah kiri. Di area "Aplikasi", klik tombol "Tambah" untuk menunjukkan aplikasi baru yang digunakan dalam subkount "ABC PetroCorp".



Di jendela yang muncul, masukkan nama aplikasi (misalnya, ABC_PetroCorp_IDP) dan klik "Simpan". Setelah itu, titik baru akan dibuat di penyewa untuk aplikasi kita.

Di aplikasi yang dibuat, buka tab "Trust" dan pilih parameter "SAML 2.0 Configuration".



Di bagian “Define from Metadata”, klik “Browse” dan pilih file metadata dalam format “xml”, yang telah kami unduh sebelumnya ketika mengatur kepercayaan pada sub-akun SCP. Rincian mengenai konfigurasi SAML 2.0 akan secara otomatis diisi setelah file diunduh. Klik "Simpan" - sekarang konfigurasi SAML 2.0 dibuat dan disimpan untuk aplikasi ini.



Kembali ke titik aplikasi bernama ABC_PetroCorp_IDP di penyewa, klik "Beranda URL" dan masukkan URL seperti "https: // polusimonitoringui- <subaccount_name> .dispatcher. <region_host>".

URL ini dapat ditemukan dalam deskripsi aplikasi HTML5 tempat klien berlangganan (subaccount "ABC PetroCorp"). Untuk melakukan ini, buka sub-akun klien di tab "Aplikasi" -> "Langganan" dan pilih aplikasi HTML5 yang ditandatangani.



Pada tab "Gambaran Umum" akan menjadi URL yang kita butuhkan.



Kemudian kita kembali ke titik aplikasi di penyewa SCI, menunjuk URL aplikasi di "Beranda URL" dan klik "Simpan".



Sekarang buka tab "Aplikasi & Sumber Daya" -> "Pengaturan Penyewa" di konsol administrasi layanan Otentikasi Identitas. Pada halaman pengaturan penyewa, pilih "SAML 2.0 Configuration".



Di jendela yang terbuka, klik "Unduh File Metadata" untuk mengunduh file "xml" yang berisi konfigurasi penyewa SCI. Ini akan digunakan di masa depan untuk membangun kepercayaan dengan sub-akun klien di SCP.

Kembali ke sub-akun "ABC PetroCorp" dan buka menu "Keamanan" -> "Percaya", di jendela yang terbuka, pilih tab "Penyedia Identitas Aplikasi". Klik "Tambahkan Penyedia Identitas Tepercaya" untuk menambahkan detail tentang penyewa SCI.



Di tab "Umum", klik "Jelajahi" dan pilih file metadata dalam format "xml" yang diunduh dari konsol administrasi layanan Identity Authentication. Rincian konfigurasi secara otomatis diisi setelah file diunduh. Hapus centang pada kotak "Hanya untuk SSO yang Diprakarsai IDP" dan klik "Simpan".



Sekarang hubungan saling percaya antara sub-akun klien ABC PetroCorp dan penyewa SCInya telah berhasil dibangun. Pengaturan yang sama dapat diterapkan ke sub-akun klien lain (misalnya, untuk klien XYZ EnergyCorp).

Langkah 2: Impor pengguna ke penyewa SCI dan perbarui (tambahkan) atribut yang diperlukan

Emily perlu memastikan bahwa pengguna aplikasi terdaftar di IDP korporat ABC PetroCorp.

Idealnya, IDP korporat (dalam kasus kami, penyewa SCI) sudah termasuk daftar semua pengguna di perusahaan. Untuk kejelasan, kami mengimpor beberapa pengguna ke penyewa SCI, setelah itu mereka akan menerima izin yang sesuai untuk mengakses aplikasi.
Demo untuk aplikasi disimpan dalam file "csv" di github - di Github .

Unduh file "CSV" untuk "ABC PetroCorp" dari GitHub. Dua pengguna ditunjukkan dalam file "csv":

  • ABCPlantSupervisor: Pengguna ini akan menjadi manajer pabrik PetroCorp ABC tertentu dan hanya akan dapat melihat data tentang pabriknya;
  • ABCAreaManager: Pengguna ini akan menjadi manajer seluruh area, yang mungkin mencakup beberapa pabrik ABC PetroCorp. Dia akan dapat melihat data semua tanaman di daerahnya.



File .csv untuk ABC PetroCorp berisi alamat email pengguna fiktif. Mereka harus diganti dengan yang asli, karena kemudian surat akan datang kepada mereka untuk mengaktifkan akun. Misalnya, jika email asli Anda adalah "john.smith@sap.com", maka Anda perlu mengganti penunjukan <> dengan "john.smith", dan <<insert_your_company>> dengan "getah".



Buka konsol administrasi layanan Identity Authentication dan pilih tab "Pengguna & Otorisasi" -> "Impor Pengguna". Pilih titik aplikasi yang sebelumnya dibuat "ABC_PetroCorp_IDP" dan klik "Browse", lalu pilih file "ABCPetroCorp.csv" yang menggambarkan pengguna demo kami - dan klik tombol "Impor".



Pengguna harus mengaktifkan akun mereka. Untuk menerima email dengan tautan aktivasi, Anda harus mengklik "Kirim" di jendela "Kirim Email".

Sebelum Anda mengaktifkan pengguna, Anda perlu mengubah beberapa konfigurasi.
Buka tab "Pengguna & Otorisasi" -> "Manajemen Pengguna". Dua pengguna muncul di daftar pengguna: "Manajer Area" dan "Pembimbing Pabrik". Mereka secara otomatis diberi pengidentifikasi: P000011 dan P000010. Pengidentifikasi ini dapat digunakan sebagai login untuk memasuki penyewa (dan ke dalam aplikasi, ketika semua pengaturan yang diperlukan dibuat).



Mari kita pergi ke pengguna P000011 atau "Manajer Area" dan menambahkan nama yang juga dapat digunakan sebagai login untuk masuk. Untuk melakukan ini, klik pada ikon edit di bidang "Informasi Pribadi" dan isi "Nama Login" (dalam kasus kami, itu adalah Johan).



Kemudian klik "Simpan".

Sekarang, mari kita lakukan hal yang sama dengan pengguna P000010 atau Plant Supervisor, tetapi panggil dia Smith.



Pengguna Pengawas Pabrik harus dapat melihat informasi hanya tentang pabriknya, maka pada bagian dengan informasi tentang perusahaan perlu untuk menunjukkan pengenal perusahaan (bagaimana pengidentifikasi ini akan digunakan akan dijelaskan pada Langkah 4).

Untuk melakukan ini, buka bagian "Informasi Perusahaan" dan masukkan pengidentifikasi pabrik, yaitu "101", di bidang "Perusahaan".

Sekarang informasi tentang pengguna kami telah diubah. Untuk mengaktifkannya, buka kotak surat yang ditentukan dalam file "csv" dan klik tautan aktivasi, atau klik "Klik di sini untuk mengaktifkan akun Anda".



Jadi, kami telah berhasil mengimpor pengguna ke penyewa SCI, memperbarui informasi tentang mereka dan mengaktifkannya.

Langkah 3: Menetapkan peran kepada pengguna di tingkat aplikasi di SAP Cloud Platform

Aplikasi Multi-tenant Pollution Monitoring, yang dibuat oleh Robert dari ITeLO Consulting, menyediakan dua peran yang telah ditentukan, PlantSupervisor dan AreaManager, yang mengontrol otorisasi pengguna dalam aplikasi dan menentukan apa yang dilihat pengguna akhir.

  • Peran PlantSupervisor: Pengguna yang diberi peran ini hanya akan dapat melihat data dari pabrik yang diidentifikasi dalam Informasi Perusahaan di penyewa SCI.
  • Peran "AreaManager": Pengguna yang diberi peran ini akan dapat melihat data dari semua pabrik di area mereka.

Mari kita lihat bagaimana pemisahan peran dicapai pada level kode proyek.

Mari kita beralih ke file web.xml yang terletak di sepanjang jalur / pemantauan polusi
/src/main/webapp/WEB-INF/web.xml ”di folder proyek.

Buka file dan pastikan bahwa dua peran di atas didefinisikan dalam aplikasi.



Sekarang mari kita pergi ke file "PollutionDataService.java" yang terletak di sepanjang jalan "/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java" dari proyek dan buka.

Metode "getCompanyPollutionData ()" ditunjukkan dalam file ini. Ini memungkinkan Anda untuk memeriksa apakah pengguna adalah administrator (manajer). Jika ya, maka aplikasi menampilkan data untuk semua tanaman, jika tidak, data difilter oleh ID tanaman (plant_id). Selain itu, aplikasi hanya akan menampilkan informasi untuk pabrik yang pengidentifikasinya sesuai dengan yang ditunjukkan dalam informasi pengguna.



Untuk lebih jelasnya, Anda bisa merujuk ke metode isUserAdmin (), yang memungkinkan Anda untuk menentukan berdasarkan peran apakah pengguna adalah administrator (manajer) atau tidak.



Algoritma serupa digunakan untuk mengekstrak data tanaman dari sistem lokal.



Sekarang Emily, sebagai karyawan ABC PetroCorp, perlu mengidentifikasi manajer area dan manajer pabrik dengan menugaskan mereka peran yang sesuai (ABCPlantSupervisor dan ABCAreaManager) dalam aplikasi di SCP.

Kami akan pergi ke sub-akun klien ABC PetroCorp dan memilih aplikasi Java yang memantau polusi yang disediakan oleh penyedia ITeLO Consulting (terletak di tab Aplikasi -> tab Langganan).



Selanjutnya, buka tab "Peran" (di tingkat aplikasi).

Di jendela yang terbuka, daftar peran yang ditunjukkan dalam aplikasi muncul. Pilih peran "PlantSupervisor" dan klik "Tetapkan". Di jendela yang muncul, masukkan ID pengguna, ditunjukkan dalam penyewa SCI sebagai "ABCPlantSupervisor". Dalam kasus kami, pengidentifikasi pengguna tersebut adalah P000010.

Kemudian pilih peran "AreaManager" dan klik "Tetapkan". Di jendela yang muncul, masukkan pengidentifikasi pengguna yang ditunjukkan dalam penyewa SCI sebagai "ABCAreaManager" (dalam kasus kami, pengidentifikasi pengguna tersebut adalah P000011).



Jadi, kami telah berhasil membandingkan peran aplikasi dengan pengguna yang sesuai dari ABC PetroCorp dari penyewa SCI.

Pengaturan yang sama dapat diterapkan di sub-akun klien lain (misalnya, "XYZ EnergyCorp").

Langkah 4: Mengkonfigurasi Atribut dalam Tenant SCI dan Panel Kontrol SCP untuk Mentransfer ke Aplikasi

Robert dari ITeLO Consulting memprogram aplikasi multi-penyewa sedemikian rupa sehingga ia harus menyerahkan ID pengguna PlantSupervisor ke pabrik sehingga data tanaman dapat disaring dalam aplikasi untuk ID tanaman spesifik ini.
Pada langkah-langkah sebelumnya, kami menambahkan pengidentifikasi tanaman ke pengguna "PlantSupervisor" di penyewa SCI di bidang "Informasi Perusahaan", yang sekarang kami perlu transfer ke aplikasi multi-penyewa. Kemudian dapat digunakan dalam aplikasi untuk menampilkan data yang terkait dengan pabrik tertentu. Pengguna AreaManager pada dasarnya adalah seorang administrator yang dapat melihat data dari semua instalasi.

Mari kita lihat bagaimana ini diatur pada level kode aplikasi.

Buka file "PollutionDataService.java" yang terletak di jalur "/pollutionmonitoring/src/main/java/com/sap/hana/cloud/samples/pollutionmonitoring/api/PollutionDataService.java" di proyek.

File ini menjelaskan metode getPlantId (). Metode ini menjelaskan tentang mendapatkan nama pengguna dan memeriksa atribut "PLANT_ID", yang digunakan untuk menyaring data polusi dan menanam data.



Kami dapat mentransfer atribut pengguna dari penyewa SCI ke aplikasi melalui SAML Assertion Attributes. Ini diperlukan agar atribut pengguna dari penyewa SCI yang berisi informasi perusahaan dibaca oleh SCP pada saat pengguna masuk. Yang disebut "Atribut Pernyataan" (atribut persetujuan) yang ditentukan untuk pengguna perlu ditransfer ke aplikasi pemantauan polusi.

Untuk melakukan ini, pertama-tama buat "Atribut Pernyataan" di penyewa SCI, kemudian - tentukan atribut persetujuan dalam atribut utama ("Atribut Utama") di sub-akun "ABC PetroCorp", yang dapat dibaca oleh kode aplikasi, seperti yang ditunjukkan di atas.

Pergi ke konsol administrasi layanan Identity Authentication dan pilih tab "Aplikasi & Sumber Daya" -> "Aplikasi". Pilih aplikasi yang kami butuhkan (ABC_PetroCorp_IDP) dan di tab "Percaya", klik "Atribut Pernyataan".



Daftar atribut yang ada akan muncul, kita perlu satu lagi di dalamnya. Untuk melakukan ini, klik tombol "Tambah" dan pilih atribut "Perusahaan".

Kemudian kami menambahkan "plant_id" (case sensitif) ke nilai atribut dan klik "Simpan".



Sekarang, masuklah ke sub-akun "ABC PetroCorp" di SCP dan buka tab "Keamanan" -> "Percaya". Di jendela "Trust Management", buka tab "Application Identity Provider" dan pilih IdP yang terkait dengan subaccount.



Di jendela yang terbuka, buka tab "Atribut" dan klik "Tambahkan Atribut Berbasis Pernyataan". Di bidang "Atribut Pernyataan" kami memasukkan nilai "plant_id" (seperti dalam penyewa SCI), dan di bidang "Atribut Utama" kami masukkan "PLANT_ID" (nilai ini akan ditransfer ke aplikasi sebagai kode pabrik) - dan klik "Simpan".

Jadi, kami telah berhasil mengkonfigurasi atribut di penyewa SCI dan di panel kontrol SCP untuk mentransfernya ke aplikasi.

Langkah 5: Verifikasi Pengaturan
Emily sekarang dapat memverifikasi bahwa pengaturan SCI Tenant (IdP) telah ditentukan dengan benar untuk subakun “ABC PetroCorp” di SCP dan untuk aplikasi yang disediakan penyedia.

Untuk melakukan ini, buka sub-akun "ABC PetroCorp" dan buka aplikasi HTML5 "polusimonitoringui" (terletak di tab "Aplikasi" -> "Langganan").



Salin tautan ke aplikasi. Buka tab baru di browser dalam mode penyamaran dan masukkan tautan ke aplikasi HTML5. Sebuah jendela akan muncul untuk memasuki aplikasi, di mana nama yang ditunjukkan dalam penyewa SCI akan ditampilkan.

Jika semuanya sudah diatur dengan benar, maka Anda harus dapat memasukkan aplikasi di bawah pengguna "AreaManager" dan "PlantSupervisor", ditunjukkan dalam penyewa SCI.

Dalam kasus kami, manajer wilayah adalah pengguna Johan (P000011), dan kepala pabrik adalah Smith (P000010). Anda dapat memasukkan aplikasi di bawah pengguna ini menggunakan nama pengguna atau pengenalnya sebagai login.

Catatan: saat memasuki aplikasi pada tahap ini, tidak ada data yang akan ditampilkan. Ini normal karena konfigurasi belum selesai dan sistem lokal tidak terhubung.


Jadi, kami telah menyiapkan koneksi Penyedia Identitas (IDP) dengan aplikasi pemantauan polusi SCP kami. , .

Source: https://habr.com/ru/post/id418237/


All Articles