Açık kaynaklı bir masaüstü Twitter istemcisi için OAuth v1 tüketici anahtarını ve sırrını kullanıcıya açıklamadan nasıl saklarım?


32

Kalın istemci, masaüstü, açık kaynaklı bir twitter istemcisi yapmak istiyorum. OAuth / Twitter sarıcım olarak .NET'i dilim ve Twitterizer olarak kullanıyorum ve uygulamam muhtemelen açık kaynak olarak yayınlanacak.

Bir OAuth belirteci elde etmek için dört bilgi parçası gerekir:

  1. Erişim Simgesi (twitter kullanıcı adı)
  2. Erişim Sırrı (twitter şifresi)
  3. Tüketici anahtarı
  4. tüketici mahremiyeti

İkinci iki bilgi, bir PGP özel anahtarı gibi paylaşılmayacak. Ancak, OAuth yetkilendirme akışının tasarlanma şekli nedeniyle, bunların yerel uygulamada olması gerekir. Uygulama açık kaynak olmasa ve tüketici anahtarı / sırrı şifrelenmiş olsa bile, oldukça yetenekli bir kullanıcı tüketici anahtarına / gizli çiftine erişebilir.

Öyleyse sorum şu, bu problemi nasıl çözebilirim? Bir masaüstü Twitter istemcisinin tüketici anahtarını ve sırrını korumak için uygun stratejisi nedir?


+1 Bende de bu aynı endişe var. Ancak soru aslında masaüstü ortamlarına veya Twitter'a özgü değil - bu kimlik doğrulama şemasının inanıyorum ki web servisleri arasında çok yaygın?
vemv

Sorunuz "bir müşteride gizli verilerin nasıl depolanacağı" gibi bir şeye soyutlanabileceğinden, daha az heyecan verici yeni bir soru gönderirseniz daha fazla cevap alabileceğinizi düşünüyorum. IMO.
Jeff Welling,

1
+1 Ayrıca, burada en iyi uygulamanın ne olduğunu da merak ediyorum. Qt uygulamamda OAuth kullanıyorum, ancak yalnızca Tüketici ayrıntılarını ikili olarak dizeler (QString) olarak saklıyorum.
fejd

1
Jeff, onların OAuth ile tamamen yanlış bir şey yapıyorum çok iyi bir olasılık. Tüketici anahtar / gizli çiftini geçici sırlar üretmek için kullanmam gerektiği ve bu sırları bir yerde üretmek için bir web servisine sahip olmanın yolu olduğu hissine kapılmaya başladım. Bu soruyu OAuth'un ötesinde genellemek, bu gibi cevapları kaçıracaktır.
Justin

Yanıtlar:



3

Hatalı olabilirim, ancak anahtarları masaüstü veya mobil uygulamalarla açık kaynak kodlu olarak paketlerseniz, erişmek mümkündür. Twitter ve Tumblr gibi hizmetler bizi yalnızca OAuth API'sini kullanmaya zorlarsa, iki seçeneğimiz vardır:

  • Her uygulama için bir yetkili proxy servisi kurun
  • uygulama ile paket anahtarları

Eski, daha zor ve maliyetlidir, küçük ve açık kaynaklı uygulamalar için mutlaka bakımı yapılmaz. İkincisi, spam gönderenlerin anahtarları çalması üzerine uygulamanın engellenebileceği ve engelleneceği anlamına gelir. Twitter ve Tumblr henüz daha iyi bir seçenek sunmadığı ve tüm açık masaüstü müşterileri olan Açık Kaynaklı müşterileri de dahil ettiği için, "Büyük Balık" anahtarlarını dağıtma ve bunları bir geri dönüş olarak kullanma önerisi var .

Son olarak, her kullanıcıyı API anahtarlarını almaya zorlama seçeneği vardır .


3

OAuth 1’i tanımlayan RFC 5849’un Bölüm 4.6’sı, Twitter’ın pratikte kullanmasına rağmen, tüketici sırrının asla masaüstü tüketiciler tarafından kullanılmadığını belirtiyor. Nelson Elhage " Sevgili Twitter " da işaret ettiği gibi , Twitter, müşterinin başarısız olamayacak kadar büyük olmaması şartıyla, masaüstü müşterilerin tüketici anahtarlarını sonlandırabilir ve sonlandırabilir. Ancak, OAuth 1'in bir masaüstü veya mobil uygulamada kullanılmasına izin veren iki geçici çözüm vardır.

Bunun bir yolu, Twitter protokolünün tamamını, işlettiğiniz bir sunucu üzerinden proxy yapmaktır. Bu şekilde, tüketici sırrı sunucunuzda kalır. Bu, OAuth 1'in editörü Dick Hardt tarafından önerilen geçici çözümdür. Bu geçici çözüm, bu sunucuyu çalıştırmanın maliyetini karşılamaz.

Diğer bir deyişle, Raffi Krikorian'ın Twitter geliştirme konulu Google grubundaki konuşmasında ve Chris Steipp'in bir Wikipedia posta listesine gönderdiği bir yazıda önerildiği gibi , her kullanıcının "masaüstü uygulamanızın kopyasını kendi müşterisi olarak kaydetmesini" sağlamaktır. Sonra kullanıcı, yeni kayıtlı tüketici anahtarını ve tüketici sırrını kopyalayıp uygulamanıza yapıştırır. Başvurunuz için daha sonra Twitter'ın geliştirici sitesine nasıl yeni bir başvuru yapılacağına ilişkin ayrıntılı talimatlar içermesi gerekir. Bu resmi sınırlamanın birkaç pratik sorunu var:

  • Müşteriniz, tanınmış tescilli müşterilere kıyasla kullanılabilirlik dezavantajıyla karşı karşıya kalacaktır.
  • Form Yeni bir uygulama oluşturmak için gerekli alanları önceden doldurmak için bir yol sunmak için görünmüyor. Bu, Twitter bir uygulamayı kaydetme prosedürünü değiştirdiğinde kılavuzunuzdaki kayıt adımlarını güncellemeniz gerektiği anlamına gelir.
  • Geliştirici sözleşmesi, kullanıcıların bağlayıcı bir sözleşmeye girmeleri için yasal yaşta olmasını gerektirir. Bu, 13 ila 17 yaş arasındaki başvurunuzun bir kullanıcısının, kullanıcı adına sözleşmeyi kabul etmesi için bir ebeveyni olması gerektiği anlamına gelir.
  • Twitter Geliştirici Politikası , toplu kayıt uygulamalarını ve "farklı isimler altında aynı işleve sahip birden fazla uygulama gönderme" olarak tanımladığı "isim çömelme" yi yasaklar. Twitter'ın bir uygulamanın ayrı kopyalarını "isim çömelme" olarak kaydettiren ilgisiz kullanıcılara davranıp davranmadığına dair hiçbir emsal bilmiyorum.

-2

Yanıtlayacağım ancak uyarıldım, kendimle ilgilenmediğim, en iyi uygulamalardan ve mevcut ilgili deneyimden mahrumum;

Bunun için fazla endişelenmem. Eğer müşteriniz açık kaynak ise, o zaman yine de kaynağa erişebilecekler ve programınızla ne yaptıklarını kontrol etmeye çalışacaklarsa, açık kaynağın niteliğine aykırı olsa da (önemlisi, ne yapmaya çalıştığınızı değil) ).

Birisi programınızın hatalarını ayıklamak ve anahtarınızı çıkarmak için yeterli bilgiye sahipse, bundan daha fazlasını nasıl yapacağınızı biliyorsa, daha fazla kilitlenmeye çalışarak zamanınızı boşa harcayabilirsiniz.

Bir önlem olarak, anahtarları çok sık değiştirirdim (mümkünse), ancak tek yapabilecekleri programınız benim için çok ciddi gelmiyormuş gibi yapmak.

Tam açıklama, Twitters API, twitterizer'ın API'si, sesli gereksinimler veya şüpheli gibi görünen bir şey bilmiyorum;)


4
Programla birlikte kontrol etmeye çalışmakla ilgili değil, kendilerini yanlış tanıtan insanlar hakkında. Tüketici anahtarı ve sırrı, twitter'a "bu uygulamanın yanıma geldiğini" söylediğim gibi bir SSL sertifikası gibi güven veriyor. Bir SSL sertifikasını asla yazdığım bir web uygulamasıyla dağıtmam. İnsanlar benim uygulamamı değiştirirse, gerçekten de kendi Tüketici anahtarı / sırrına başvurmalı ve twitter'dan kendi oluşturmaları için kendilerini uygulama yazarı olarak kaydetmelidirler.
Justin,

Mükemmel nokta, tüketici anahtarının ne için olduğunu ancak kesin olarak bilmiyordu. Bu durumda, dürüst olmak gerekirse, ben orada sanmıyorum olduğunu uygulamanızı korumak için bir yol. Benim için bu twitter gibi sesler bu yöntemi seçti, böylece mobil uygulamalar yazılabilir, ancak masaüstü uygulamaları yazamaz - mobil platformlar büyük oranda kilitlenir. Bu durumda IMO'ya gitmenin en iyi yolu, anahtarı kaynak kodla serbest bırakmadığınız ayrı bir dosyaya veya değişkene koymaktır. Bildiğim kadarıyla bu GPL'ye karşı gelmiyor. Yine de bunların hepsinde veya hepsinde yanlış olduğunu ispatlamak isterdim ..
Jeff Welling

-4

Tüketici anahtarı ve sırrı, uygulamaya bağlı olup, kullanıcıya bağlı değildir. Bu oluşumda OAuth sağlayıcısı hangi uygulama ile uğraştığını bilir. Geri kalan, Access belirteci ve sır ilk adımlar yapıldıktan sonra elde edilecektir.

Protokolün nasıl çalıştığını gösterdiği gibi daha fazla bilgi için bu blog gönderisine bakın .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.