Apa sebenarnya OAuth (Open Authorization)?


201

Apa sebenarnya OAuth (Open Authorization)?

Saya telah mendapatkan beberapa informasi dari

Tetapi saya ingin belajar dan tahu lebih banyak. Saya mencari info tentang siklus hidup. Mengapa sebagian besar jejaring sosial bergantung pada protokol terbuka ini?

Apakah akan menjadi de facto dalam waktu dekat dengan berbagai teknologi (mis. ASP.NET)?

Jawaban:


327

Apa sebenarnya OAuth (Open Authorization)?

OAuth memungkinkan memberi tahu penyedia sumber daya (misalnya Facebook) bahwa pemilik sumber daya (misalnya Anda) memberikan izin kepada pihak ketiga (misalnya Aplikasi Facebook) untuk mengakses informasi mereka (misalnya daftar teman Anda).

Jika Anda membacanya dinyatakan dengan jelas, saya akan mengerti kebingungan Anda. Jadi mari kita pergi dengan contoh nyata: bergabung dengan jejaring sosial lain!

Katakanlah Anda memiliki akun GMail yang ada. Anda memutuskan untuk bergabung dengan LinkedIn. Menambahkan semua teman Anda , banyak teman secara manual melelahkan dan rawan kesalahan. Anda mungkin muak setengah jalan atau memasukkan kesalahan ketik di alamat surel mereka untuk undangan. Jadi, Anda mungkin tergoda untuk tidak membuat akun.

Menghadapi situasi ini, LinkedIn memiliki Good Idea (TM) untuk menulis sebuah program yang menambahkan daftar teman Anda secara otomatis karena komputer jauh lebih efisien dan efektif untuk tugas yang melelahkan dan rawan kesalahan. Karena bergabung dengan jaringan sekarang sangat mudah, tidak mungkin Anda menolak tawaran seperti itu, bukan?

Tanpa API untuk bertukar daftar kontak ini, Anda harus memberi LinkedIn nama pengguna dan kata sandi ke akun GMail Anda, sehingga memberi mereka terlalu banyak kekuatan .

Di sinilah OAuth masuk. Jika GMail Anda mendukung protokol OAuth, maka LinkedIn dapat meminta Anda untuk memberi otorisasi kepada mereka untuk mengakses daftar kontak GMail Anda.

OAuth memungkinkan untuk:

  1. Tingkat akses yang berbeda: read-only VS read-write. Ini memungkinkan Anda untuk memberikan akses ke daftar pengguna atau akses dua arah untuk menyinkronkan teman LinkedIn baru Anda secara otomatis ke kontak GMail Anda.
  2. Granularity akses: Anda dapat memutuskan untuk memberikan akses hanya ke informasi kontak Anda (nama pengguna, email, tanggal lahir, dll.) Atau ke seluruh daftar teman, kalender, dan apa yang tidak.
  3. Ini memungkinkan Anda untuk mengelola akses dari aplikasi penyedia sumber daya. Jika aplikasi pihak ketiga tidak menyediakan mekanisme untuk membatalkan akses, Anda akan terjebak dengan mereka yang memiliki akses ke informasi Anda. Dengan OAuth, ada ketentuan untuk mencabut akses kapan saja.

Apakah ini akan menjadi de facto (standar?) Dalam waktu dekat?

Yah, meskipun OAuth adalah langkah maju yang signifikan, itu tidak menyelesaikan masalah jika orang tidak menggunakannya dengan benar. Misalnya, jika penyedia sumber daya hanya memberikan satu tingkat akses baca-tulis ke semua sumber daya Anda sekaligus dan tidak menyediakan mekanisme untuk mengelola akses, maka tidak ada gunanya. Dengan kata lain, OAuth adalah kerangka kerja untuk menyediakan fungsionalitas otorisasi dan bukan hanya otentikasi.

Dalam praktiknya, ini sangat cocok dengan model jaringan sosial. Ini sangat populer untuk jejaring sosial yang ingin mengizinkan "plugin" pihak ketiga. Ini adalah area di mana akses ke sumber daya secara inheren diperlukan dan juga inheren tidak dapat diandalkan (yaitu Anda memiliki sedikit atau tidak ada kontrol kualitas atas aplikasi tersebut).

Saya belum melihat banyak kegunaan lain di alam liar. Maksudku, aku tidak tahu dari sebuah perusahaan nasihat keuangan online yang akan mengakses catatan bank Anda secara otomatis, meskipun bisa secara teknis digunakan seperti itu.


6
Anda membuatnya mudah dimengerti. Saya mungkin telah mengubah baris pertama menjadi sesuatu seperti ini sebagai gantinya. "OAuth memungkinkan memberi tahu penyedia sumber daya (misalnya Gmail) bahwa pemilik sumber daya (misalnya Anda pengguna gmail) memberikan izin kepada pihak ketiga (misalnya akun LinkedIn Anda) akses ke informasi mereka (mis. Daftar kontak Anda)." Apa yang Anda tulis yaitu Penyedia dan pihak ketiga 'keduanya' menjadi Facebook membingungkan. Meskipun agak memperkenalkan skenario yang menarik, yaitu Oauth juga dapat digunakan secara internal — di antara berbagai proyek perusahaan Anda. Baik? Apakah itu sebabnya Anda memperkenalkan intro yang rumit?
Sayang

Sesuai pemahaman saya, tujuan OAuth adalah untuk memberikan otorisasi terbatas waktu untuk aplikasi pihak ketiga atas nama pemilik sumber daya tanpa berbagi kredensial. Saya ingin tahu apakah saya perlu OAuth untuk menggunakan API yang dihosting di server aplikasi saya dari aplikasi seluler (tidak ada pihak ketiga yang terlibat)?
Monish Kamble

Ketika pihak tepercaya mengotorisasi saya, bukankah itu menyiratkan bahwa itu juga merupakan mekanisme otentikasi?
variabel

245

Apa itu oAuth?

OAuth hanyalah protokol otorisasi aman yang berkaitan dengan otorisasi aplikasi pihak ketiga untuk mengakses data pengguna tanpa memaparkan kata sandi mereka. misalnya. (Masuk dengan fb, gPlus, twitter di banyak situs web ..) semua berfungsi di bawah protokol ini.

Pihak yang terlibat

Protokol menjadi lebih mudah ketika Anda mengetahui pihak-pihak yang terlibat. Pada dasarnya ada tiga pihak yang terlibat: Penyedia Kebenaran, Klien dan Pemilik Kebenaran.

  • oAuth Client (Aplikasi Yang ingin mengakses kredensial Anda)
  • oAuth Provider (mis. facebook, twitter ...)
  • Pemilik (orang dengan facebook, twitter .. akun)

Bagaimana itu bekerja?

Saya menduga skenario di mana situs web (stackoverflow) perlu menambahkan login dengan fitur facebook. Dengan demikian facebook adalah Penyedia oAuth dan stackoverflow adalah oAuth Client.

  1. Langkah ini dilakukan oleh pengembang aplikasi . Pada mulanya facebook (Penyedia oAuth) tidak tahu tentang stackoverflow (oAuth Client) karena tidak ada tautan di antara mereka. Jadi langkah pertama adalah mendaftar stackoverflow dengan situs pengembang facebook . Ini dilakukan secara manual di mana pengembang perlu memberikan informasi aplikasi ke Facebook seperti nama aplikasi, situs web, logo, redirect Url (yang penting). Kemudian stackoverflow berhasil didaftarkan, mendapat ID klien, rahasia klien dll dari facebook dan aktif dengan OAUTH . masukkan deskripsi gambar di sini

    2. Sekarang ketika pengguna stackoverflow mengklik login dengan tombol fb . Stackoverflow meminta facebook dengan ClientId (fb menggunakannya untuk mengenali klien) dan redirectUrl (fb akan kembali ke url ini setelah berhasil). Oleh karena itu pengguna akan diarahkan ke halaman login facebook. Ini adalah bagian pengguna terbaik (pemilik) tidak memberikan kredensial facebook mereka ke stackoverflow.

masukkan deskripsi gambar di sini

masukkan deskripsi gambar di sini

  1. Setelah Pemilik, izinkan Stackoverflow untuk mengakses informasi . Kemudian Facebook mengalihkan kembali ke stackoverflow, bersama dengan authcode menggunakan redirectUrl yang disediakan pada langkah 2.
  2. Kemudian kontak Stackoverflow dengan facebook bersama dengan authcode yang diperoleh untuk memastikan semuanya baik-baik saja.
  3. Hanya kemudian facebook akan memberikan token akses ke stackoverflow. Kemudian token akses digunakan oleh stackoverflow untuk mengambil kembali informasi pemilik tanpa menggunakan kata sandi. Ini adalah motif keseluruhan oAuth, di mana kredensial akut tidak pernah terkena aplikasi pihak ketiga.

Untuk lebih:

Video cepat

Tautan web


yakin localhost juga url dan mengapa Anda tidak kedaluwarsa dan memposting hasilnya di sini.
Balman Rawat

2
yeah Anda dapat menggunakan Alamat IP sebagai URL pengalihan: redirect_uri = ' 127.0.0.1:4200 ' dan nama Domain OAuth harus 127.0.0.1
Samson Maben

Tetapi apakah email harus sama pada klien oAuth dan penyedia oAuth agar berfungsi?
Rowayda Khayri

penjelasan yang bagus
JayD

OAuth 2 adalah protokol Keamanan, bukan protokol Otorisasi. Jawabannya dimulai dari nada yang salah.
Rajat

13

Sederhananya OAuth adalah cara bagi aplikasi untuk mendapatkan kredensial ke informasi Anda tanpa secara langsung mendapatkan informasi login pengguna Anda ke beberapa situs web. Misalnya jika Anda menulis aplikasi di situs web Anda sendiri dan ingin menggunakan data dari akun facebook pengguna, Anda dapat menggunakan OAuth untuk mendapatkan token melalui url panggilan balik dan kemudian menggunakan token itu untuk melakukan panggilan ke API facebook untuk mendapatkan mereka gunakan data sampai token berakhir. Situs web mengandalkannya karena memungkinkan pemrogram mengakses data mereka tanpa pengguna harus secara langsung mengungkapkan informasi mereka dan menyebarkan kredensial mereka di internet, tetapi tetap memberikan tingkat perlindungan terhadap data tersebut. Apakah ini akan menjadi metode otorisasi de facto? Mungkin, telah mendapatkan banyak dukungan baru-baru ini dari Twitter, Facebook,


14
OAuth bukan, proses otentikasi, melainkan proses otorisasi.
André Caron

Saya tidak menyiratkan bahwa aplikasi tersebut memerlukan otentikasi secara langsung, tetapi pengguna mengautentikasi dengan penyedia layanan untuk mengotorisasi beberapa pihak ketiga untuk mengakses data pengguna yang saya pikir ...
ameer

Saya menambahkan ketepatan karena OpenID secara khusus ditujukan untuk otentikasi yang didelegasikan (gunakan kembali akun eksternal yang ada) dengan harapan orang berhenti membagikan kredensial saham mereka. OAuth secara khusus ditujukan untuk otorisasi (menggunakan kembali sumber daya) dengan harapan dapat memfasilitasi pertukaran informasi.
André Caron

9

Oauth jelas mendapatkan momentum dan menjadi populer di antara API perusahaan juga. Di dunia yang didorong oleh aplikasi dan data, Perusahaan semakin banyak mengekspos API ke dunia luar sejalan dengan Google, Facebook, twitter. Dengan perkembangan ini, segitiga 3 cara otentikasi akan terbentuk

1) Penyedia API - Semua perusahaan yang mengekspos aset mereka dengan API, katakan Amazon, Target dll 2) Pengembang - Orang yang membangun aplikasi seluler / lainnya melalui API ini 3) Pengguna akhir - Pengguna akhir dari layanan yang disediakan oleh - katakanlah pengguna terdaftar / tamu dari Amazon

Sekarang ini mengembangkan situasi yang berkaitan dengan keamanan - (Saya mencantumkan beberapa kompleksitas ini) 1) Anda sebagai pengguna akhir ingin memungkinkan pengembang mengakses API atas nama Anda. 2) Penyedia API harus mengotentikasi pengembang dan pengguna akhir 3) Pengguna akhir harus dapat memberikan dan mencabut izin untuk persetujuan yang mereka berikan 4) Pengembang dapat memiliki tingkat kepercayaan yang berbeda dengan penyedia API, dalam di mana tingkat izin yang diberikan padanya berbeda

Oauth adalah kerangka kerja otorisasi yang mencoba menyelesaikan masalah yang disebutkan di atas dengan cara standar. Dengan keunggulan API dan Aplikasi, masalah ini akan menjadi semakin relevan dan standar apa pun yang mencoba menyelesaikannya - baik itu yang lain atau lainnya - akan menjadi sesuatu yang harus diperhatikan sebagai penyedia / pengembang API dan bahkan pengguna akhir!


9

OAuth ( O pen Tupoksi orization) adalah standar terbuka untuk protokol akses pemberian / deligation. Ini digunakan sebagai cara bagi pengguna Internet untuk memberikan situs web atau aplikasi akses ke informasi mereka di situs web lain tetapi tanpa memberi mereka kata sandi. Itu tidak berurusan dengan otentikasi .

Atau

OAuth 2.0 adalah protokol yang memungkinkan pengguna untuk memberikan akses terbatas ke sumber daya mereka di satu situs, ke situs lain, tanpa harus mengekspos kredensial mereka.

  • Analogi 1: Banyak mobil mewah hari ini datang dengan kunci pelayan. Ini adalah kunci khusus yang Anda berikan kepada petugas parkir dan tidak seperti kunci biasa Anda, tidak akan memungkinkan mobil untuk mengemudi lebih dari satu atau dua mil. Beberapa kunci pelayan tidak akan membuka bagasi, sementara yang lain akan memblokir akses ke buku alamat ponsel Anda. Terlepas dari batasan apa yang diberlakukan oleh kunci pelayan, idenya sangat pintar. Anda memberi seseorang akses terbatas ke mobil Anda dengan kunci khusus, sambil menggunakan kunci biasa untuk membuka kunci semuanya. src dari auth0

  • Analogi 2: Asumsikan, kami ingin mengisi formulir aplikasi untuk rekening bank. Di sini Oauth berfungsi sebagai, alih-alih mengisi formulir dengan pemohon, bank dapat mengisi formulir menggunakan Adhaar atau paspor.

    Di sini tiga entitas berikut terlibat:

    1. Pemohon yaitu Pemilik
    2. Rekening Bank adalah Klien OAuth, mereka memerlukan informasi
    3. Adhaar / Passport ID adalah Penyedia OAuth

7

OAuth adalah tentang mendelegasikan Otorisasi (memilih seseorang yang dapat melakukan Otorisasi untuk Anda). Perhatikan bahwa Otentikasi dan Otorisasi adalah hal yang berbeda. OAuth adalah Otorisasi (Kontrol akses), dan jika Anda juga ingin menerapkan Otentikasi (verifikasi ID), protokol OpenID dapat digunakan di atas OAuth.

Semua perusahaan besar seperti Facebook, Google, Github, ... menggunakan jenis otentikasi / otorisasi saat ini. Sebagai contoh, saya baru saja masuk di situs web ini menggunakan akun Google saya, ini berarti Stackoverflow tidak tahu kata sandi saya, itu menerima tunjangan dari Google di mana kata sandi saya (jelas hash) disimpan. Ini memberi banyak manfaat, salah satunya adalah; Dalam waktu dekat Anda tidak perlu membuat beberapa akun di setiap situs web. Satu situs web (yang paling Anda percayai) dapat digunakan untuk masuk ke semua situs web lainnya. Jadi Anda hanya perlu mengingat satu kata sandi.


2

OAuth terjadi ketika kami mendaftar akun SO dengan tombol Facebook / Google.

  1. Aplikasi (SO) mengarahkan pengguna ke URL otorisasi penyedia. (Menampilkan halaman web yang menanyakan pengguna apakah ia ingin memberikan akses aplikasi untuk membaca dan memperbarui data mereka).
  2. Pengguna setuju untuk memberikan proses aplikasi.
  3. Penyedia layanan mengalihkan pengguna kembali ke aplikasi (SO), melewati kode otorisasi sebagai parameter.
  4. SO menukar kode untuk hibah akses.

Sumber: Penyedia layanan OAuth1


Halo, saya perlu bekerja dengan REST API jadi instal oAuth, sebenarnya saya menggunakan Magento, Di localhost, saya telah menginstal oAuth, di server langsung bagaimana saya menginstal, saya menggunakan server VPS GoDaddy, ada bantuan? @john joe
Permata

@Rathinam hai, saya ingin membantu, tetapi ini karena keahlian saya. Sangat menyesal.
John Joe

Apakah saya bisa menggunakan REST API tanpa oAuth? @ John Joe
Permata

@Rathinam ya, itu tergantung pada Anda
John Joe

1

OAuth adalah standar terbuka untuk otorisasi, yang biasanya digunakan sebagai cara bagi pengguna Internet untuk masuk ke situs web pihak ketiga menggunakan akun Microsoft, Google, Facebook atau Twitter mereka tanpa membuka kata sandi mereka.


2
Saya pikir Anda salah mengira OAuth dan OpenID
A23149577

0

OAuth adalah protokol yang digunakan dari Resource Owner (facebook, google, tweeter, microsoft live, dan sebagainya) untuk memberikan informasi yang diperlukan, atau untuk memberikan izin keberhasilan menulis ke sistem pihak ketiga (misalnya situs Anda). Kemungkinan besar tanpa protokol OAuth kredensial harus tersedia untuk sistem bagian ketiga yang akan menjadi cara komunikasi yang tidak tepat antara sistem-sistem tersebut.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.