Anda sedang melihat dokumentasi Apigee Edge.
Buka
Dokumentasi Apigee X. info
OAuth telah muncul sebagai protokol otorisasi utama untuk API. Versi OAuth yang dibahas secara mendetail dalam topik ini dijelaskan dalam OAuth 2.0 Spesifikasi.
OAuth adalah protokol yang memungkinkan pengguna akhir aplikasi untuk memberi otorisasi aplikasi untuk bertindak atas nama mereka. Aplikasi melakukannya dengan mendapatkan akses token dari penyedia API. Penyedia API mengautentikasi akhir aplikasi kredensial pengguna, memastikan bahwa pengguna telah memberikan otorisasi pada aplikasi, lalu mengeluarkan token akses ke aplikasi. Saat aplikasi menggunakan API yang dilindungi, Apigee Edge akan memeriksa token akses untuk memastikan bahwa statusnya masih valid dan masih berlaku. Sebagai penyedia API, Anda harus mengekspos endpoint yang memungkinkan aplikasi mendapatkan token akses.
Untuk memudahkan Anda mulai menggunakan OAuth, Apigee Edge memungkinkan Anda mengonfigurasi dan menerapkan OAuth menggunakan kebijakan, tanpa mengharuskan Anda menulis kode apa pun. Dalam topik ini, Anda akan mempelajari cara melindungi API dan cara mendapatkan akses dan cara menggunakan token akses tersebut untuk mengakses API yang dilindungi.
Konfigurasi OAuth default untuk organisasi
Untuk memudahkan, semua organisasi di Apigee Edge telah dikonfigurasi sebelumnya dengan serangkaian OAuth 2.0 endpoint yang menerapkan jenis pemberian kredensial klien. Klien jenis pemberian kredensial menentukan prosedur untuk menerbitkan token akses sebagai imbalan atas aplikasi kredensial. Kredensial aplikasi ini hanyalah pasangan kunci dan rahasia konsumen yang Masalah Apigee Edge untuk setiap aplikasi yang didaftarkan di organisasi. 'Kredensial klien' mengacu pada pasangan kunci konsumen dan rahasia itu sendiri.
Untuk mempelajari lebih lanjut cara menerbitkan kredensial ke aplikasi menggunakan Layanan Developer Edge, lihat Daftarkan aplikasi dan kelola kunci.
Karena alasan ini, cukup mudah untuk 'melangkah' skema keamanan API Anda dari kunci API dan validasi kredensial klien OAuth. Kedua skema menggunakan kunci dan rahasia konsumen yang sama untuk memvalidasi aplikasi klien. Perbedaannya adalah, kredensial klien memberikan lapisan tambahan tetap aman, karena Anda dapat dengan mudah mencabut token akses bila diperlukan, tanpa harus mencabut kunci konsumen aplikasi. Untuk menggunakan endpoint OAuth default, Anda dapat menggunakan kunci konsumen apa pun dan secret yang dibuat untuk aplikasi di organisasi Anda guna mengambil token akses dari token endpoint. (Anda bahkan dapat mengaktifkan kredensial klien untuk aplikasi yang telah memiliki kunci konsumen dan secrets.)
Spesifikasi lengkap untuk pemberian kredensial klien dapat ditemukan di OAuth 2.0 Spesifikasi.
Lindungi API Anda dengan kebijakan
Sebelum dapat menggunakan token akses, Anda perlu mengonfigurasi API untuk memvalidasi akses OAuth token pada runtime. Untuk melakukannya, Anda mengonfigurasi proxy API untuk validasi token akses. Ini berarti bahwa setiap kali aplikasi membuat permintaan untuk memakai salah satu API Anda, aplikasi harus menyajikan token akses yang valid bersama permintaan API. Apigee Edge menangani kompleksitas di balik pembuatan, penyimpanan, dan validasi token akses yang disajikan.
Anda dapat dengan mudah menambahkan verifikasi OAuth ke API saat membuat proxy API baru. Saat membuat proxy API baru, Anda dapat Menambahkan Fitur. Sebagai yang ditunjukkan di bawah, Anda dapat menambahkan verifikasi token akses OAuth 2.0 dengan memilih tombol pilihan di sebelah Secure with OAuth v2.0 Access Tokens. Bila Anda memilih opsi ini, dua kebijakan akan dikaitkan ke proxy API yang baru dibuat, satu untuk memverifikasi token akses, dan satu lagi untuk menghapus token akses setelah diverifikasi.
Selain itu, jika Anda memilih opsi Secure with OAuth v2.0 Access Tokens, kotak centang Publish API Product dapat dipilih dan otomatis dipilih. Centang ini jika Anda ingin secara otomatis menghasilkan produk saat membangun API baru {i>proxy<i}. Produk yang dibuat secara otomatis akan dibuat dengan pengaitan ke proxy API baru. Jika Anda memiliki produk yang sudah ada yang akan dikaitkan dengan API baru ini, pastikan untuk kotak centang agar Anda tidak membuat produk yang tidak diperlukan. Untuk informasi tentang produk, lihat Apa yang dimaksud dengan produk API?
Jika Anda perlu mengaktifkan verifikasi token akses untuk proxy API yang sudah ada, yang perlu Anda lakukan adalah melampirkan kebijakan jenis OAuthV2 ke API yang ingin dilindungi. Kebijakan OAuthV2 bekerja dengan menentukan operasi. Jika Anda ingin untuk memvalidasi token akses, Anda menentukan operasi yang disebut VerifyAccessToken. (Jenis operasi lain yang yang didukung oleh jenis kebijakan OAuthV2 adalah GenerateAccessToken dan GenerateRefreshToken. Anda akan belajar tentang operasi tersebut saat Anda menyiapkan endpoint OAuth.)
Kebijakan VerifyOAuthTokens jenis OAuthV2
Berikut contoh kebijakan untuk memvalidasi token akses. (Setelannya adalah dijelaskan dalam tabel di bawah.)
<OAuthV2 name="VerifyOAuthTokens"> <Operation>VerifyAccessToken</Operation> </OAuthV2>
Setelan kebijakan
Nama | Deskripsi | Default | Wajib? |
---|---|---|---|
OAuthV2 |
Jenis kebijakan | ||
name |
Nama kebijakan, yang dirujuk di Endpoint proxy API konfigurasi Anda. | T/A | Ya |
Operation |
Operasi yang akan dijalankan oleh kebijakan OAuthV2. Dengan menetapkan VerifyAccessToken, Anda mengonfigurasi kebijakan untuk memeriksa permintaan token akses, dan untuk memverifikasi bahwa token valid, belum habis masa berlakunya, dan disetujui untuk menggunakan resource API yang diminta (URI). (Untuk melakukan pemeriksaan ini, kebijakan membaca produk API yang disetujui aplikasi consume.) | T/A | Ya |
Untuk membuat kebijakan ini di UI pengelolaan, buka API > API Proxy.
Dari daftar proxy API, pilih weatherapi.
Dari Overview untuk weatherapi, pilih Develop {i>view<i}.
Dari menu drop-down, pilih Kebijakan Baru > OAuth v2.0
Setelah Anda memilih kebijakan OAuth v2.0, menu konfigurasi New Policy akan ditampilkan.
Beri nama deskriptif untuk kebijakan Anda, lalu pastikan untuk memilih Lampirkan Kebijakan, Flow PreFlow, dan Request sebagai setelan lampiran kebijakan.
Pilih Tambahkan dan kebijakan akan dibuat serta dilampirkan ke permintaan weatherapi PreFlow.
Setelah Anda menambahkan kebijakan, permintaan konfigurasi PreFlow di bawah ini akan ditampilkan di Designer.
Jika Anda bekerja secara lokal di editor teks atau IDE, lampirkan Kebijakan ke PreFlow permintaan proxy API yang ingin Anda lindungi:
<PreFlow> <Request> <Step><Name>VerifyOAuthTokens</Name></Step> </Request> </PreFlow>
Dengan melampirkan kebijakan ke PreFlow permintaan, Anda memastikan bahwa kebijakan selalu diterapkan pada semua pesan permintaan.
Anda kini telah mengamankan API dengan kredensial klien OAuth 2.0. Langkah selanjutnya adalah mempelajari cara mendapatkan token akses, dan menggunakannya untuk mengakses API yang aman.
Menggunakan token akses untuk mengakses referensi
Setelah weatherapi diamankan dengan OAuth 2.0, aplikasi harus memberikan token akses yang dapat digunakan API. Untuk mengakses sumber daya yang dilindungi, aplikasi menyajikan token akses dalam permintaan sebagai "Otorisasi" Header HTTP sebagai berikut:
$ curl -H "Authorization: Bearer ylSkZIjbdWybfs4fUQe9BqP0LH5Z" http://{org_name}-test.apigee.net/weather/forecastrss?w=12797282
Karena API memiliki kebijakan OAuthV2 yang terpasang, Apigee Edge akan memverifikasi bahwa token akses yang ditampilkan valid, lalu memberikan akses ke API, yang menampilkan laporan cuaca ke aplikasi yang membuat permintaan.
Namun, bagaimana cara aplikasi mendapatkan token akses? Kami akan membahasnya di bagian berikutnya.
Cara menukar kredensial klien untuk token akses
Aplikasi memperoleh token akses dengan memberikan pasangan kunci/rahasia konsumen ke token endpoint. Endpoint token dikonfigurasikan di proxy API yang disebut oauth terlebih dahulu. Jadi aplikasi perlu memanggil API yang diekspos oleh API oauth untuk mendapatkan token akses. Setelah memiliki token akses, aplikasi dapat memanggil weatherapi berulang kali, hingga masa berlaku token akses habis, atau token akses dicabut.
Sekarang Anda perlu beralih untuk menganggap diri Anda sebagai developer aplikasi. Anda ingin memanggil {i>weatherapi<i}, jadi Anda perlu mendapatkan token akses untuk aplikasi Anda. Pertama, yang perlu Anda lakukan adalah dapatkan pasangan kunci konsumen dan rahasia (atau dikenal sebagai API kunci aplikasi atau kunci aplikasi).
Anda bisa mendapatkan kunci dan rahasia konsumen dengan mendaftarkan aplikasi di organisasi Anda di Apigee Edge.
Anda dapat melihat semua aplikasi dalam organisasi di UI pengelolaan Apigee Edge.
Daftar aplikasi yang didaftarkan di organisasi Anda akan ditampilkan.
(Jika tidak ada aplikasi yang ditampilkan, Anda dapat mempelajari cara mendaftarkan aplikasi dalam topik yang disebut Mendaftarkan aplikasi dan mengelola API .)
Pilih aplikasi dari daftar untuk melihat profilnya secara mendetail.
Di tampilan detail untuk aplikasi yang Anda pilih, perhatikan kolom untuk Consumer Key dan Rahasia Konsumen. Kedua nilai ini adalah klien kredensial yang akan Anda gunakan untuk mendapatkan token akses OAuth.
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps \ -u myname:mypass
Panggilan ini akan menampilkan daftar aplikasi menurut ID aplikasi.
[ "da496fae-2a04-4a5c-b2d0-709278a6f9db", "50e3e831-175b-4a05-8fb6-05a54701af6e" ]
Anda dapat mengambil profil aplikasi dengan melakukan panggilan GET sederhana pada ID aplikasi:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/{app_id} \ -u myname:mypass
Contoh:
$ curl https://api.enterprise.apigee.com/v1/o/{org_name}/apps/da496fae-2a04-4a5c-b2d0-709278a6f9db \ -u myname:mypass
Panggilan API menampilkan profil aplikasi yang Anda tentukan. Misalnya, sebuah profil aplikasi untuk weatherapp memiliki representasi JSON berikut:
{ "accessType" : "read", "apiProducts" : [ ], "appFamily" : "default", "appId" : "da496fae-2a04-4a5c-b2d0-709278a6f9db", "attributes" : [ ], "callbackUrl" : "http://weatherapp.com", "createdAt" : 1380290158713, "createdBy" : "noreply_admin@apigee.com", "credentials" : [ { "apiProducts" : [ { "apiproduct" : "PremiumWeatherAPI", "status" : "approved" } ], "attributes" : [ ], "consumerKey" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K", "consumerSecret" : "hAr4Gn0gA9vAyvI4", "expiresAt" : -1, "issuedAt" : 1380290161417, "scopes" : [ ], "status" : "approved" } ], "developerId" : "5w95xGkpnjzJDBT4", "lastModifiedAt" : 1380290158713, "lastModifiedBy" : "noreply_admin@apigee.com", "name" : "weatherapp", "scopes" : [ ], "status" : "approved" }
Perhatikan nilai untuk consumerKey
dan consumerSecret
. Anda menggunakan
kredensial untuk mendapatkan token akses dengan
menyajikannya sebagai kredensial Autentikasi Dasar di
permintaan HTTP, seperti yang ditunjukkan di bawah ini. Jenis pemberian izin ditampilkan sebagai parameter kueri untuk permintaan tersebut.
(Pastikan untuk mengubah nilai variabel {org_name} agar sesuai dengan nama organisasi Anda
di Apigee Edge.)
Buat permintaan untuk mendapatkan token akses
Dalam permintaan berikut, ganti nilai consumerKey
dengan
client_id
. Ganti nilai consumerSecret
terkait untuk
client_secret
.
$ curl https://{org_name}-test.apigee.net/oauth/client_credential/accesstoken?grant_type=client_credentials -X POST -d 'client_id=bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K&client_secret=hAr4Gn0gA9vAyvI4'
API Services memverifikasi kunci dan rahasia konsumen, lalu menghasilkan respons yang berisi token akses untuk aplikasi ini:
{ "issued_at" : "1380892555397", "application_name" : "957aa73f-25c2-4ead-8021-adc01f0d2c6b", "scope" : "", "status" : "approved", "api_product_list" : "[oauth-test]", "expires_in" : "3599", "developer.email" : "tesla@weathersample.com", "organization_id" : "0", "client_id" : "bBGAQrXgivA9lKu7NMPyoYpVKNhGar6K", "access_token" : "ylSkZIjbdWybfs4fUQe9BqP0LH5Z", "organization_name" : "rqa", "refresh_token_expires_in" : "0", "refresh_count" : "0" }
Perhatikan nilai access_token
dalam respons di atas. Ini adalah token akses yang
aplikasi yang akan digunakan untuk mendapatkan
akses {i>runtime<i} ke sumber daya yang dilindungi. Token akses untuk aplikasi ini adalah
ylSkZIjbdWybfs4fUQe9BqP0LH5Z
.
Anda kini memiliki token akses yang valid, ylSkZIjbdWybfs4fUQe9BqP0LH5Z
, yang dapat digunakan
untuk mengakses API yang dilindungi.
Menggunakan konfigurasi OAuth default
Setiap organisasi (bahkan organisasi uji coba gratis) di Apigee Edge disediakan dengan token OAuth endpoint. Endpoint telah dikonfigurasi sebelumnya dengan kebijakan di proxy API yang disebut oauth terlebih dahulu. Anda dapat mulai menggunakan endpoint token segera setelah membuat akun di Apigee Edge.
Endpoint OAuth default mengekspos URI endpoint berikut:
/oauth/client_credential/accesstoken
Publikasikan URI ini ke developer yang perlu mendapatkan token akses. Developer aplikasi mengonfigurasi aplikasi mereka memanggil endpoint ini, menampilkan pasangan kunci konsumen dan rahasia mereka untuk mendapatkan akses token kata.
Endpoint token kredensial klien default terekspos melalui jaringan di URL:
https://{org_name}-{env_name}.apigee.net/oauth/client_credential/accesstoken
Misalnya, jika nama organisasi Anda adalah "apimakers", URL-nya adalah:
https://apimakers-test.apigee.net/oauth/client_credential/accesstoken
Ini adalah URL yang dipanggil developer untuk mendapatkan token akses.
Konfigurasi 3-legged OAuth
Konfigurasi Three-legged OAuth (kode otorisasi, implisit, dan pemberian sandi ) mewajibkan Anda, penyedia API, untuk mengautentikasi pengguna akhir aplikasi. Karena setiap organisasi mengautentikasi pengguna dengan berbagai cara, diperlukan beberapa penyesuaian atau kode untuk mengintegrasikan OAuth dengan toko pengguna Anda. Misalnya, semua pengguna Anda dapat disimpan di folder Active Direktori, di LDAP, atau beberapa penyimpanan pengguna lainnya. Untuk mengaktifkan dan menjalankan tiga kaki OAuth, Anda perlu mengintegrasikan pemeriksaan terhadap penyimpanan pengguna ini ke dalam alur OAuth keseluruhan.
OAuth 1.0a
Untuk detail tentang kebijakan OAuth 1.0a, lihat kebijakan OAuth v1.0a.
Dapatkan bantuan
Untuk mendapatkan bantuan, lihat Apigee Dukungan Pelanggan.