Bolehkah saya menggunakan OAuth 2.0 tanpa pelayan ubah hala?
P粉710478990
2023-08-22 22:18:09
<p>Saya cuba mencipta klien berasaskan Java asli yang berinteraksi dengan API SurveyMonkey. </p>
<p>SurveyMonkey memerlukan penjanaan token akses jangka panjang menggunakan OAuth 2.0, yang saya tidak begitu biasa. </p>
<p>Saya telah googling selama berjam-jam dan saya rasa jawapannya tidak, tetapi saya hanya mahu memastikan: </p>
<p>Bolehkah saya menulis klien Java yang mudah untuk berinteraksi dengan SurveyMonkey,<strong>tanpa perlu menyediakan pelayan ubah hala saya sendiri</strong> </p>
<p>Saya fikir adalah perlu untuk mempunyai perkhidmatan dalam talian saya sendiri untuk dapat menerima token yang dijana oleh OAuth 2.0. Tidak bolehkah saya hanya meminta SurveyMonkey menghantar token terus kepada pelanggan saya? </p>
<p>Jika saya menyediakan Servlet tersuai saya sendiri di suatu tempat dan menggunakannya sebagai redirect_uri, aliran yang betul hendaklah seperti berikut: </p>
<ol>
<li>Pelanggan Java meminta token daripada SurveyMonkey, dengan redirect_uri ialah URL Servlet tersuai saya. </li>
<li>SurveyMonkey menghantar token ke URL Servlet tersuai saya. </li>
<li>Pelanggan Java meninjau URL Servlet tersuai sehingga ia mendapat token. </li>
</ol>
<p>Adakah ini betul? </p>
Ya, adalah mungkin untuk menggunakan OAuth2 tanpa URL panggil balik. RFC6749 memperkenalkan beberapa proses. Aliran tersirat (kini ditamatkan[1]) dan aliran kod kebenaran(Kod Kebenaran) memerlukan URI ubah hala. Walau bagaimanapun, aliran bukti kelayakan kata laluan pemilik sumber (juga ditamatkan[1]) tidak diperlukan.
Sejak penerbitan RFC6749, spesifikasi lain telah diterbitkan yang tidak memerlukan sebarang URI ubah hala:
Selain itu, apabila menggunakan OpenID Connect, corak tindak balas tidak perlu menjadi ubah hala kepada parameter
redirect_uri
, tetapi boleh menjadi permintaan POST ke titik akhir itu. Lihat OAuth 2.0 Borang POST Response Corak spesifikasi untuk butiran.Apa pun, jika jenis kebenaran di atas tidak sesuai dengan keperluan anda, anda boleh membuat jenis kebenaran tersuai.
[1]: Spesifikasi OAuth 2.1 (Draf 07)
Tidak tepat sepenuhnya, keseluruhan proses OAuth ialah pengguna (pelanggan yang bagi pihak anda sedang mengakses data) perlu memberi anda kebenaran untuk mengakses data mereka.
Lihat Arahan Pengesahan. Anda perlu menghantar pengguna ke halaman kebenaran OAuth:
Ini akan menunjukkan kepada pengguna halaman yang memberitahu mereka bahagian akaun mereka yang anda minta akses (cth. melihat tinjauan mereka, melihat respons mereka, dsb.). Setelah pengguna meluluskan dengan mengklik "Izinkan" pada halaman itu, SurveyMonkey akan melompat secara automatik ke halaman yang anda tetapkan sebagai URI ubah hala (pastikan URI ubah hala dalam URL di atas sepadan dengan yang ditetapkan dalam tetapan aplikasi anda) dan kembali kod Keizinan.
Jadi jika URL ubah hala anda ialah
https://example.com/surveymonkey/oauth
, SurveyMonkey akan mengubah hala pengguna ke URL tersebut menggunakan kod kebenaran:https://example.com/surveymonkey/oauth?code=<auth_code>
Anda kemudiannya perlu menggunakan kod kebenaran itu untuk menukar token akses dengan menghantar permintaan POST ke
https://api.surveymonkey.net/oauth/token?api_key=<your_api_key>
, memberikan parameter POST berikut:Ini akan mengembalikan token akses yang kemudiannya boleh anda gunakan untuk mengakses data pada akaun pengguna. Anda tidak perlu memberikan token akses kepada pengguna, ia adalah untuk anda gunakan untuk mengakses akaun pengguna. Tiada pengundian atau operasi lain diperlukan.
Jika anda hanya mengakses akaun anda sendiri, anda boleh menggunakan token akses yang disediakan dalam halaman tetapan aplikasi. Jika tidak, tiada cara untuk mendapatkan token akses untuk pengguna melainkan anda menyediakan pelayan ubah hala anda sendiri (melainkan semua pengguna tergolong dalam kumpulan yang sama, iaitu berbilang pengguna di bawah akaun yang sama; tetapi saya tidak akan melakukannya). SurveyMonkey memerlukan tempat untuk menghantar kod kebenaran kepada anda, anda tidak boleh meminta satu sahaja.