SEJARAH OAUTH: DARI KATA SANDI KE STANDAR GLOBAL

Anda melihatnya setiap hari. Anda mengeklik "Login with Google" atau "Login with GitHub." Anda tidak mengetikkan kata sandi. Anda langsung masuk ke situs tersebut.

Ini berhasil karena OAuth. Ini adalah standar global untuk keamanan. Namun, tidak dimulai seperti ini. Ia berevolusi untuk menyelesaikan masalah besar.

Masalah dengan Kata Sandi

Pada masa awal, Anda membuat kata sandi baru untuk setiap situs web. Hal ini menyebabkan tiga masalah besar:

  • Orang-orang menggunakan kata sandi yang sama di mana-mana. Jika satu situs bocor, setiap akun terancam.
  • Orang-orang lupa kata sandi. Mereka menghabiskan lebih banyak waktu mengeklik "forgot password" daripada menggunakan web.
  • Situs web melihat kata sandi mentah Anda. Jika sebuah situs diretas, kata sandi Anda hilang.

Evolusi Keamanan

  1. Basic Auth: Anda mengirimkan nama pengguna dan kata sandi Anda pada setiap permintaan. Jika Anda tidak menggunakan HTTPS, peretas dapat melihat segalanya.

  2. Session Cookies: Anda masuk sekali dan mendapatkan ID sesi. Ini lebih baik, tetapi cookie dapat dicuri melalui serangan seperti XSS atau CSRF. Selain itu, satu situs tidak dapat menggunakan login Anda untuk berkomunikasi dengan situs lain.

  3. API Keys: Anda memberikan kunci khusus kepada sebuah situs web. Ini lebih baik karena Anda tidak mengirimkan kata sandi Anda. Namun, API keys sering kali memiliki kekuasaan yang terlalu besar. Jika Anda memberikan API key ke sebuah aplikasi, aplikasi tersebut mungkin memiliki wewenang untuk membaca email, mengirim pesan, dan menghapus akun Anda. Ini seperti memberikan kunci mobil Anda kepada valet hotel, tetapi kunci tersebut juga bisa membuka rumah Anda.

Solusi OAuth: Kunci Valet

OAuth mengubah segalanya. Alih-alih memberikan kata sandi, Anda memberikan sebuah "token." Anggaplah itu sebagai kunci valet. Kunci valet memungkinkan pengemudi memarkir mobil Anda, tetapi tidak membiarkan mereka membuka bagasi atau mengakses rumah Anda.

Cara Kerja OAuth dalam Praktik:

  • Anda ingin menggunakan Canva dan mengambil foto dari Google.
  • Canva meminta izin kepada Google.
  • Google bertanya kepada Anda: "Dapatkah Canva melihat foto Anda?"
  • Anda menjawab: "Ya, tapi hanya untuk melihat. Jangan biarkan mereka menghapus apa pun."
  • Google memberikan token khusus kepada Canva.

Canva tidak pernah melihat kata sandi Google Anda. Bahkan jika peretas mencuri token tersebut, mereka hanya dapat melihat foto untuk waktu yang singkat. Mereka tidak dapat mengubah kata sandi atau memindahkan uang Anda.

Keamanan Modern: PKCE

Aplikasi seluler dan aplikasi web memiliki kelemahan. Mereka tidak dapat menyembunyikan rahasia dengan baik. Untuk mengatasinya, kita menggunakan PKCE (Proof Key for Code Exchange).

Ini bekerja seperti sistem reservasi:

  • Aplikasi membuat kode rahasia (the verifier).
  • Aplikasi mengirimkan versi hash dari kode tersebut (the challenge) ke Google.
  • Saat aplikasi meminta token, ia mengirimkan kode rahasia yang asli.
  • Google memeriksa apakah kode tersebut cocok dengan challenge.

Jika cocok, Google tahu bahwa itu adalah aplikasi yang sama. Jika tidak cocok, Google memblokir permintaan tersebut. Ini menghentikan peretas dari mencuri kode otorisasi Anda.

Roadmap OAuth

  • 2007 (OAuth 1.0): Sangat kompleks dan menggunakan matematika berat.
  • 2012 (OAuth 2.0): Lebih cepat dan lebih mudah. Menggunakan token dan memerlukan HTTPS.
  • 2016 (OAuth 2.0 + PKCE): Menambahkan keamanan untuk aplikasi seluler dan web modern.
  • 2023 (OAuth 2.1): Standar emas baru. Menghapus metode lama yang tidak aman.

Pelajaran Inti: Jangan pernah memberikan kata sandi Anda ke aplikasi lain. Berikan mereka tiket terbatas yang memiliki masa kedaluwarsa. Anda tetap memegang kendali.

Sumber: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4