Saya ingin membuat klien twitter tebal, desktop, dan open source. Saya kebetulan menggunakan .NET sebagai bahasa saya dan Twitterizer sebagai pembungkus OAuth / Twitter saya, dan aplikasi saya kemungkinan akan dirilis sebagai sumber terbuka.
Untuk mendapatkan token OAuth, diperlukan empat informasi:
- Token Akses (nama pengguna twitter)
- Rahasia Akses (kata sandi twitter)
- Kunci Konsumen
- Rahasia Konsumen
Dua informasi kedua tidak boleh dibagikan, seperti kunci pribadi PGP. Namun, karena cara alur otorisasi OAuth dirancang, ini harus ada di aplikasi asli. Bahkan jika aplikasi itu bukan open source, dan kunci konsumen / rahasia dienkripsi, pengguna yang cukup terampil dapat memperoleh akses ke kunci konsumen / pasangan rahasia.
Jadi pertanyaan saya adalah, bagaimana saya mengatasi masalah ini? Apa strategi yang tepat untuk klien Twitter desktop untuk melindungi kunci dan rahasia konsumennya?
sumber
Jawaban:
Saya menemukan jawaban yang mencerminkan jalan yang saya pertimbangkan turun di hueniverse . Artikel tersebut, Beyond the OAuth Web Redirection Flow , menawarkan beberapa saran, salah satunya adalah url web yang mewakili proses pertukaran token. Saya harus mencari cara untuk mengautentikasi dengan benar bahwa aplikasi saya adalah yang meminta otentikasi ke halaman proxy ini. Namun, itu mungkin.
sumber
Saya mungkin salah, tetapi jika Anda menggabungkan kunci dengan desktop atau aplikasi seluler, open source atau tidak, adalah mungkin untuk mengaksesnya. Jika layanan seperti Twitter dan Tumblr memaksa kami menggunakan API khusus OAuth, kami memiliki dua opsi:
Yang pertama lebih sulit dan mahal, tidak harus dipelihara untuk aplikasi sumber kecil dan terbuka. Yang terakhir berarti bahwa aplikasi dapat dan akan diblokir, begitu spammer mencuri kunci. Karena Twitter dan Tumblr belum memberikan opsi yang lebih baik, dan mengacaukan semua klien desktop, termasuk klien Open Source, ada proposal untuk mendistribusikan kunci "Big Fish", dan menggunakannya sebagai fallback .
Akhirnya, ada opsi untuk memaksa setiap pengguna untuk mendapatkan kunci API.
sumber
Bagian 4.6 dari RFC 5849 , yang mendefinisikan OAuth 1, menyatakan bahwa rahasia konsumen tidak pernah dimaksudkan untuk digunakan oleh konsumen desktop, meskipun dalam praktiknya Twitter menggunakannya. Seperti yang ditunjukkan Nelson Elhage di " Dear Twitter ", Twitter dapat dan memang menghentikan kunci konsumen klien desktop, asalkan klien tidak terlalu besar untuk gagal. Tetapi ada dua solusi untuk memungkinkan penggunaan OAuth 1 di desktop atau aplikasi seluler.
Salah satu caranya adalah dengan mem-proxy seluruh protokol Twitter melalui server yang Anda operasikan. Dengan cara ini, rahasia konsumen tetap ada di server Anda. Ini adalah solusi yang disarankan oleh Dick Hardt , editor spec OAuth 1. Penanganan masalah ini tidak membahas biaya pengoperasian server ini.
Cara lain, seperti yang disarankan dalam posting oleh Raffi Krikorian kepada grup pengembangan bicara Google Twitter dan posting oleh Chris Steipp ke milis Wikipedia, adalah dengan "meminta setiap pengguna mendaftarkan salinan aplikasi desktop Anda sebagai konsumennya sendiri." Kemudian pengguna akan menyalin dan menempelkan kunci konsumen yang baru terdaftar dan rahasia konsumen ke dalam aplikasi Anda. Manual untuk aplikasi Anda kemudian perlu memasukkan instruksi terperinci tentang cara mendaftarkan aplikasi baru di situs pengembang Twitter. Keterbatasan resmi ini memiliki beberapa masalah praktis:
sumber
Saya akan menjawab tetapi diingatkan bahwa saya belum pernah menangani hal ini sendiri, saya akan meninggalkan praktik terbaik dan pengalaman relevan yang ada;
Saya tidak akan terlalu khawatir tentang itu. Jika klien Anda adalah open source maka mereka akan memiliki akses ke sumbernya, dan mencoba untuk mengendalikan apa yang mereka lakukan dengan program Anda bertentangan dengan sifat open source (walaupun penting, apa yang Anda coba lakukan tidak ).
Jika seseorang memiliki pengetahuan yang cukup untuk men-debug program Anda dan mengekstrak kunci Anda, mereka mungkin tahu bagaimana melakukan lebih dari itu dan Anda bisa membuang-buang waktu untuk mencoba mengunci lebih jauh.
Sebagai tindakan pencegahan, saya akan sering mengganti kunci (jika mungkin), tetapi jika yang bisa mereka lakukan hanyalah berpura-pura menjadi program Anda, itu kedengarannya tidak terlalu serius bagi saya.
Pengungkapan penuh, saya tidak terbiasa dengan Twitters API, API twitterizer, persyaratan lain, atau apa pun yang saya katakan itu terdengar dipertanyakan;)
sumber
Kunci dan rahasia konsumen adalah batasan aplikasi dan bukan batasan pengguna. Dengan formasi ini penyedia OAuth tahu dengan aplikasi apa yang dihadapinya. Selebihnya, token Akses dan rahasia akan diperoleh setelah langkah pertama dilakukan.
Lihat posting blog ini untuk informasi lebih lanjut karena menunjukkan cara kerja protokol.
sumber