全部产品
Search
文档中心

Identity as a Service:Ikhtisar

更新时间:Jun 28, 2025

Latar Belakang

Anda dapat mengintegrasikan aplikasi yang dikembangkan sendiri dengan Identity as a Service (IDaaS) untuk menyinkronkan organisasi dan akun IDaaS ke dalam aplikasi tersebut.

Untuk informasi lebih lanjut tentang cara menyinkronkan akun aplikasi ke IDaaS, lihat Operasi API untuk pengembangan aplikasi.

Untuk informasi lebih lanjut tentang cara mengonfigurasi sinkronisasi aplikasi, lihat Sinkronkan akun IDaaS pada aplikasi dalam Provisioning. Topik ini menjelaskan cara mengintegrasikan aplikasi dengan IDaaS untuk menerapkan sinkronisasi akun.

  • Konsistensi dependensi: Pihak terkait mungkin bergantung pada data identitas di aplikasi Anda untuk pemasaran atau verifikasi. Oleh karena itu, Anda harus segera menyinkronkan perubahan akun IDaaS. Sebagai contoh, ketika seorang karyawan baru masuk, akun dibuat di IDaaS. Untuk tetap sesuai jadwal, akun harus dibuat di aplikasi HR pada saat yang sama. Dalam hal ini, Anda dapat berlangganan ke acara Buat akun.

  • Persyaratan real-time: Aplikasi Anda harus segera merespons operasi pengguna. Sebagai contoh, setelah pengguna masuk ke sistem dan mengubah nomor ponsel mereka, nomor ponsel pengguna harus diperbarui di aplikasi Anda menggunakan acara Perbarui akun.

Mekanisme Callback Acara

Contoh-contoh di atas adalah dua skenario sederhana. Berdasarkan persyaratan yang berbeda, pengembang dapat berlangganan berbagai acara untuk memproses data sesuai kebutuhan.

IDaaS menyediakan metode yang nyaman dan aman untuk menyinkronkan perubahan IDaaS ke aplikasi. Anda dapat dengan cepat mengintegrasikan aplikasi dengan IDaaS untuk memungkinkan aplikasi menerima permintaan sinkronisasi.

Metode ini diimplementasikan dengan menggunakan mekanisme callback acara.

Di IDaaS, Anda dapat mengonfigurasi acara yang ingin Anda ikuti (seperti acara Buat akun). Ketika acara terjadi, permintaan sinkronisasi secara otomatis dikirim ke pelanggan acara menggunakan HTTP POST.

Mekanisme acara terdiri dari dua bagian berikut:

  • Berlangganan ke acara: Masuk ke Konsol IDaaS dan konfigurasikan acara IDaaS yang ingin Anda ikuti.

  • Menerima callback acara: Pengembang harus mengintegrasikan aplikasi dengan IDaaS untuk menerapkan sinkronisasi akun sesuai kebutuhan.

Berlangganan ke Acara

Setelah Anda membuat aplikasi di IDaaS, klik Provisioning untuk mengonfigurasi sinkronisasi akun.

image

Untuk informasi lebih lanjut, lihat Sinkronkan akun IDaaS pada aplikasi dalam Provisioning.

Anda dapat berlangganan aplikasi ke satu atau lebih acara. Gambar berikut menunjukkan acara yang dapat Anda ikuti.

image

Ketika acara yang dipilih terjadi, IDaaS mengirim permintaan ke aplikasi.

Menerima Callback

Ketika acara yang dipilih terjadi, IDaaS mengirim permintaan POST ke URL untuk menerima permintaan sinkronisasi yang telah dikonfigurasi.

Kode berikut memberikan contoh tentang cara mengonfigurasi parameter permintaan:

Content-Type: application/json;charset=utf-8

// Contoh body dari permintaan POST dari IDaaS. Setelah aplikasi mendapatkan parameter, ia memverifikasi tanda tangan.
{
 "event":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
}

Semua parameter dilewatkan dalam bidang event dalam format JSON Web Token (JWT), yang berisi tanda tangan. Untuk informasi lebih lanjut, lihat RFC 7515: JSON Web Signature (JWS).

Format Acara

Anda harus menggunakan alat open-source universal untuk berbagai bahasa untuk mengurai informasi JWT.

Untuk tujuan pengujian, Anda juga dapat menempelkan nilai dalam format JWT di bidang di https://jwt.io/ untuk melihat isi kontennya.

Nilai event terdiri dari dua bagian: header dan payload.

Contoh header:

{
    "kid": "KEYH1zR7XLCGcHw1hzhkCqVjnuyaAJUf6yMR",
    "typ": "JWT",
    "alg": "RS256"
}

Contoh payload:

{
  "iss":"urn:alibaba:idaas:app:event", 
  "sub":"idaas-121313", 
  "aud":"app_12131313",
  "exp":1640966400, 
  "iat":1640966400, 
  "jti": "cNetm9OD5bXqfVfdvqGMYw",
  "dataEncrypted":false,
  "cipherData":"",    
  "plainData":{
    "aliUid":1231313,  // ID akun Alibaba Cloud.
    "instanceId":"ID instance",  // ID instance.
    "eventVersion":"V1.0",  // Nomor versi acara.
    "eventData":[
      {
        "eventId":"",     // ID acara.
        "eventType":"",   // Jenis acara.
        "eventTime":121313,  // Waktu terjadinya acara.
        "bizId":"ID bisnis",  // ID bisnis. Jika bisnis adalah organisasi, nilainya adalah ID organisasi.
        "bizData":{}       // Detail data spesifik. Nilai bidang ini bervariasi menurut jenis acara. Untuk informasi lebih lanjut, lihat acara buku alamat.
      }
    ]   
  }
}

Tabel berikut menjelaskan bidang yang terkandung.

Parameter

Posisi

Tipe

Deskripsi

header

alg

header

String

Nilai tetap: RS256.

Tanda tangan RSA SHA-256 yang digunakan.

kid

header

String

ID pasangan kunci publik dan privat yang dikeluarkan oleh IDaaS.

Kunci publik kid digunakan untuk verifikasi tanda tangan.

Di IDaaS, pasangan kunci publik dan privat dapat diputar untuk sinkronisasi. Pasangan kunci publik dan privat yang disinkronkan tetap tidak berubah.

payload

iss

payload

String

Nilai tetap: urn:alibaba:idaas:app:event

Menunjukkan bahwa notifikasi acara dimulai oleh IDaaS.

sub

payload

String

ID instance IDaaS.

aud

payload

String

ID aplikasi IDaaS.

exp

payload

Long

Waktu kedaluwarsa acara. Unit: milidetik. Nilai defaultnya adalah 30 menit setelah waktu pembuatan.

Jika waktu saat ini lebih lambat dari waktu kedaluwarsa, kesalahan terjadi saat permintaan diuraikan dan aplikasi menentukan bahwa acara telah kedaluwarsa.

iat

payload

Long

Waktu pembuatan acara. Unit: milidetik. Jika waktu saat ini lebih awal dari waktu pembuatan, kesalahan terjadi saat permintaan diuraikan dan aplikasi menentukan bahwa acara tidak valid.

data_encrypted

payload

Boolean

Menunjukkan apakah data acara dienkripsi untuk transmisi.

cipher_data

payload

String

Jika enkripsi diaktifkan, bidang ini tidak kosong.

Bidang ini adalah teks terenkripsi dari data acara. Anda harus mendekripsinya untuk melihat isi konten.

plain_data

payload

Object

Jika enkripsi dinonaktifkan, bidang ini tidak kosong.

Bidang ini berisi semua data acara.

Verifikasi Tanda Tangan

Tanda tangan JWT harus diverifikasi untuk memastikan bahwa informasi acara dikeluarkan oleh IDaaS. Verifikasi tanda tangan mencegah pemalsuan permintaan.

Di halaman sinkronisasi, Anda dapat memperoleh titik akhir kunci publik untuk memverifikasi tanda tangan JWT dan sumber acara yang dikirim ke aplikasi. Kami merekomendasikan Anda menggunakan toolkit JWT open-source dari bahasa pemrograman untuk verifikasi tanda tangan.

image

Dekripsi Data (opsional)

Transmisi data sinkronisasi acara yang dienkripsi didukung. Bidang yang dienkripsi dilewatkan dalam bidang cipher_data di payload.

{
    ...
    "cipher_data": "ZePq7ckODWnL54vqZc3kTw0vF7tjvIRZjqqy/gZm9oTEt71WMufD9swlmHzZkniSqyDGQpkmMRLCXz9gzRJ4BY2RroLUPQW8ZDPSfmJKEf2m2w6wY1twoRlnHLoFCVhravsvN0afBqmxd3eK5tHd05Ze6MLOXS3fqxqH61dGAm2mwecvAFPRrKVeg6JXBYUvA2Uu6dmCOP3y938kFdhodD13O05MBIqWghq569wYvVjKMFMcnsZqmGGKXN0vRFhg+SR16sr24b1X/gQDbNqyMDICB9k3QMe09dOodwNEwvgxbf1v4PbyCRX1P9UO74nDQaWROWZFplE7qP/JMy3pBr0pxW+hJS9u/Zpvj/hvLlhBTAZkmhAKDKxlrYztqrgJbr4VOUv8mlqxWjDK4I7VZugODJMSwi1HdjXL+wlMzPMOeH8rkDFU+b5VH3dsxg3hZ64Ukd7exB62QyyeIJpfk0d57xw8UACiSsXadexQYpJPDycVdmJ7FAmIhxbJ8I6w9Kcv9U5sKybUz1YA8tONAw=="
    ...
}

Setelah Anda mengaktifkan fitur ini, Anda dapat memasukkan kunci enkripsi atau menghasilkan kunci enkripsi. Sebelum IDaaS mengirim permintaan callback acara, IDaaS menggunakan kunci ini untuk mengenkripsi semua data permintaan sebelum transmisi.

image

IDaaS menggunakan algoritma AES-256 untuk enkripsi simetris dan mengenkripsi acara dalam format JSON Web Encryption (JWE).

Aplikasi harus menggunakan kunci yang sama untuk dekripsi guna memperoleh data sinkronisasi.

Untuk informasi lebih lanjut, lihat Integrasi aplikasi untuk menerapkan sinkronisasi pengguna menggunakan Java.

Respons

Aplikasi harus mengembalikan hasil pemrosesan acara sesuai dengan spesifikasi IDaaS. IDaaS mencatat hasilnya dan memproses data berdasarkan informasi yang dikembalikan.

Respons sukses

Jika permintaan diproses, aplikasi harus mengembalikan eventId dan hasil dalam format berikut.

Bidang yang dikembalikan

Tipe data

Deskripsi

successEvents

Array

Sinkronisasi berhasil.

skippedEvents

Array

Sinkronisasi dilewati. (Contoh: Aplikasi menerima acara Hapus akun tetapi pengguna tidak ada di sistem aplikasi.)

failedEvents

Array

Sinkronisasi gagal.

retriedEvents

Array

Sinkronisasi dicoba ulang hingga lima kali.

-eventId

String

ID acara di IDaaS.

Jika bidang ini tidak dikirim atau eventId tidak valid ditransmisikan, percobaan ulang dipicu.

-eventCode

String

Kode kesalahan yang dikembalikan. IDaaS mencatat hasilnya untuk pemecahan masalah. Anda dapat menyesuaikan eventCode.

-eventMessage

String

Pesan kesalahan yang dikembalikan. IDaaS mencatat penyebab hasil untuk pemecahan masalah. Anda dapat menyesuaikan eventMessage.

Contoh respons sukses

{
    "successEvents": [
        {
            "eventId": "ID acara",
            "eventCode": "SUCCESS",
            "eventMessage": "SUCCESS"
        }
    ],
    "skippedEvents": [
        {
            "eventId": "ID acara",
            "eventCode": "Kode kesalahan yang dikembalikan",
            "eventMessage": "Pesan kesalahan yang dikembalikan"
        }
    ],
    "failedEvents": [
        {
            "eventId": "ID acara",
            "eventCode": "Kode kesalahan yang dikembalikan",
            "eventMessage": "Pesan kesalahan yang dikembalikan"
        }
    ],
    "retriedEvents": [
        {
            "eventId": "ID acara",
            "eventCode": "Kode kesalahan yang dikembalikan",
            "eventMessage": "Pesan kesalahan yang dikembalikan"
        }
    ]
}
Penting

Setelah aplikasi menerima permintaan, ia harus merespons permintaan dengan kode status HTTP 200 dalam 10 detik. Jika tidak, IDaaS menentukan bahwa sinkronisasi gagal dan mencoba mengirim ulang acara hingga lima kali dengan interval masing-masing 1 detik, 5 detik, 10 detik, 10 detik, dan 10 detik.

Respons gagal

Jika pemrosesan gagal, aplikasi harus mengembalikan kode status HTTP 403, 429, atau 500.

Parameter berikut dikembalikan jika pemrosesan gagal.

Parameter

Tipe data

Deskripsi

error

String

Kode kesalahan yang dikembalikan.

error_description

String

Pesan kesalahan yang dikembalikan.

Secara umum, kode kesalahan berikut dikembalikan.

Kode kesalahan

Kode status HTTP

Deskripsi

invalid_token

403

Token JWS tidak valid.

too_many_request

429

Jika bisnis sibuk dan mengembalikan kode kesalahan ini, IDaaS akan menggunakan kebijakan throttling.

internal_error

500

Menunjukkan kesalahan internal. IDaaS secara otomatis mencoba ulang sinkronisasi.

Contoh respons kesalahan

{
     "error": "invalid_token",
     "error_description": "Token JWS tidak valid."
}