GNAP: OAuth generasi seterusnya

Tahun itu adalah tahun 2012, dan protokol keselamatan yang disemak semula yang disebut OAuth 2 menyapu web, yang membolehkan pengguna menggunakan penyedia keselamatan untuk masuk dengan mudah ke laman web. Banyak sistem masuk tunggal, dari AWS's Cognito hingga Okta, menerapkan OAuth. OAuth adalah yang membolehkan anda "mengesahkan dengan Google" atau penyedia lain ke laman web atau aplikasi yang sama sekali berbeza.

Ia berfungsi seperti festival bir. Anda pergi ke meja dan mengesahkan dengan ID anda (dan sejumlah wang), dan mereka memberi anda token. Dari sana, anda pergi ke setiap khemah bir dan menukar token untuk bir. Pembuat minuman individu tidak perlu memeriksa ID anda atau bertanya sama ada anda membayar. Mereka hanya mengambil token dan memberi anda bir. OAuth berfungsi dengan cara yang sama, tetapi dengan laman web dan bukannya bir.

Malangnya, OAuth adalah festival bir terbaik yang ditawarkan oleh 2020.

Saya bercakap dengan Dan Moore dari FusionAuth mengenai OAuth dan cadangan penggantian yang disebut GNAP — yang kemungkinan diucapkan tanpa G sebagai "tidur siang". Pengucapan itu meluaskan idea bahawa keselamatan adalah bidang yang sangat menarik. GNAP menangani beberapa batasan OAuth dan menambahnya dengan ciri baru.

Mengapa menggantikan, atau lebih tepatnya, menambah OAuth? OAuth direka di sekitar penyemak imbas. Ini menganggap bahawa pencetus yang membuat permintaan dapat menangani pengalihan HTTP. Fokus penyemak imbas web ini adalah batu sandungan untuk aplikasi mudah alih atau apa-apa "perkara" di "Internet Perkara." Selain itu, pihak OAuth seperti tahun 2007 dan menghendaki anda menghantar parameter borang dan bukannya JSON.

Spesifikasi OAuth tidak jelas di beberapa tempat, dan dunia berubah sejak 2012. Terdapat banyak RFC dan BCP, pada dasarnya spesifikasi tambahan yang harus anda laksanakan untuk lebih banyak kemampuan, keselamatan yang lebih baik, dan keserasian umum. Usaha terpisah yang disebut OAuth 2.1 berharap dapat meruntuhkan beberapa addon ini menjadi spesifikasi tunggal yang lebih koheren. Untuk beberapa motivasi untuk OAuth 2.1, lihat Lee McGovern dari pos Okta "Berapa Banyak RFC yang Diperlukan untuk Mengubah Bola Lampu." OAuth 2.1, tidak seperti GNAP, hanyalah pelepasan tambahan tanpa perubahan ketara baru selain menggabungkan timbunan spesifikasi menjadi satu spesifikasi.

Spesifikasi GNAP masih di peringkat awal. Pengarang GNAP merancang untuk melangkah lebih jauh daripada OAuth 2.1 dan mengubah sifat protokol itu sendiri. Daripada menggunakan parameter HTTP, anda boleh menggunakan JSON. Titik akhir aplikasi dapat ditemui. Anda tidak perlu menyokong pengalihan (atau pelbagai peretasan di sekitarnya). Moore merujuk kepada perubahan ini di bawah istilah yang menggembirakan, "ergonomi pemaju."

Matlamat utama GNAP adalah pemisahan siapa yang meminta sumber daya (RQ) dan siapa yang memiliki sumber (RO).

IETF

GNAP juga mencadangkan untuk menyokong ciri keselamatan baru seperti:

  • Pelancaran URL Asinkron dan Aplikasi. Ini adalah jalan pengesahan yang berbeza yang membolehkan klien mengesahkan tanpa hala tuju. GNAP juga membolehkan aplikasi mengesahkan ke sumber pihak ketiga yang mana pelayan sumber dan pelayan kebenaran tidak mempunyai akses langsung.
  • Mohon Kesinambungan. Ini membolehkan pelanggan merundingkan perkara seperti pengalihan atau butiran pengesahan lain semasa proses pengesahan. Mereka juga membenarkan pelanggan berunding untuk mendapatkan hak istimewa tambahan atau token akses.
  • Token Akses Pelbagai. Ini membolehkan klien mengesahkan banyak sumber sekaligus, sebagai pengguna dan pentadbir.
  • Token Kekangan Pengirim. Walaupun terdapat tambahan pada OAuth 2 untuk fungsi ini yang disebut DPOP dan MTLS, GNAP akan menjadikannya terus ke dalam protokol. Kembali ke contoh khemah bir kami. Bagaimana jika kita juga harus membisikkan kata laluan ke telinga penjual sambil menyerahkan token kepada mereka? Sekiranya token kami dijatuhkan (atau dipintas), tidak menjadi masalah kerana pembawa tidak mempunyai kata laluan.
  • Dan GNAP menyebabkan hantu Kerberos menjerit.

Bunyi baik? Bolehkah anda mula menggunakan GNAP hari ini? Sekiranya anda berminat untuk berkolaborasi, anda boleh menggunakan salah satu prototaip yang terdapat dalam cadangan yang ada di GitHub.

Menurut Moore, penulis bertujuan untuk melepaskan GNAP pada tahun 2022. Oleh kerana setiap hari pada tahun 2020 adalah seperti seminggu pada tahun biasa, GNAP masih jauh. Walau bagaimanapun, kumpulan kerja GNAP mencari kolaborator, dan anda boleh menyertai senarai mel dan menawarkan maklum balas dan kepakaran anda. Saya rasa anda tidak dapat memperbaiki semua perkara di dunia, tetapi sekurang-kurangnya anda dapat membantu memperbaiki OAuth.