Anda melihat dokumentasi Apigee Edge.
Buka
dokumentasi Apigee X. info
Dengan jenis pemberian kredensial klien, aplikasi mengirimkan kredensialnya sendiri (Client ID dan Client Secret) ke endpoint di Apigee Edge yang disiapkan untuk membuat token akses. Jika kredensialnya valid, Edge akan menampilkan token akses ke aplikasi klien.
Tentang topik ini
Topik ini menawarkan deskripsi umum tentang jenis pemberian kredensial klien OAuth 2.0 dan membahas cara menerapkan alur ini di Apigee Edge.
Kasus penggunaan
Biasanya, jenis pemberian ini digunakan saat aplikasi juga merupakan pemilik resource. Misalnya, aplikasi mungkin perlu mengakses layanan penyimpanan berbasis cloud backend untuk menyimpan dan mengambil data yang digunakan untuk melakukan pekerjaannya, bukan data yang secara khusus dimiliki oleh pengguna akhir. Alur jenis pemberian ini terjadi secara ketat antara aplikasi klien dan server otorisasi. Pengguna akhir tidak berpartisipasi dalam alur jenis pemberian ini.
Peran
Peran menentukan "aktor" yang berpartisipasi dalam alur OAuth. Mari kita telusuri ringkasan singkat peran kredensial klien untuk membantu mengilustrasikan posisi Apigee Edge. Untuk pembahasan lengkap tentang peran OAuth 2.0, lihat spesifikasi IETF OAuth 2.0.
- Aplikasi Klien -- Aplikasi yang memerlukan akses ke resource terlindungi pengguna. Biasanya, dengan alur ini, aplikasi berjalan di server, bukan secara lokal di laptop atau perangkat pengguna.
- Apigee Edge -- Dalam alur ini, Apigee Edge adalah server otorisasi OAuth server. Perannya adalah membuat token akses, memvalidasi token akses, dan meneruskan permintaan yang diotorisasi untuk resource terlindungi ke server resource.
- Server Resource -- Layanan backend yang menyimpan data terlindungi yang memerlukan izin akses aplikasi klien. Jika Anda melindungi proxy API yang dihosting di Apigee Edge, Apigee Edge juga merupakan server resource.
Contoh kode
Anda dapat menemukan implementasi contoh yang lengkap dan berfungsi dari jenis pemberian kredensial klien di GitHub. Lihat Referensi tambahan di bawah untuk mengetahui link ke contoh lainnya.
Diagram alur
Diagram alur berikut mengilustrasikan alur kredensial klien dengan Apigee Edge yang berfungsi sebagai server otorisasi. Secara umum, Edge juga merupakan server resource dalam alur ini -- yaitu, proxy API adalah resource terlindungi.

Langkah-langkah dalam alur kredensial klien
Berikut adalah ringkasan langkah-langkah yang diperlukan untuk menerapkan jenis pemberian kode kredensial klien tempat Apigee Edge berfungsi sebagai server otorisasi. Ingat, dengan alur ini, aplikasi klien hanya menampilkan client ID dan rahasia kliennya, dan jika valid, Apigee Edge akan menampilkan token akses.
Prasyarat: Aplikasi klien harus terdaftar di Apigee Edge untuk mendapatkan kunci client ID dan rahasia klien. Lihat Mendaftarkan aplikasi klien untuk detailnya.
1. Klien meminta token akses
Untuk menerima token akses, klien melakukan POST panggilan API ke Edge dengan nilai untuk client ID dan rahasia klien yang diperoleh dari aplikasi developer terdaftar. Selain itu, parameter grant_type=client_credentials harus diteruskan sebagai parameter kueri. (Namun, Anda dapat mengonfigurasi kebijakan OAuthV2 untuk menerima parameter ini di header atau isi permintaan -- lihat kebijakan OAuthV2 untuk mengetahui detailnya).
Contoh:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials&client_id=ns4fQc14Zg4hKFCNaSzArVuwszX95X&client_secret=ZIjFyTsNgQNyxI'
Catatan: Meskipun Anda dapat meneruskan nilai client_id dan client_secret sebagai parameter kueri seperti yang ditunjukkan di atas, sebaiknya teruskan sebagai string yang dienkode URL base64 di header Authorization. Untuk melakukannya, Anda harus menggunakan alat atau utilitas encoding base64 untuk mengenkode kedua nilai tersebut bersama dengan titik dua yang memisahkannya. Seperti ini: aBase64EncodeFunction(clientidvalue:clientsecret). Jadi, contoh di atas akan dienkode seperti ini:
result = aBase64EncodeFunction(ns4fQc14Zg4hKFCNaSzArVuwszX95X:ZIjFyTsNgQNyxI) // Note the colon separating the two values.
Hasil encoding base64 dari string di atas adalah: bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg==
Kemudian, buat permintaan token seperti ini:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic bnM0ZlFjMTRaZzRoS0ZDTmFTekFyVnV3c3pYOTVYOlpJakZ5VHNOZ1FOeXhJOg=='
2. Edge memvalidasi kredensial
Perhatikan bahwa panggilan API dikirim ke endpoint /accesstoken. Endpoint ini memiliki kebijakan yang dilampirkan untuk memvalidasi kredensial aplikasi. Artinya, kebijakan tersebut membandingkan kunci yang dikirimkan dengan kunci yang dibuat Apigee Edge saat aplikasi didaftarkan. Jika Anda ingin mempelajari lebih lanjut endpoint OAuth di Edge, lihat Mengonfigurasi endpoint dan kebijakan OAuth.
3. Edge menampilkan respons
Jika kredensialnya valid, Edge akan menampilkan token akses ke klien. Jika tidak, error akan ditampilkan.
4. Klien memanggil API terlindungi
Sekarang, dengan token akses yang valid, klien dapat melakukan panggilan ke API terlindungi. Dalam skenario ini, permintaan dibuat ke Apigee Edge (proxy), dan Edge bertanggung jawab untuk memvalidasi token akses sebelum meneruskan panggilan API ke server resource target. Untuk contohnya, lihat Memanggil API terlindungi di bawah.
Mengonfigurasi alur dan kebijakan
Sebagai server otorisasi, Edge memproses permintaan token akses. Sebagai developer API, Anda harus membuat proxy dengan alur kustom untuk menangani permintaan token serta menambahkan dan mengonfigurasi kebijakan OAuthV2. Bagian ini menjelaskan cara mengonfigurasi endpoint tersebut.
Konfigurasi alur kustom
Cara termudah untuk menunjukkan cara alur proxy API dikonfigurasi adalah dengan menampilkan definisi alur XML. Berikut adalah contoh alur proxy API yang dirancang untuk memproses permintaan token akses. Misalnya, saat permintaan masuk dan akhiran jalur cocok dengan /accesstoken, kebijakan GetAccessToken akan dipicu. Lihat Mengonfigurasi endpoint dan kebijakan OAuth untuk mengetahui ringkasan singkat langkah-langkah yang diperlukan untuk membuat alur kustom seperti ini.
<Flows>
<Flow name="GetAccessToken">
<!-- This policy flow is triggered when the URI path suffix
matches /oauth/accesstoken. Publish this URL to app developers
to use when obtaining an access token using an auth code
-->
<Condition>proxy.pathsuffix == "/oauth/accesstoken"</Condition>
<Request>
<Step><Name>GetAccessToken</Name></Step>
</Request>
</Flow>
</Flows>Mengonfigurasi alur dengan kebijakan
Anda harus melampirkan kebijakan ke endpoint, sebagai berikut. Lihat Mengonfigurasi endpoint dan kebijakan OAuth untuk mengetahui ringkasan singkat langkah-langkah yang diperlukan untuk menambahkan kebijakan OAuthV2 ke endpoint proxy.
Mendapatkan token akses
Kebijakan ini dilampirkan ke jalur /accesstoken. Kebijakan ini menggunakan kebijakan OAuthV2
dengan operasi GenerateAccessToken yang ditentukan.
<OAuthV2 name="GetAccessToken">
<Operation>GenerateAccessToken</Operation>
<ExpiresIn>3600000</ExpiresIn>
<SupportedGrantTypes>
<GrantType>client_credentials</GrantType>
</SupportedGrantTypes>
<GenerateResponse/>
</OAuthV2>Panggilan API untuk mendapatkan token akses adalah POST dan menyertakan header Authorization dengan client_id + client+secret yang dienkode base64 dan parameter kueri grant_type=client_credentials. Panggilan ini juga dapat menyertakan parameter opsional untuk cakupan dan status. Contoh:
$ curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST 'https://docs-test.apigee.net/oauth/accesstoken' -d 'grant_type=client_credentials' -H 'Authorization: Basic c3FIOG9vSGV4VHo4QzAySVgT1JvNnJoZ3ExaVNyQWw6WjRsanRKZG5lQk9qUE1BVQ'
Melampirkan kebijakan verifikasi token akses
Untuk melindungi API Anda dengan keamanan OAuth 2.0, Anda harus menambahkan kebijakan OAuthV2 dengan operasi VerifyAccessToken. Kebijakan ini memeriksa apakah permintaan yang masuk memiliki token akses yang valid. Jika tokennya valid, Edge akan memproses permintaan. Jika tidak valid, Edge akan menampilkan error. Untuk langkah-langkah dasarnya, lihat Memverifikasi token akses.
<OAuthV2 async="false" continueOnError="false" enabled="true" name="VerifyAccessToken">
<DisplayName>VerifyAccessToken</DisplayName>
<ExternalAuthorization>false</ExternalAuthorization>
<Operation>VerifyAccessToken</Operation>
<SupportedGrantTypes/>
<GenerateResponse enabled="true"/>
<Tokens/>
</OAuthV2>Memanggil API terlindungi
Untuk memanggil API yang dilindungi dengan keamanan OAuth 2.0, Anda harus menampilkan token akses yang valid. Pola yang benar adalah menyertakan token di header Authorization, sebagai berikut: Perhatikan bahwa token akses juga disebut sebagai "token pembawa".
$ curl -H "Authorization: Bearer UAj2yiGAcMZGxfN2DhcUbl9v8WsR" \ http://myorg-test.apigee.net/v0/weather/forecastrss?w=12797282
Lihat juga Mengirim token akses.
Referensi tambahan
- Apigee menawarkan pelatihan online untuk developer API, termasuk kursus tentang keamanan API, yang mencakup OAuth.
- Kebijakan OAuthV2 -- Memiliki banyak contoh yang menunjukkan cara membuat permintaan ke server otorisasi dan cara mengonfigurasi kebijakan OAuthV2.