Lewati ke konten utama

Definisi OAuth 2.0 dan OIDC 1.0

OAuth 2.0

OAuth 2.0 adalah protokol yang memungkinkan aplikasi pihak ketiga untuk mengakses data pengguna tanpa memerlukan kata sandi pengguna. Dengan OAuth 2.0, aplikasi mendapatkan Token Akses yang memberikan izin untuk mengakses data pengguna yang tersimpan di server lain (misalnya, data di akun media sosial atau layanan cloud).

Protokol ini menyederhanakan integrasi antara berbagai aplikasi, seperti web, seluler, dan aplikasi server-ke-server. OAuth 2.0 memastikan bahwa hanya aplikasi yang diotorisasi yang dapat mengakses data tertentu, dan hanya untuk durasi yang terbatas. Selain itu, jika token akses kedaluwarsa, Token Penyegaran memungkinkan aplikasi untuk mendapatkan token baru tanpa mengharuskan pengguna untuk login ulang.

Komponen Utama OAuth 2.0

  1. Klien
    Aplikasi yang meminta akses ke data atau sumber daya pengguna. Klien ini biasanya merupakan aplikasi pihak ketiga, seperti aplikasi web atau seluler.

  2. Server Sumber Daya
    Server yang menyimpan data pengguna yang ingin diakses oleh aplikasi. Server ini melayani permintaan data yang dibuat menggunakan Token Akses.

  3. Pemilik Sumber Daya
    Pengguna yang memiliki data yang disimpan di server sumber daya. Pengguna ini memberikan izin kepada aplikasi untuk mengakses datanya.

  4. Server Otorisasi
    Server yang mengeluarkan token akses setelah memverifikasi izin dari pemilik sumber daya. Server Otorisasi juga bertanggung jawab untuk mengelola alur otorisasi dan mengeluarkan Token Akses dan Token Penyegar bila diperlukan.

OpenID Connect (OIDC) 1.0

OIDC (OpenID Connect) 1.0 adalah protokol yang dibangun di atas OAuth 2.0 untuk menambahkan fitur autentikasi. Sederhananya, OIDC memungkinkan aplikasi untuk memverifikasi identitas pengguna menggunakan ID Token yang dikeluarkan oleh Penyedia OpenID (INApas).

Dengan OIDC, pengguna hanya perlu melakukan sekali login Single Sign-On untuk mengakses berbagai aplikasi, tanpa harus melakukan login ulang di setiap aplikasi. OIDC menyediakan ID Token yang berisi informasi tentang pengguna (seperti nama dan email), yang digunakan aplikasi untuk memastikan bahwa mereka adalah pengguna yang sah. Semua informasi ini dilindungi dengan tanda tangan digital untuk memastikan keaslian data.

Komponen Utama dari OpenID Connect

  1. Penyedia OpenID (OP)
    Penyedia OpenID adalah layanan yang mengautentikasi pengguna dan mengeluarkan Token ID. Dalam hal ini, INApas bertindak sebagai Penyedia OpenID, menerbitkan Token ID setelah autentikasi pengguna berhasil. OIDC memperkenalkan konsep Token ID, yang berisi klaim (data terkait pengguna) seperti identitas pengguna dan informasi autentikasi.

  2. Pengguna Akhir (End-User)
    Pengguna akhir adalah orang yang proses autentikasinya dikelola oleh Penyedia OpenID. Informasi tentang autentikasi pengguna disertakan dalam Token ID.

  3. Pihak yang Mengandalkan (Relying Party/RP)
    Relying Party adalah aplikasi klien yang bergantung pada Penyedia OpenID untuk autentikasi pengguna. Aplikasi ini menggunakan Token ID untuk memverifikasi identitas pengguna.

  4. ID Token
    Token ID adalah token yang diproduksi oleh Penyedia OpenID yang berisi klaim tentang pengguna, seperti nama, email, dan informasi lain yang relevan. Token ini digunakan oleh aplikasi untuk memverifikasi bahwa pengguna yang masuk adalah sah.

Perbedaan Utama antara OAuth 2.0 dan OIDC 1.0

AspekOAuth 2.0OIDC 1.0
Fokus UtamaOtorisasi (akses ke data pengguna)Autentikasi (memverifikasi identitas pengguna)
Token yang DikeluarkanToken Akses, Token PenyegaranToken ID, Token Akses, dan Token Penyegaran
TujuanMemberikan izin ke aplikasi untuk mengakses data penggunaMemverifikasi identitas pengguna dan memberikan informasi pengguna
Informasi yang DiberikanAkses ke sumber daya pengguna (tanpa informasi identitas pengguna)Informasi autentikasi pengguna (seperti nama dan email)
PenggunaanMengakses data dari server sumber dayaMenyediakan Single Sign-On (SSO) dan autentikasi pengguna untuk aplikasi

Dengan tabel ini, perbedaan antara OAuth 2.0 dan OpenID Connect 1.0 menjadi lebih jelas, terutama dalam hal fokus otorisasi dan autentikasi dan jenis token yang dikeluarkan.

Alur Otorisasi dan Autentikasi INApas (OAuth 2.0 & OpenID Connect 1.0)

1. Pengguna Mengklik Tombol Login:

Pengguna memulai proses login dengan mengklik tombol Login di dalam aplikasi RP, baik itu aplikasi web maupun aplikasi seluler. Hal ini memicu permintaan otorisasi ke INApas (Server Otorisasi).

2. Aplikasi RP Mengirimkan Permintaan Otorisasi ke INAPAS:

Aplikasi RP kemudian mengirimkan Permintaan Otorisasi ke INApas (Server Otorisasi) untuk meminta akses ke data pengguna. Permintaan ini mencakup parameter-parameter kunci seperti:

  • client_id: Kode atau pengenal khusus yang digunakan untuk membedakan satu aplikasi dari aplikasi lainnya.
  • redirect_uri: Alamat URL tujuan yang digunakan INApas untuk mengarahkan pengguna setelah proses autentikasi selesai.
  • scope: Menentukan izin yang diminta oleh aplikasi (misalnya, akses ke data profil pengguna).
  • response_type=code: Menunjukkan bahwa aplikasi meminta kode otorisasi.

3. INApas memberikan kode otorisasi:

Setelah pengguna berhasil masuk dan memberikan persetujuan untuk memberikan akses ke aplikasi RP, INApas memberikan kode otorisasi sebagai respons terhadap aplikasi RP. OAuth 2.0 menggunakan kode otorisasi sebagai tahap pertama dalam Alur Kode Otorisasi, yang memberikan tingkat keamanan yang lebih tinggi karena tidak secara langsung mengirim token akses.

4. Aplikasi Menukar Kode Otorisasi dengan Token

Aplikasi menggunakan kode otorisasi untuk meminta Token Akses dan Token ID ke INApas. Permintaan ini berisi:

  • client_id: Mengidentifikasi aplikasi yang meminta token.
  • client_secret: Memverifikasi identitas aplikasi (jika diperlukan).
  • code: Kode otorisasi yang diterima dari INApas.
  • redirect_uri: Harus sama dengan URL yang digunakan dalam permintaan otorisasi awal.

5. INApas Mengembalikan Token:

Jika kode otorisasi valid, INApas memberikan:

  • Token Akses: Untuk mengakses data pengguna sesuai izin.

  • (Opsional) Token Penyegaran: Untuk memperpanjang masa akses.

  • (Opsional) Token ID: Jika aplikasi meminta cakupan openid, INApas juga akan mengembalikan Token ID untuk memverifikasi identitas pengguna. Token ID ini memungkinkan aplikasi memastikan pengguna yang login adalah pengguna yang sah.

OAuth 2.0 memungkinkan aplikasi untuk mengakses data tanpa perlu mengetahui kredensial pengguna

6. Aplikasi RP Memverifikasi Token ID:

Aplikasi RP memverifikasi ID Token yang diterima menggunakan tanda tangan digital JWT untuk memastikan bahwa token tersebut dikeluarkan oleh INApas (Penyedia OpenID). OIDC memungkinkan aplikasi RP untuk memverifikasi identitas pengguna dan memastikan keaslian data pengguna sebelum memberikan akses ke aplikasi.

Standar Keamanan Kunci

  • Proof Key for Code Exchange (PKCE): Meningkatkan keamanan dengan mencegah serangan penyadapan kode otorisasi. Kami menggunakan HMAC berbasis SHA-256 untuk verifikasi PKCE.

  • JSON Web Token (JWT) Assertions: Menyediakan metode yang aman untuk memverifikasi identitas klien. Kami menggunakan algoritma Elliptic Curves P-512 yang cepat dan aman.

Rincian Kriptografi

  1. Penandatanganan:

    • Algoritma: ES512 (Algoritma Tanda Tangan Digital Kurva Elips dengan SHA-512)
  2. Enkripsi:

    • Pertukaran Kunci: ECDH-ES (Elliptic Curve Diffie-Hellman dengan kunci Statis Sementara)
    • Pembungkus Kunci: A256KW (Pembungkusan Kunci AES dengan kunci 256-bit)

Penjelasan Jenis Token yang Digunakan

Jenis TokenDeskripsi
Token AksesToken yang dikeluarkan oleh server otorisasi setelah pengguna memberikan izin untuk mengakses data mereka. Digunakan untuk membuat permintaan ke server sumber daya saat mengautentikasi aplikasi.
Token PenyegaranToken yang diterbitkan bersama dengan Token Akses, digunakan untuk mendapatkan Token Akses baru ketika token lama kedaluwarsa tanpa memerlukan pengguna untuk masuk kembali.
Token IDToken yang berisi informasi autentikasi tentang pengguna, seperti nama, email, dan klaim terkait pengguna lain, digunakan oleh aplikasi untuk memverifikasi identitas pengguna.

Sumber Daya dan Dukungan