Otorisasi OAuth vs Autentikasi

90

Terminologi OAuth telah lama mengganggu saya. Apakah OAuth Authorization seperti yang disarankan beberapa orang atau itu Autentikasi?

Perbaiki saya jika saya salah, tetapi saya selalu membaca Otorisasi sebagai tindakan yang mengizinkan seseorang mengakses sumber daya, namun OAuth tampaknya tidak memiliki penerapan apa pun yang benar-benar memungkinkan akses ke pengguna ke sumber daya tertentu. Semua implementasi OAuth yang dibicarakan adalah memberikan token kepada pengguna (ditandatangani dan terkadang dienkripsi). Token ini kemudian diteruskan dengan setiap panggilan ke titik akhir layanan back-end yang validitasnya diperiksa, sekali lagi bukan masalah OAuth.

Apakah Autentikasi OAuth (setiap artikel mengatakan tidak) yang saya anggap mengharuskan pengguna untuk memberikan kredensial yang pada gilirannya membuktikan bahwa pengguna harus / seharusnya tidak memiliki akses?

Jadi tampaknya OAuth bukanlah Autentikasi NOR Otorisasi karena ini harus dilakukan oleh proses lain. Jadi apa sih itu? Apakah ini proses untuk mengkomunikasikan token? Apakah kata halus itu benar-benar tidak memiliki arti khusus?

Sulit untuk mengajukan pertanyaan tentang subjek ini tanpa terdengar teka-teki dan takhayul (hantu dan goblin), jadi saya berharap menjawab pertanyaan ini juga tidak akan menjadi hal yang sederhana. Masuk dengan resiko Anda sendiri.

edgarhsanchez
sumber
Saya juga menemukan jawaban ini bermanfaat: security.stackexchange.com/questions/44611/…
antak
OAuth 2.0 adalah protokol keamanan. Detail: stackoverflow.com/a/54304326/3623172
Rajat

Jawaban:

153

OAuth adalah spesifikasi untuk otorisasi

OAuth 2.0 adalah spesifikasi untuk otorisasi, tetapi BUKAN untuk otentikasi. RFC 6749, 3.1. Otorisasi Endpoint secara eksplisit mengatakan sebagai berikut:

Titik akhir otorisasi digunakan untuk berinteraksi dengan pemilik sumber daya dan mendapatkan hibah otorisasi. Server otorisasi HARUS terlebih dahulu memverifikasi identitas pemilik sumber daya. Cara di mana server otorisasi mengotentikasi pemilik sumber daya (misalnya, nama pengguna dan kata sandi login, cookie sesi) berada di luar cakupan spesifikasi ini .


Otentikasi OAuth?

Otentikasi menangani informasi tentang "siapa seseorang". Otorisasi menangani informasi tentang "siapa yang memberikan izin apa kepada siapa". Alur otorisasi berisi otentikasi sebagai langkah pertamanya. Itu sebabnya orang sering bingung.

Ada banyak pustaka dan layanan yang menggunakan OAuth 2.0 untuk autentikasi. Ini sering disebut "login sosial" dan itu membuat orang lebih bingung. Jika Anda melihat "otentikasi OAuth" (bukan "otorisasi OAuth"), itu adalah solusi yang menggunakan OAuth untuk otentikasi.


OpenID Connect

OpenID 1.0 dan OpenID 2.0 adalah spesifikasi lama untuk otentikasi. Mereka yang membuat spesifikasi mengharapkan orang menggunakan OpenID untuk otentikasi. Namun, beberapa orang mulai menggunakan OAuth 2.0 untuk autentikasi (bukan untuk otorisasi) dan autentikasi OAuth menjadi populer dengan cepat.

Dari sudut pandang orang-orang OpenID, autentikasi berdasarkan OAuth tidak cukup aman, tetapi mereka harus mengakui bahwa orang lebih suka autentikasi OAuth. Akibatnya, orang-orang OpenID memutuskan untuk menentukan spesifikasi baru, OpenID Connect , di atas OAuth 2.0.

Ya, ini membuat orang semakin bingung.


Definisi satu kalimat dari OAuth 2.0 dan OpenID Connect

OAuth 2.0 adalah kerangka kerja tempat pengguna layanan dapat mengizinkan aplikasi pihak ketiga untuk mengakses datanya yang dihosting di layanan tanpa mengungkapkan kredensial (ID & sandi) ke aplikasi tersebut.

masukkan deskripsi gambar di sini

OpenID Connect adalah kerangka kerja di atas OAuth 2.0 tempat aplikasi pihak ketiga bisa mendapatkan informasi identitas pengguna yang dikelola oleh layanan.

masukkan deskripsi gambar di sini

(Maaf, definisi ini adalah kutipan dari halaman ikhtisar perusahaan saya)


Definisi dari sudut pandang pelaksana

Otentikasi adalah proses untuk menentukan subjek (= pengidentifikasi unik) dari pengguna akhir. Ada banyak cara untuk menentukan subjeknya. ID & kata sandi, sidik jari, pengenalan iris, dll.

Otorisasi adalah proses untuk mengasosiasikan subjek dengan izin yang diminta dan aplikasi klien yang meminta izin. Token akses mewakili asosiasi.


Lihat juga

  1. Implementor Full-Scratch OAuth dan OpenID Connect Talks About Findings
  2. Diagram dan Film Semua Aliran OAuth 2.0
  3. Diagram dari Semua Aliran OpenID Connect
  4. Panduan Paling Sederhana Untuk OAuth 2.0
Takahiko Kawasaki
sumber
13
Bagi mereka yang bertanya-tanya mengapa otentikasi berdasarkan OAuth tidak cukup aman , saya berasumsi bahwa kesalahan umum ini adalah alasannya .
antak
4
"Alur otorisasi berisi otentikasi sebagai langkah pertamanya. Itulah alasan orang sering bingung." Emas.
Sully
1
Satu-satunya perbedaan yang dapat saya lihat antara kedua diagram tersebut adalah bahwa yang pertama berisi "data pengguna" dan yang kedua berisi "identitas pengguna", jadi ya ini membingungkan.
Joel_Blum