Apa's hak OAuth 2.0 aliran untuk aplikasi mobile
Saya mencoba untuk melaksanakan pendelegasian wewenang dalam Web API untuk aplikasi mobile menggunakan OAuth 2.0. Menurut keterangan, implisit memberikan aliran tidak mendukung refresh token, yang berarti setelah akses token yang diberikan untuk suatu periode waktu tertentu, pengguna harus memberikan izin untuk aplikasi lagi setelah tanda berakhir atau dicabut.
Saya kira ini adalah sebuah skenario untuk beberapa kode javascript yang berjalan pada browser seperti yang disebutkan dalam spesifikasi. Saya mencoba untuk meminimalkan kali pengguna harus memberikan izin untuk aplikasi untuk mendapatkan token, sehingga terlihat seperti Kode Otorisasi aliran adalah pilihan yang baik karena mendukung refresh token.
Namun, aliran ini tampaknya sangat bergantung pada web browser untuk melakukan pengalihan. Saya bertanya-tanya jika aliran ini masih merupakan pilihan yang baik untuk sebuah aplikasi mobile jika embedded web browser yang digunakan. Atau saya harus pergi dengan implisit aliran ?
Klarifikasi: Mobile Aplikasi = Aplikasi Asli Seperti yang dinyatakan di komentar lain dan beberapa sumber online, implisit sepertinya cocok alami untuk mobile apps, namun solusi yang terbaik tidak selalu jelas (dan pada kenyataannya implisit tidak dianjurkan untuk alasan yang dibahas di bawah). Aplikasi Asli OAuth2 Praktik Terbaik Apa pun pendekatan yang anda pilih (ada beberapa trade off untuk mempertimbangkan), anda harus membayar perhatian pada praktik-praktik terbaik seperti yang diuraikan di sini untuk Native Apps menggunakan OAuth2: https://tools.ietf.org/html/rfc8252 Pertimbangkan pilihan berikut Implisit Saya harus menggunakan implisit? Untuk kutipan dari Bagian 8.2 https://tools.ietf.org/html/rfc8252#section-8.2
Sayangnya, saya don't pikir ada jawaban yang jelas untuk pertanyaan ini. Namun, di sini adalah pilihan yang saya've diidentifikasi:
Jika itu adalah ok untuk meminta pengguna untuk/nya kredensial, kemudian gunakan Sumber daya Pemilik Sandi Kredensial. Namun, hal ini tidak mungkin untuk beberapa alasan, yaitu
Kegunaan atau kebijakan keamanan melarang memasukkan password langsung di app
Proses otentikasi adalah didelegasikan pada eksternal Identitas Penyedia dan harus dilakukan melalui HTTP redirect berbasis aliran (misalnya OpenID, SAMLP atau WS-Federation)
Jika penggunaan browser berbasis aliran diperlukan, kemudian gunakan Kode Otorisasi Aliran. Di sini, definisi dari
redirect_uri
adalah sebuah tantangan besar, yang ada adalah pilihan berikut:Menggunakan teknik yang dijelaskan dalam https://developers.google.com/accounts/docs/OAuth2InstalledApp, di mana khusus
redirect_uri
(misalnyaurn:ietf:wg:oauth:2.0:oob
) sinyal otorisasi akhir untuk menunjukkan kode otorisasi, bukan mengarahkan kembali ke aplikasi client. Pengguna dapat secara manual copy kode ini atau aplikasi dapat mencoba untuk mendapatkan itu dari dokumen HTML judul.Menggunakan
localhost
server pada perangkat (port management mungkin tidak akan mudah).Menggunakan custom skema URI (misalnya
myapp://...
) bahwa ketika dereferenced memicu terdaftar "handler" (rincian bergantung pada platform mobile).Jika tersedia, gunakan pembersih khusus "tampilan web", seperti WebAuthenticationBroker pada Windows 8, untuk mengontrol dan mengakses HTTP redirect tanggapan.
Semoga ini bisa membantu
Pedro
TL;DR: Gunakan Kode Otorisasi Hibah dengan PKCE
1. Implisit Jenis Hibah
Implisit hibah jenis ini cukup populer dengan aplikasi mobile. Tapi itu tidak dimaksudkan untuk digunakan seperti ini. Ada kekhawatiran keamanan di seluruh mengarahkan. Justin Kaya serikat:
Dan bersama-sama dengan fakta, bahwa hal itu tidak membiarkan anda refresh token akses, lebih baik menghindarinya.
2. Kode Otorisasi Jenis Hibah
Kode otorisasi hibah memerlukan klien yang rahasia. Tapi anda tidak perlu menyimpan informasi yang sensitif dalam kode sumber dari aplikasi seluler anda. Orang-orang dapat mengambil mereka. Untuk tidak mengekspos rahasia klien, anda harus menjalankan server sebagai perantara sebagai Facebook menulis:
Bukan solusi yang ideal tapi ada yang baru, cara yang lebih baik untuk melakukan OAuth pada perangkat mobile: Bukti Kunci untuk Kode Exchange
3. Kode otorisasi Jenis Hibah dengan PKCE (Bukti Kunci untuk Kode Exchange)
Keluar dari keterbatasan, teknik baru dibuat yang memungkinkan anda menggunakan Kode Otorisasi tanpa rahasia klien. Anda dapat membaca penuh RFC 7636 atau pendahuluan singkat ini.
dari https://oauth.net/2/pkce/
Menggunakan webview di aplikasi mobile anda harus menjadi cara yang terjangkau untuk melaksanakan OAuth2.0 protokol pada platform Android.
Adapun redirect_uri lapangan, saya pikir
http://localhost
adalah pilihan yang baik dan anda don't memiliki port HTTP server dalam aplikasi anda, karena anda dapat menimpa pelaksanaanonPageStarted
fungsiWebViewClient
kelas dan berhenti loading halaman web darihttp://localhost
setelah anda memeriksaurl
parameter.Halus pengalaman pengguna untuk otentikasi, dan yang paling mudah untuk menerapkan untuk menanamkan webview di aplikasi anda. Proses tanggapan yang diterima oleh webview dari otentikasi titik dan mendeteksi kesalahan (user membatalkan) atau persetujuan (dan ekstrak token dari parameter kueri url). Dan saya pikir anda benar-benar bisa melakukan itu di semua platform. Saya telah berhasil membuat karya ini sebagai berikut: ios, android, mac, windows store 8.1 apps, windows phone 8.1 aplikasi. Saya melakukan ini untuk layanan-layanan berikut: dropbox, google drive, onedrive, box, basecamp. Untuk non-platform windows, saya menggunakan Xamarin yang seharusnya tidak mengekspos seluruh platform Api tertentu, namun hal itu tidak mengekspos cukup untuk membuat ini mungkin. Sehingga hal ini cukup mudah diakses solusi, bahkan dari lintas platform perspektif, dan anda don't perlu khawatir tentang ui otentikasi bentuk.