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.
Jawaban:
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:
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.
OpenID Connect adalah kerangka kerja di atas OAuth 2.0 tempat aplikasi pihak ketiga bisa mendapatkan informasi identitas pengguna yang dikelola oleh layanan.
(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
sumber