Menggunakan SAML dengan Edge Management API

Edge for Private Cloud v. 4.17.09

Autentikasi Dasar adalah salah satu cara untuk mengautentikasi saat melakukan panggilan ke API pengelolaan Edge. Misalnya, Anda dapat membuat permintaan cURL berikut ke Edge management API untuk mengakses informasi tentang organisasi Anda:

curl -u userName:pWord https://ms_IP_DNS:8080/v1/organizations/orgName

Dalam contoh ini, Anda menggunakan opsi cURL -u untuk meneruskan kredensial Basic Auth. Atau, Anda dapat meneruskan token OAuth2 di header Bearer untuk melakukan panggilan API pengelolaan Edge. Contoh:

curl -H "Authorization: Bearer <access_token>" https://ms_IP_DNS:8080/v1/organizations/orgName

Setelah mengaktifkan SAML, Anda dapat menonaktifkan Basic Auth secara opsional. Jika Anda menonaktifkan Basic Auth, semua skrip (skrip Maven, skrip shell, apigeetool, dll.) yang mengandalkan panggilan API pengelolaan Edge yang mendukung Basic Auth tidak akan berfungsi lagi. Anda harus mengupdate panggilan API dan skrip yang menggunakan Autentikasi Dasar untuk meneruskan token akses OAuth2 di header Bearer.

Menggunakan get_token untuk mendapatkan dan memuat ulang token

Utilitas get_token menukar kredensial Auth Dasar Anda dan kode sandi untuk akses OAuth2 dan token refresh. Utilitas get_token menerima kredensial Anda dan mencetak token akses yang valid. Jika dapat dimuat ulang, token akan me-refresh dan mencetaknya. Jika masa berlaku token refresh berakhir, token akan meminta kredensial pengguna.

Utilitas get_token menyimpan token di disk, siap digunakan saat diperlukan. Kode ini juga mencetak token akses yang valid ke stdout. Dari sana, Anda dapat menggunakan Postman atau menyematkannya dalam variabel lingkungan untuk digunakan di curl.

Prosedur berikut menjelaskan cara menggunakan get_token untuk mendapatkan token akses OAuth2 guna melakukan panggilan API pengelolaan Edge:

  1. Download paket sso-cli:
    curl http://edge_sso_IP_DNS:9099/resources/scripts/sso-cli/ssocli-bundle.zip -o "ssocli-bundle.zip"

    dengan edge_sso_IP_DNS adalah alamat IP dari nama DNS mesin yang menghosting modul Edge SSO. Jika Anda mengonfigurasi TLS di Edge SSO, gunakan https dan nomor port TLS yang benar.

  2. Ekstrak paket ssocli-bundle.zip:
    unzip ssocli-bundle.zip
  3. Instal get_token di /usr/local/bin:
    ./install

    Gunakan opsi -b untuk menentukan lokasi lain:

    ./install -b path
  4. Tetapkan variabel lingkungan SSO_LOGIN_URL ke URL login Anda, dalam bentuk:
    export SSO_LOGIN_URL="http://edge_sso_IP_DNS:9099"

    dengan edge_sso_IP_DNS adalah alamat IP nama DNS mesin yang menghosting modul SSO Edge. Jika Anda mengonfigurasi TLS di Edge SSO, gunakan https dan nomor port TLS yang benar.

  5. Di browser, buka URL berikut untuk mendapatkan kode sandi sekali pakai:
    http://edge_sso_IP_DNS:9099/passcode

    Jika Anda mengonfigurasi TLS di SSO Edge, gunakan https dan nomor port TLS yang benar.

    URL ini menampilkan kode sandi sekali pakai yang tetap valid hingga Anda memuat ulang URL tersebut untuk mendapatkan kode sandi baru, atau Anda menggunakan kode sandi dengan get_token untuk membuat token akses.

  6. Panggil get_token untuk mendapatkan token akses OAuth2:
    get_token -u emailAddress

    dengan emailAddress adalah alamat email pengguna Edge. Anda akan diminta untuk memasukkan kunci sandi sekali pakai yang Anda dapatkan di langkah 3:

    One Time Code ( Get one at https://edge_sso_IP.com/passcode )
          Enter the passcode if SAML is enabled or press ENTER:

    Masukkan kode sandi. Utilitas get_token mendapatkan token akses OAuth2, mencetaknya ke layar, dan menulisnya serta token refresh ke ~/.sso-cli.

    Anda dapat memasukkan kode sandi di command line menggunakan perintah get_token dalam bentuk:

    get_token -u emailAddress -p passcode

  7. Teruskan token akses ke panggilan API pengelolaan Edge sebagai header Bearer:
    curl -H "Authorization: Bearer access_token"
    https://ms_IP:8080/v1/organizations/orgName

    Setelah memperoleh token akses baru untuk pertama kalinya, Anda dapat memperoleh token akses tersebut dan meneruskannya ke panggilan API dalam satu perintah, seperti yang ditunjukkan di bawah ini:

    header=`get_token` &&
    curl -H "Authorization: Bearer $header"
    https://ms_IP:8080/v1/o/orgName

    Dengan bentuk perintah ini, jika masa berlaku token akses telah berakhir, token akan otomatis diperbarui hingga masa berlaku token pembaruan berakhir.

Setelah masa berlaku token refresh berakhir, get_token akan meminta kode sandi baru. Anda harus membuka URL yang ditampilkan di atas pada Langkah 3 dan membuat kode sandi baru sebelum dapat membuat token akses OAuth baru

Menggunakan API pengelolaan untuk mendapatkan dan memuat ulang token

Menggunakan keamanan OAuth2 dengan API pengelolaan Apigee Edge berisi petunjuk yang menunjukkan cara menggunakan API pengelolaan Edge untuk mendapatkan dan memuat ulang token. Anda juga dapat menggunakan panggilan Edge API untuk token yang dihasilkan dari pernyataan SAML.

Satu-satunya perbedaan antara panggilan API yang didokumentasikan dalam Menggunakan keamanan OAuth2 dengan API pengelolaan Apigee Edge adalah URL panggilan harus mereferensikan nama zona Anda. Selain itu, untuk membuat token akses awal, Anda harus menyertakan kode sandi, seperti yang ditunjukkan pada langkah 3 prosedur di atas.

Misalnya, gunakan panggilan API berikut untuk membuat token akses dan refresh awal:

curl -H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" /
  -H "accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token -s /
  -d 'grant_type=password&response_type=token&passcode=passcode'

Untuk otorisasi, teruskan kredensial klien OAuth2 yang dicadangkan di header Authorization. Panggilan akan mencetak token akses dan token pembaruan ke layar.

Untuk memperbarui token akses nanti, gunakan panggilan berikut yang menyertakan token refresh:

curl -H "Content-Type:application/x-www-form-urlencoded;charset=utf-8" /
  -H "Accept: application/json;charset=utf-8" /
  -H "Authorization: Basic ZWRnZWNsaTplZGdlY2xpc2VjcmV0" -X POST /
  https://edge_sso_IP_DNS:9099/oauth/token /
  -d 'grant_type=refresh_token&refresh_token=refreshToken'