Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan otentikasi berbasis Microsoft Entra ID dalam aplikasi mainframe modern AWS Blu Age
Vishal Jaswani dan Rimpy Tewani, Amazon Web Services
Ringkasan
Aplikasi mainframe yang dimodernisasi dengan menggunakan pola refactoring, seperti yang oleh AWS Mainframe Modernization Refactor with AWS Blu Age, memerlukan integrasi mekanisme otentikasi yang cermat ke dalam arsitektur aplikasi baru. Integrasi ini biasanya ditujukan sebagai kegiatan pasca-modernisasi. Tugas dapat menjadi kompleks dan sering melibatkan migrasi atau eksternalisasi sistem otentikasi yang ada untuk menyelaraskan dengan standar keamanan modern dan praktik cloud-native. Pengembang perlu mempertimbangkan cara menerapkan otentikasi secara efektif saat mereka bekerja dalam batasan lingkungan runtime dan pustaka aplikasi yang dimodernisasi. Setelah modernisasi, AWS menyediakan cara untuk memudahkan Anda mengintegrasikan kode modern AWS Blu Age Anda dengan identitas dan sistem manajemen akses seperti Amazon Cognito dan Microsoft Entra ID
Pola ini menjelaskan cara menerapkan mekanisme otentikasi dalam aplikasi modern Anda ketika penyedia otentikasi adalah Microsoft Entra ID, tanpa menghabiskan waktu untuk penelitian dan uji coba. Pola ini menyediakan:
Pustaka Angular yang teruji lapangan dan relevan dari Microsoft Authentication Library (MSAL) dan dokumentasi Microsoft Entra ID lainnya yang penting untuk implementasi otentikasi.
Konfigurasi yang diperlukan pada AWS Blu Age Runtime untuk mengaktifkan Spring Security dengan menggunakan 2.0. OAuth
Pustaka yang menangkap identitas pengguna yang diautentikasi dan meneruskannya ke Blu Age AWS Runtime.
Langkah-langkah keamanan yang kami rekomendasikan untuk diterapkan.
Kiat pemecahan masalah untuk masalah yang umum ditemui dengan pengaturan Microsoft Entra ID.
catatan
Pola ini menggunakan pustaka OAuth ekstensi AWS Blu Age, yang disediakan untuk pelanggan sebagai bagian dari keterlibatan Layanan AWS Profesional
Prasyarat dan batasan
Prasyarat
Aplikasi modern yang diproduksi oleh alat refactoring modernisasi mainframe AWS Blu Age. Pola ini digunakan CardDemo
sebagai contoh aplikasi mainframe open source. Perpustakaan OAuth ekstensi AWS Blu Age, yang disediakan oleh tim AWS Blu Age selama keterlibatan Anda dengan Layanan AWS Profesional
. Aktif Akun AWS untuk menyebarkan dan menguji aplikasi modern.
Keakraban dengan file konfigurasi AWS Blu Age dan dasar-dasar Microsoft Entra ID.
Batasan
Pola ini mencakup otentikasi OAuth 2.0 dan alur otorisasi berbasis token dasar. Skenario otorisasi lanjutan dan mekanisme kontrol akses berbutir halus tidak dalam cakupan.
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Layanan AWS berdasarkan Wilayah
. Untuk titik akhir tertentu, lihat Titik akhir dan kuota layanan, dan pilih tautan untuk layanan.
Versi produk
Pola ini dikembangkan dengan menggunakan:
AWS Blu Age Runtime versi 4.1.0 (polanya juga berfungsi dengan versi yang lebih baru yang kompatibel ke belakang)
Pustaka MSAL versi 3.0.23
Kit Pengembangan Java (JDK) versi 17
Versi sudut 16.1
Arsitektur
Tumpukan teknologi sumber
Dalam lingkungan mainframe yang khas, otentikasi diimplementasikan melalui profil pengguna. Profil ini mengidentifikasi pengguna ke sistem, menentukan siapa yang dapat masuk, dan menentukan fungsi mana yang dapat dilakukan pengguna pada sumber daya sistem. Profil pengguna dikelola oleh petugas keamanan atau administrator keamanan.
Tumpukan teknologi target
ID Microsoft Entra
Backend berbasis Java Spring Boot yang dimodernisasi
AWS Blu Age Runtime
Keamanan Musim Semi dengan OAuth 2.0
Aplikasi satu halaman sudut (SPA)
Arsitektur target
AWS Blu Age runtime mendukung otentikasi OAuth berbasis 2.0 secara default, sehingga pola menggunakan standar itu untuk melindungi backend. APIs
Diagram berikut menggambarkan aliran proses.
catatan
Diagram mencakup Amazon Aurora sebagai contoh modernisasi basis data meskipun Aurora tidak termasuk dalam langkah-langkah untuk pola ini.

di mana:
Pengguna mencoba mengautentikasi dengan Microsoft Entra ID.
Microsoft Entra ID mengembalikan token refresh, akses, dan ID yang digunakan aplikasi dalam panggilan berikutnya.
Pencegat MSAL menyertakan token akses di
Authorizationheader permintaan HTTPS untuk memanggil AWS Blu Age Runtime.extension-oauthPustaka AWS Blu Age mengekstrak informasi pengguna dari header dengan menggunakan file konfigurasi AWS Blu Age Runtime (application-main.yml) dan menempatkan informasi ini dalamSharedContextobjek sehingga logika bisnis dapat menggunakannya.catatan
SharedContextadalah komponen runtime yang disediakan oleh AWS Blu Age yang mengelola konteks aplikasi dan informasi status di seluruh aplikasi modern. Untuk informasi selengkapnya tentang komponen dan pembaruan AWS Blu Age Runtime, lihat catatan rilis AWS Blu Age di dokumentasi. AWS Mainframe Modernization Untuk informasi selengkapnya tentangapplication-main.ymlfile, lihat Mengatur konfigurasi untuk AWS Blu Age Runtime dalam dokumentasi. AWS Mainframe ModernizationAWS Blu Age Runtime memeriksa apakah token ada.
Jika token ada, ia memeriksa validitas token dengan berkomunikasi dengan Microsoft Entra ID.
Jika token tidak ada, AWS Blu Age Runtime mengembalikan kesalahan dengan kode status HTTP 403.
Jika token valid, AWS Blue Age Runtime memungkinkan logika bisnis untuk melanjutkan. Jika token tidak valid, AWS Blu Age Runtime mengembalikan kesalahan dengan kode status HTTP 403.
OAuth Alur kerja 2.0
Untuk diagram tingkat tinggi alur kerja OAuth 2.0, lihat dokumentasi Microsoft Entra
Alat
Layanan AWS
AWS Mainframe Modernizationmenyediakan alat dan sumber daya untuk membantu Anda merencanakan dan mengimplementasikan migrasi dan modernisasi dari mainframe ke lingkungan runtime AWS terkelola. Anda dapat menggunakan fitur refactoring layanan ini, yang disediakan oleh AWS Blu Age, untuk mengonversi dan memodernisasi aplikasi mainframe lama Anda.
Repositori kode
CardDemo Aplikasi telah diperbarui untuk menunjukkan integrasi dengan Microsoft Entra ID. Anda dapat mengakses kode dari GitHub repositori untuk pola ini
Konfigurasi backend
Pola ini memerlukan perubahan pada file application-main.yml konfigurasi untuk mengaktifkan Spring Security dengan menggunakan OAuth 2.0 pada aplikasi backend. .ymlFile terlihat seperti ini:
gapwalk-application.security: enabled gapwalk-application: security: identity: oauth issuerUri: ${issuerUrl} claim: claims: - claimName: upn claimMapValue: username spring: autoconfigure: exclude: - org.springframework.boot.autoconfigure.security.oauth2.client.servlet.OAuth2ClientAutoConfiguration - org.springframework.boot.autoconfigure.security.oauth2.resource.servlet.OAuth2ResourceServerAutoConfiguration security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret} provider: azure authorization-grant-type: authorization_code redirect-uri: ${redirectUri} scope: openid provider: azure: authorization-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/authorize token-uri: ${gapwalk-application.security.issuerUri}/oauth2/v2.0/token jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys resourceserver: jwt: jwk-set-uri: ${gapwalk-application.security.issuerUri}/discovery/v2.0/keys
AWS Pustaka filter OAuth ekstensi Blu Age
Perpustakaan OAuth ekstensi AWS Blu Age disediakan oleh tim AWS Blu Age selama keterlibatan Anda dengan Layanan AWS Profesional
Pustaka ini membaca claim.claims konfigurasi dalam application-main.yml fie yang ditampilkan di blok kode sebelumnya. Konfigurasi ini adalah daftar. Setiap item dalam daftar memberikan dua nilai: claimName danclaimMapValue. claimNamemerupakan nama kunci dalam JSON Web Token (JWT) yang dikirim oleh frontend, dan claimMapValue merupakan nama kunci dalam. SharedContext Misalnya, jika Anda ingin menangkap ID pengguna di backend, atur claimName ke nama kunci di JWT yang menyimpan userId yang disediakan oleh Microsoft Entra ID, dan atur claimMapValue ke nama kunci untuk mengambil ID pengguna dalam kode backend.
Misalnya, jika Anda mengatur UserIdclaimMapValue, Anda dapat menggunakan kode berikut untuk mengekstrak ID pengguna:
SharedContext.get().getValue("userId", [UserId]);
Praktik terbaik
Dalam penerapan pola ini, pertimbangkan pertimbangan keamanan penting berikut.
penting
Pola ini memberikan dasar untuk integrasi otentikasi. Kami menyarankan Anda menerapkan langkah-langkah keamanan selain yang dibahas di bagian ini berdasarkan persyaratan bisnis Anda sebelum Anda menyebarkannya ke produksi.
AWS keamanan konfigurasi.Pindahkan nilai konfigurasi sensitif dari
application-main.ymlke AWS Secrets Manager. Misalnya, konfigurasikan properti berikut dengan menggunakan Secrets Manager:security: oauth2: client: registration: azure: client-id: {clientId} client-secret: ${clientSecret}Untuk informasi selengkapnya tentang cara menggunakan Secrets Manager untuk mengonfigurasi parameter AWS Blu Age, lihat Rahasia AWS Blu Age Runtime di dokumentasi. AWS Mainframe Modernization
Perlindungan lingkungan runtime. Konfigurasikan lingkungan aplikasi modern dengan kontrol AWS keamanan yang tepat:
server: tomcat: remoteip: protocol-header: X-Forwarded-Proto remote-ip-header: X-Forwarded-For forward-headers-strategy: NATIVECloudWatch Pencatatan Amazon. Pertimbangkan untuk menambahkan file
logback-spring.xml to src/main/resources:<configuration> <appender name="CLOUDWATCH" class="com.amazonaws.services.logs.logback.CloudWatchAppender"> <logGroup>/aws/bluage/application</logGroup> <logStream>${AWS_REGION}-${ENVIRONMENT}</logStream> <layout> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </layout> </appender> <root level="INFO"> <appender-ref ref="CLOUDWATCH"/> </root> </configuration>Untuk informasi tentang mengaktifkan penelusuran dengan CloudWatch, lihat Mengaktifkan jejak untuk mencatat korelasi dalam dokumentasi. CloudWatch
Konfigurasi dan penanganan token. Konfigurasikan masa pakai token di Microsoft Entra ID agar selaras dengan persyaratan keamanan Anda. Tetapkan token akses untuk kedaluwarsa dalam 1 jam dan refresh token untuk kedaluwarsa dalam 24 jam. Dalam konfigurasi AWS Blu Age Runtime (
application-main.yml), pastikan validasi JWT dikonfigurasi dengan benar dengan URI penerbit dan nilai audiens yang tepat dari pendaftaran aplikasi Entra ID Anda.Saat token kedaluwarsa dan di-refresh:
Pencegat kesalahan aplikasi Angular menangani respons 401 dengan mendapatkan token baru melalui MSAL.
Token baru dikirim dengan permintaan berikutnya.
OAuth Filter AWS Blu Age Runtime memvalidasi token baru dan secara otomatis memperbarui
SharedContextdengan informasi pengguna saat ini. Ini memastikan bahwa logika bisnis terus memiliki akses ke konteks pengguna yang valid melaluiSharedContext.get().getValue()panggilan.
Untuk informasi selengkapnya tentang komponen AWS Blu Age Runtime dan pembaruannya, lihat catatan rilis AWS Blu Age.
Keamanan Runtime AWS Blu Age.
oauth2-extPustaka yang disediakan oleh AWS Blu Age harus ditempatkan di lokasi direktori bersama yang benar ({app-server-home}/shared/) dengan izin file yang tepat. Verifikasi bahwa pustaka berhasil mengekstrak informasi pengguna JWTs dengan memeriksa populasiSharedContextobjek di log Anda.Konfigurasi klaim khusus. Dalam
application-main.yml, tentukan klaim yang Anda butuhkan dari Microsoft Entra ID secara eksplisit. Misalnya, untuk menangkap email dan peran pengguna, tentukan:gapwalk-application: security: claim: claims: - claimName: upn claimMapValue: username - claimName: roles claimMapValue: userRoles - claimName: email claimMapValue: userEmailPenanganan kesalahan. Tambahkan penanganan kesalahan untuk mengatasi kegagalan otentikasi di aplikasi Angular Anda; misalnya:
@Injectable() export class AuthErrorInterceptor implements HttpInterceptor { intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { return next.handle(request).pipe( catchError((error: HttpErrorResponse) => { if (error.status === 401) { // Handle token expiration this.authService.login(); } if (error.status === 403) { // Handle unauthorized access this.router.navigate(['/unauthorized']); } return throwError(() => error); }) ); } }Konfigurasi batas waktu sesi. Konfigurasikan pengaturan batas waktu sesi di AWS Blu Age Runtime dan Microsoft Entra ID. Misalnya, tambahkan kode berikut ke
application-main.ymlfile Anda:server: servlet: session: timeout: 3600 # 1 hour in secondsMsalGuard. Anda harus menerapkan MsalGuard fitur untuk semua rute yang dilindungi untuk mencegah akses yang tidak sah. Misalnya:
const routes: Routes = [ { path: '', redirectTo: '/transaction-runner', pathMatch: 'full' }, { path: 'transaction-runner', component: TransactionRunnerComponent, canActivate:guards }, { path: 'user-info', component: UserInfoComponent, canActivate:guards }, { path: 'term/:transid/:commarea', component: TermComponent, canActivate:guards }, { path: 'code', component: TransactionRunnerComponent } ];Rute yang tidak memiliki MsalGuard perlindungan akan dapat diakses tanpa otentikasi, berpotensi mengekspos fungsionalitas sensitif. Pastikan bahwa semua rute yang memerlukan otentikasi menyertakan penjaga dalam konfigurasi mereka.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Siapkan akun Microsoft Azure untuk membuat ID Entra. | Untuk opsi dan instruksi, lihat situs web Microsoft Azure | Pengembang aplikasi |
Siapkan ID Microsoft Entra di aplikasi Anda. | Untuk mempelajari cara menambahkan otentikasi Microsoft Entra ID B2C (Azure AD B2C) ke Angular SPA Anda, lihat dokumentasi Microsoft.
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning GitHub repositori untuk mendapatkan kode Angular yang diperlukan untuk otentikasi. | Jalankan perintah berikut untuk mengkloning GitHub repositori
| Pengembang aplikasi |
Terapkan kode modern AWS Blu Age di server Tomcat untuk mengimplementasikan otentikasi. | Untuk mengatur lingkungan lokal yang mencakup Tomcat dan server pengembangan Angular, ikuti langkah-langkah instalasi yang disediakan oleh tim AWS Blu Age sebagai bagian dari keterlibatan pelanggan Anda dengan Layanan AWS Profesional. | Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Aktifkan keamanan AWS Blu Age Runtime untuk melindungi titik akhir AWS Blu Age REST API. | Konfigurasikan
| Pengembang aplikasi |
Masukkan kode contoh dari lingkungan lokal Anda ke dalam basis kode Angular modern Blu Age Anda. | Untuk informasi tentang cara memasukkan contoh ke dalam basis kode Angular modern AWS Blu Age Anda, lihat bagian repositori Kode sebelumnya dalam pola ini. | Pengembang aplikasi |
Tempatkan | Tempatkan
| Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Menyebarkan aplikasi frontend. | Jalankan perintah berikut untuk memulai aplikasi frontend secara lokal:
catatanMenambahkan | Pengembang aplikasi |
Mulai aplikasi backend. | Mulai server Tomcat di Eclipse. | Pengembang aplikasi |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Uji fungsionalitas login. | Akses aplikasi yang digunakan secara lokal di catatanHTTP digunakan di sini untuk tujuan demonstrasi. Dalam produksi atau lingkungan lain yang dapat diakses publik, Anda harus menggunakan HTTPS untuk keamanan. Bahkan untuk pengembangan lokal, kami menyarankan Anda mengatur HTTPS jika memungkinkan. Prompt login Microsoft akan muncul, dan pengguna yang dikonfigurasi di Microsoft Entra ID harus diizinkan untuk mengakses aplikasi. | Pengembang aplikasi |
Uji header otorisasi dalam permintaan. | catatanLangkah-langkah berikut menggunakan CardDemo
| Pengembang aplikasi |
Uji fungsionalitas logout. | Pilih Keluar untuk keluar, dan coba akses aplikasi lagi. Ini harus menyajikan prompt login baru. | Pengembang aplikasi |
Pemecahan Masalah
| Isu | Solusi |
|---|---|
Token yang dikeluarkan oleh Microsoft Entra ID tidak kompatibel dengan keamanan Spring Boot OAuth 2.0. | Untuk penyelesaian masalah ini, lihat Microsoft Entra ID OAuth Flow |
Pertanyaan umum terkait token. | Untuk memecahkan kode dan melihat konten token JWT, gunakan situs web https://jwt.io/. |
Sumber daya terkait
Untuk memahami cara kerja OAuth 2.0, lihat situs web OAuth 2.0
. Untuk gambaran umum tentang Microsoft Authentication Library (MSAL), lihat dokumentasi Microsoft Entra
. Untuk informasi tentang profil pengguna pada sistem AS/400, lihat IBM i (AS400) tutorial
.