Pengikatan sesi URL otorisasi OAuth 2.0
AgentCore Identity menyediakan pengambilan token akses OAuth 2.0 untuk aplikasi agen Anda untuk mengakses vendor aplikasi pihak ketiga atau sumber daya yang dilindungi oleh penyedia identitas/server otorisasi. Jika aplikasi atau sumber daya mengharuskan pengguna untuk mengotorisasi secara eksplisit dengan alur kode otorisasi OAuth, AgentCore Identity menghasilkan URL otorisasi bagi pengguna untuk menavigasi dan menyetujui akses. Kemudian, setelah pengguna memberikan persetujuan, AgentCore Identity mengambil token akses dari aplikasi atau sumber daya atas nama pengguna, dan menyimpannya di AgentCore Identity Token Vault.
Namun, karena pengguna dapat secara tidak sengaja mengirim URL otorisasi ke pengguna lain dan mendapatkan akses ke aplikasi atau sumber daya pengguna tersebut, aplikasi Anda harus memverifikasi bahwa pengguna yang memulai permintaan otorisasi masih sama dengan pengguna yang telah memberikan persetujuan untuk aplikasi atau sumber daya. Untuk melakukan itu, Anda perlu mendaftarkan titik akhir aplikasi HTTPS yang tersedia untuk umum dengan AgentCore Identity yang menangani verifikasi pengguna.
Cara kerja pengikatan sesi
Diagram alir berikut dan langkah-langkah terkait menunjukkan proses pengikatan sesi URL otorisasi OAuth 2.0:
-
Invoke agent — Kode agen Anda memanggil
GetResourceOauth2TokenAPI untuk mengambil URL otorisasi, ketika pengguna agen asal ingin mengakses beberapa aplikasi atau sumber daya yang dimiliki. he/she -
Hasilkan URL otorisasi — AgentCore Identitas menghasilkan URL otorisasi dan URI sesi bagi pengguna untuk menavigasi dan menyetujui akses.
-
Otorisasi dan dapatkan token akses — Pengguna menavigasi ke URL otorisasi dan memberikan persetujuan kepada agen Anda untuk mengakses sumber daya. his/her Setelah itu, AgentCore Identity mengalihkan browser pengguna ke titik akhir aplikasi HTTPS Anda dengan informasi yang berisi pengguna asal permintaan otorisasi. Pada titik ini, titik akhir aplikasi HTTPS Anda menentukan apakah pengguna agen asal masih sama dengan pengguna aplikasi Anda yang saat ini masuk. Jika cocok, titik akhir aplikasi Anda akan dipanggil
CompleteResourceTokenAuthsehingga AgentCore Identity dapat mengambil dan menyimpan token akses. -
Re-invoke agen untuk mendapatkan token akses — Setelah aplikasi mengembalikan respons yang valid, aplikasi agen Anda akan dapat mengambil token OAuth2.0 akses yang awalnya diminta untuk pengguna. Jika pengguna tidak cocok, aplikasi Anda tidak melakukan apa pun atau mencatat upaya.
Dengan mengizinkan endpoint aplikasi Anda untuk memverifikasi identitas pengguna, AgentCore Identity memungkinkan aplikasi agen Anda untuk memastikan bahwa selalu pengguna yang sama yang memulai permintaan otorisasi dan orang yang menyetujui akses.
Detail implementasi
Langkah-langkah berikut memandu Anda melalui pengaturan identitas beban kerja, penyedia kredensi OAuth 2.0, dan klien aplikasi OAuth 2.0 dari penyedia sumber daya untuk mengambil token akses OAuth 2.0 untuk aplikasi agen Anda.
Anda dapat merujuk ke kode sampel sebagai contoh aplikasi yang berfungsi: implementasi server callback OAuth 2.0
penting
Saat Anda menggunakan AgentCore CLI dengan agentcore dev di lingkungan lokal, untuk menyederhanakan pengembangan dan pengujian lokal Anda, CLI meng-host titik akhir panggilan balik dan memanggil CompleteResourceTokenAuth API atas nama Anda untuk memverifikasi sesi pengguna untuk mendapatkan token akses OAuth 2.0 sehingga Anda dapat melewati langkah 1, 2 dan 4 dalam pengaturan berikut. Namun, saat menerapkan kode agen Anda ke AgentCore Runtime, aplikasi web Anda yang terhubung ke runtime agen harus meng-host titik akhir callback HTTPS yang dapat diakses publik itu sendiri, titik akhir panggilan balik harus didaftarkan terhadap identitas beban kerja sebagai AllowedResourceOAuth2ReturnUrl dengan memanggil UpdateWorkloadIdentity menggunakan ID agen yang disediakan oleh AgentCore Runtime, lalu panggil CompleteResourceTokenAuth API setelah memverifikasi sesi browser pengguna saat ini untuk mengamankan alur otorisasi OAuth 2.0 Anda.
Untuk mengimplementasikan pengikatan sesi URL otorisasi OAuth 2.0
-
Buat URL aplikasi — Untuk aplikasi browser yang menghadap pengguna Anda, buat dan host URL baru yang dapat diakses dari browser pengguna dan dapat menerima permintaan dari pengalihan browser. Halaman ini harus mengarahkan ulang ke halaman aplikasi yang dapat dilanjutkan oleh pengguna Anda dengan sesi agen mereka ATAU membuat beberapa halaman web dasar yang menginstruksikan pengguna Anda untuk mengembalikan sesi agen mereka yang saat ini aktif. Di bagian selanjutnya dari implementasi, halaman ini digunakan untuk validasi sesi aktif pengguna saat ini, sehingga halaman ini juga harus dapat mengakses dan memelihara data sesi pengguna aplikasi Anda.
Sebagai contoh, aplikasi Anda mungkin memiliki penggunanya berinteraksi dengan agen di halaman aplikasi utama seperti
https://myagentapp.com/assistant. Anda akan ingin mengekspos URL baru sepertihttps://myagentapp.com/callbackitu untuk saat ini akan mengarahkan ke halaman aplikasi utama. Logika kode aktual di/callbacktitik akhir Anda akan diperbarui nanti saat mengikuti panduan ini. -
Perbarui identitas beban kerja dengan URL aplikasi - (Dapat dilewati jika pengujian secara lokal melalui AgentCore CLI) Setelah Anda membuat dan menghosting URL aplikasi untuk AgentCore Identity untuk dialihkan, perbarui identitas beban kerja Anda sehingga URL aplikasi terdaftar sebagai file.
AllowedResourceOauth2ReturnUrlPastikan kredenal IAM yang digunakan memiliki izin untuk meneleponCreateWorkloadIdentityatauUpdateWorkloadIdentitybergantung pada apakah Anda membuat identitas beban kerja baru atau memperbarui identitas yang sudah ada.catatan
Untuk identitas beban kerja yang dibuat atas nama Anda oleh AgentCore Runtime atau Gateway, nama identitas beban kerja akan sesuai dengan ID runtime atau ID gateway yang dikeluarkan oleh layanan.
Contoh panggilan
UpdateWorkloadIdentityAPI:aws bedrock-agentcore-control update-workload-identity --name GoogleCalendarAgent \ --allowed-resource-oauth2-return-urls https://myagentapp.com/callback -
Buat penyedia kredensi OAuth 2.0 di AgentCore Identity — Untuk mendaftarkan penyedia kredensi OAuth 2.0 sepenuhnya, Anda memerlukan izin untuk menelepon dan.
CreateOauth2CredentialProviderUpdateOauth2CredentialProviderIkuti langkah-langkah ini:-
Panggilan
CreateOauth2CredentialProviderdengan placeholder untuk ID klien dan rahasia klien. -
Respons API akan berisi URL callback (redirect) OAuth seperti:
https://bedrock-agentcore.amazonaws.com/identities/callback/123-456-7890Catat nilai ini karena spesifik untuk setiap penyedia yang dibuat dan akan dibutuhkan nanti oleh penyedia sumber daya OAuth 2.0.
-
Buka penyedia sumber daya Anda (misalnya, Google atau GitHub) dan buat klien aplikasi OAuth 2.0. Berikan URL callback yang dikeluarkan oleh layanan dari
CreateOauth2CredentialProviderpanggilan ke penyedia sumber daya sebagai URL callback OAuth 2.0 yang diizinkan. -
Setelah klien aplikasi OAuth 2.0 dibuat, catat ID klien dan rahasia klien yang ditetapkan ke klien aplikasi Anda karena Anda perlu memperbarui Penyedia Kredenal OAuth 2.0 dengan nilai-nilai ini.
-
Panggil
UpdateOauth2CredentialProviderdan berikan ID klien dan rahasia klien yang disediakan oleh penyedia sumber daya, ganti nilai placeholder yang disediakan saat membuat penyedia kredensi.
-
-
Tambahkan kode handler untuk menelepon CompleteResourceTokenAuth - Setelah Anda membuat penyedia kredensi OAuth 2.0 Anda, tambahkan kode dan izin IAM untuk memanggil
CompleteResourceTokenAuthAPI di penangan URL aplikasi Anda. Saat memanggilCompleteResourceTokenAuthAPI, aplikasi Anda harus menampilkan token OAuth penyedia identitas masuk asli atauuser_idString yang digunakan untuk menghasilkan token akses beban kerja untuk mewakili pengguna dan aplikasi agen yang terlibat dalam alur otorisasi OAuth 2.0. Informasi ini harus diambil dari sesi aplikasi aktif di browser pengguna (biasanya melalui cookie browser atau penyimpanan lokal browser) dan TIDAK boleh ditarik dari cache sesi jarak jauh.Selain itu, setiap URL otorisasi yang dihasilkan oleh AgentCore Identity diidentifikasi secara unik dengan URI sesinya sendiri. URI sesi ini juga harus disajikan bersama pengenal pengguna untuk mengikat sesi dengan pengguna yang dituju.
penting
Sebelum aplikasi Anda memanggil
CompleteResourceTokenAuthAPI, aplikasi Anda harus memverifikasi bahwa pengguna saat ini memiliki sesi aktif dan valid dengan aplikasi Anda. Dengan demikian aplikasi Anda dapat mengaitkan pengguna yang dituju dengan sesi Otorisasi. Selain itu, jika Anda memiliki layanan backend yang bergantung pada aplikasi Anda, Anda dapat memindahkan kode yang memanggilCompleteResourceTokenAuthAPI ke backend Anda, dan meminta aplikasi Anda meneruskan token OAuth penyedia identitas masuk atau ke backend Anda.user_idContoh kode aplikasi:
def _handle_3lo_callback(self, request: Request) -> JSONResponse: session_id = request.query_params.get("session_id") if not session_id: console.print("Missing session_id in OAuth2 3LO callback") return JSONResponse(status_code=400, content={"message": "missing session_id query parameter"}) session_details = validate_session_cookies(request.cookies.get('my-application-cookie')) user_id = None if oauth2_config: user_id = session_details.get(USER_ID) if not user_id: console.print(f"Missing {USER_ID} in session_details") return JSONResponse(status_code=500, content={"message": "Internal Server Error"}) console.print(f"Handling 3LO callback for workload_user_id={user_id} | session_id={session_id}", soft_wrap=True) region = agent_config.aws.region if not region: console.print("AWS Region not configured") return JSONResponse(status_code=500, content={"message": "Internal Server Error"}) identity_client = IdentityClient(region) identity_client.complete_resource_token_auth( session_uri=session_id, user_identifier=UserIdIdentifier(user_id=user_id) ) return JSONResponse(status_code=200, content={"message": "OAuth2 3LO flow completed successfully"}) -
Tes — Setelah Anda menyelesaikan pengaturan, Anda siap untuk menguji integrasi. Mulailah dengan menelepon
GetResourceOauth2Tokendan di browser Anda pergi ke URL Otorisasi yang dikembalikan. Setelah menyelesaikan otorisasi di penyedia sumber daya OAuth 2.0, Anda akan melihat browser mengalihkan kembali ke URL aplikasi Anda dan memanggil API.CompleteResourceTokenAuthSetelah aplikasi mengembalikan respons yang valid, aplikasi agen Anda akan dapat mengambil token akses OAuth 2.0 yang awalnya diminta untuk pengguna. Token ini dapat diambil dengan memanggilGetResourceOauth2TokenAPI.
Pertimbangan tambahan
Saat menerapkan pengikatan sesi URL otorisasi OAuth 2.0, ingatlah pertimbangan berikut:
-
Setiap URL otorisasi dan pengenal sesi yang sesuai hanya berlaku selama 10 menit.
-
Untuk mengamankan titik akhir callback aplikasi Anda terhadap serangan CSRF, kami sangat menyarankan agar Anda membuat status buram untuk disertakan dalam panggilan API Anda.
GetResourceOAuth2TokenAplikasi Anda harus dapat mengurai nilai ini untuk memastikannya melayani permintaan yang diprakarsai oleh aplikasi agen Anda.