OpenID vs OAuth

Zhihuang Lin

Zhihuang Lin

July 3, 2024

Technology

Untuk memastikan keamanan informasi pengguna dan memungkinkan aplikasi pihak ketiga mengakses sumber daya yang dibatasi, dua teknologi utama telah muncul: OpenID Connect dan OAuth. Meskipun kedua teknologi ini sering dibahas bersama, mereka pada dasarnya berbeda dalam posisi fungsional dan tujuan intinya.

Secara spesifik, OAuth berfokus pada pembangunan kerangka kerja otorisasi, dengan tujuan utamanya adalah memberikan izin kepada aplikasi pihak ketiga untuk mengakses sumber daya tertentu, tanpa melibatkan verifikasi langsung terhadap identitas pengguna. Sebaliknya, OpenID Connect diposisikan sebagai layanan autentikasi identitas, mengisi celah yang dimiliki OAuth dalam domain pengenalan identitas, dan memastikan keaslian dan keandalan identitas pengguna.

Dalam blog ini, kita akan mendalami esensi, mekanisme operasional, skenario aplikasi khas, serta hubungan yang halus namun erat antara OpenID Connect dan OAuth.

Apa Itu OpenID Connect?

OpenID Connect (OIDC) adalah protokol autentikasi yang berbasis pada kerangka kerja OAuth 2.0, yang memperluas fungsionalitas OAuth dengan memperkenalkan konsep ID token. OIDC tidak hanya memungkinkan pengguna memberikan otorisasi kepada aplikasi pihak ketiga untuk mengakses sumber daya mereka, tetapi juga menyediakan verifikasi terhadap informasi identitas pengguna, memungkinkan akses aman ke berbagai layanan menggunakan satu kredensial login.

Dibandingkan dengan OAuth 2.0, perbedaan inti dari OIDC adalah penambahan lapisan autentikasi, sementara OAuth 2.0 terutama berfokus pada otorisasi, memungkinkan pengguna mengontrol izin akses aplikasi pihak ketiga terhadap sumber daya mereka, tanpa melibatkan verifikasi spesifik terhadap identitas pengguna.

Proses autentikasi OpenID Connect:

  1. Mengakses aplikasi: Ketika pengguna ingin menggunakan suatu aplikasi atau layanan, jika aplikasi tersebut perlu memverifikasi identitas pengguna, pengguna akan diarahkan ke penyedia layanan autentikasi identitas, yaitu OpenID Connect provider (OP) untuk login.

  2. Login pengguna: Pengguna memasukkan nama pengguna dan kata sandi (atau melalui mekanisme autentikasi lain yang didukung oleh OP) pada antarmuka login OP. Setelah pengguna berhasil login, penyedia OpenID Connect akan mengonfirmasi identitas pengguna.

  3. Penerbitan ID token: Setelah mengonfirmasi identitas pengguna, penyedia OpenID Connect akan menghasilkan token khusus yang disebut ID token. Token ini berisi informasi identitas pengguna, seperti nama pengguna, alamat email, dan data penting lainnya, memastikan representasi dan transmisi digital identitas pengguna.

  4. Penggunaan ID token: Setelah mendapatkan ID token, pengguna dapat menunjukkannya kepada aplikasi yang sebelumnya ingin mereka akses. Aplikasi kemudian akan mengaktifkan mekanisme verifikasi untuk memeriksa token dan memastikan bahwa token tersebut diterbitkan oleh penyedia OpenID Connect yang terpercaya dan belum kedaluwarsa.

  5. Mengakses aplikasi: Setelah aplikasi memverifikasi validitas ID token, aplikasi akan mengizinkan pengguna mengakses sumber daya atau layanan yang dilindungi. Dengan cara ini, pengguna tidak perlu mendaftar dan login ke setiap aplikasi secara terpisah, tetapi dapat menggunakan ID token yang diterbitkan oleh penyedia OpenID Connect.

  6. Jaminan keamanan: OpenID Connect menggunakan teknologi JSON Web Token (JWT) yang canggih untuk menghasilkan dan memverifikasi token, secara efektif mengurangi risiko pemalsuan dan pencurian data. Selain itu, OpenID Connect juga secara fleksibel mendukung berbagai mode autentikasi dan otorisasi, seperti mode kode otorisasi, mode implisit, dan mode hibrida, untuk menyesuaikan dengan persyaratan keamanan dari berbagai skenario.

Apa Itu OAuth?

Secara singkat, OAuth adalah protokol yang memungkinkan aplikasi pihak ketiga mengakses sumber daya sensitif yang disimpan pengguna (seperti perpustakaan foto, daftar kontak, dll.) pada layanan lain, tanpa mengakses langsung kredensial login pengguna (nama pengguna dan kata sandi). Mekanisme ini lebih cenderung ke arah "otorisasi" daripada "autentikasi".

Sebagai contoh, jika Anda ingin menggunakan akun Google untuk login ke aplikasi berita, aplikasi tersebut dapat menggunakan OAuth untuk meminta informasi publik Anda (seperti avatar dan nama panggilan) dari akun Google Anda, tanpa memerlukan Anda untuk langsung memberikan nama pengguna dan kata sandi akun Google kepada aplikasi berita.

Proses otorisasi OAuth:

  1. Permintaan otorisasi pengguna: Misalkan Anda menggunakan aplikasi sosial yang ingin mengakses informasi dari akun Anda di jejaring sosial lain. Namun, informasi ini dilindungi, sehingga diperlukan otorisasi.

  2. Pengalihan ke server otorisasi: Aplikasi pihak ketiga akan mengalihkan permintaan Anda ke halaman pada server otorisasi, yang biasanya akan meminta Anda untuk login ke layanan yang ingin Anda otorisasi.

  3. Login dan otorisasi pengguna: Pada halaman server otorisasi, Anda perlu login dengan akun Anda. Setelah login, halaman akan menanyakan apakah Anda setuju untuk membiarkan aplikasi pihak ketiga mengakses informasi Anda.

  4. Server otorisasi menerbitkan token akses: Jika Anda setuju, server otorisasi akan menghasilkan "tiket masuk" khusus yang disebut token akses. Token ini seperti tiket masuk sementara yang memungkinkan aplikasi pihak ketiga mengakses informasi Anda untuk jangka waktu tertentu.

  5. Aplikasi pihak ketiga menggunakan token akses: Setelah aplikasi pihak ketiga mendapatkan token akses, aplikasi dapat menggunakan token ini untuk meminta informasi Anda untuk jangka waktu tertentu. Setiap kali membuat permintaan, aplikasi perlu menunjukkan token ini untuk membuktikan bahwa aplikasi telah diotorisasi oleh Anda.

  6. Server otorisasi memverifikasi token dan mengembalikan sumber daya: Ketika aplikasi pihak ketiga menunjukkan token akses ke server otorisasi yang menyimpan informasi Anda, server otorisasi akan memeriksa apakah token tersebut valid. Jika valid, server akan mengizinkan aplikasi pihak ketiga mengakses informasi yang sesuai berdasarkan izin token.

Dengan mengadopsi pendekatan OAuth, tidak hanya keamanan akun Anda sangat ditingkatkan, karena menghilangkan kebutuhan untuk langsung mengungkapkan nama pengguna dan kata sandi Anda kepada aplikasi pihak ketiga, tetapi juga menyediakan mekanisme otorisasi yang fleksibel, memungkinkan Anda untuk secara independen memutuskan aplikasi mana yang dapat mengakses informasi Anda, sehingga mencapai kontrol yang tepat atas aliran informasi pribadi Anda.

Perbedaan dan Hubungan antara OpenID Connect dan OAuth

Perbedaan dan hubungan antara OpenID Connect dan OAuth sangat jelas dalam aplikasi praktis. Misalkan ada situs web hewan peliharaan online bernama "Pet Paradise", di mana pelanggan dapat membeli perlengkapan hewan peliharaan, dan toko hewan peliharaan juga menyediakan aplikasi pelacakan kesehatan hewan peliharaan di mana pelanggan dapat mencatat data kesehatan hewan peliharaan mereka, seperti berat badan, diet, dan status vaksinasi.

Aplikasi OpenID Connect dalam kasus penggunaan ini:

  1. Autentikasi: Ketika pelanggan pertama kali mengunjungi situs web "Pet Paradise" atau mengunduh dan menggunakan aplikasi pelacakan kesehatan hewan peliharaan, mereka perlu mendaftar dan login. Untuk memberikan pengalaman login yang nyaman, toko hewan peliharaan memutuskan untuk menggunakan OpenID Connect untuk mengimplementasikan single sign-on (SSO).

  2. ID Token: Pelanggan dapat menggunakan kredensial dari layanan lain yang mendukung OpenID Connect (seperti akun media sosial) untuk login. Setelah login berhasil, penyedia OpenID Connect akan menerbitkan ID token kepada pelanggan. Token ini berisi informasi identitas pelanggan dan dienkripsi serta ditandatangani.

  3. Autentikasi lintas layanan: Jika pelanggan kemudian mengunjungi layanan lain dari toko hewan peliharaan (misalnya, dari situs web ke aplikasi), mereka dapat langsung menggunakan ID token yang sebelumnya diperoleh untuk autentikasi, tanpa harus memasukkan kembali nama pengguna dan kata sandi. Ini memungkinkan pelanggan untuk beralih dengan mulus antara layanan yang berbeda.

Aplikasi OAuth dalam kasus penggunaan ini:

  1. Otorisasi Aplikasi Pihak Ketiga: Misalkan "Pet Paradise" ingin berkolaborasi dengan aplikasi pihak ketiga bernama "Pet Diary" dan memungkinkan pelanggan untuk menyinkronkan catatan pembelian perlengkapan hewan peliharaan dan data kesehatan hewan peliharaan dari "Pet Paradise" ke "Pet Diary".

  2. Token Akses: Untuk mencapai fungsi ini, "Pet Paradise" akan menggunakan OAuth untuk mengotorisasi aplikasi "Pet Diary" mengakses data pelanggan. Setelah pelanggan menyetujui otorisasi di situs web "Pet Paradise", token akses akan dihasilkan melalui alur OAuth, yang memungkinkan aplikasi "Pet Diary" mengakses data spesifik pelanggan di "Pet Paradise".

  3. Melindungi Data Pengguna: Melalui OAuth, kredensial login pelanggan (nama pengguna dan kata sandi) tidak akan langsung terpapar ke aplikasi "Pet Diary", tetapi akan dibagikan secara aman melalui token akses. Dengan cara ini, bahkan jika aplikasi "Pet Diary" diserang, penyerang tidak dapat langsung mendapatkan kredensial login pelanggan.

Ringkasan

Secara ringkas, perbedaan dan asosiasi antara OAuth dan OpenID Connect dapat disimpulkan sebagai berikut.

  1. Dasar dan Ekstensi:

    • OAuth adalah kerangka kerja otorisasi yang memungkinkan aplikasi pihak ketiga mendapatkan izin akses terbatas tanpa menggunakan nama pengguna dan kata sandi pengguna.
    • OpenID Connect, di sisi lain, dibangun di atas dasar OAuth 2.0 dan memperluas fungsinya dengan menambahkan lapisan autentikasi.
  2. Token dan Autentikasi:

    • Dalam OAuth, fokus utama adalah pada otorisasi, yaitu memungkinkan aplikasi mengakses sumber daya pengguna, sementara OpenID Connect lebih berfokus pada autentikasi, yaitu mengonfirmasi identitas pengguna.
    • OpenID Connect memperkenalkan konsep ID token, yang merupakan JSON Web Token (JWT) yang berisi informasi identitas pengguna. Token ini tidak hanya membuktikan identitas pengguna tetapi juga dapat mencakup informasi profil pribadi pengguna.
  3. Kolaborasi:

    • Ketika aplikasi perlu memverifikasi identitas pengguna dan mengakses sumber daya pengguna, OpenID Connect dan OAuth dapat bekerja sama.
    • Pengguna pertama-tama mengautentikasi identitas mereka melalui OpenID Connect, mendapatkan ID token, dan kemudian aplikasi dapat menggunakan token ini dan alur OAuth untuk mendapatkan izin mengakses sumber daya pengguna.

Secara keseluruhan, OpenID Connect dan OAuth adalah dua protokol autentikasi dan otorisasi identitas yang saling melengkapi, yang bersama-sama menyediakan solusi autentikasi dan otorisasi yang aman, fleksibel, dan ramah pengguna untuk aplikasi web dan seluler modern.

Tags: