'In app benim Node.js güvence REST API?
GERİSİ benim API için biraz yardım alabilirim. İstemci tarafında Express, MongoDB ve Backbone.js kullandığı Node.js bir uygulama yazıyorum. Son iki gün tüm bu zahmetli ve şanssız geçirdim. Zaten kontrol ettim:
- Securing a REST API
- Securing my REST API with OAuth while still allowing authentication via third party OAuth providers (using DotNetOpenAuth)
- http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/
- http://tesoriere.com/2011/10/10/node.js-getting-oauth-up-and-working-using-express.js-and-railway.js/
Özenle tasarlanmış bir REST API kullanarak iyi olacağını düşündüm bu yüzden benim arka uç ve önyüz mümkün olduğunca ayrı tutmak istiyorum. Benim düşüncem eğer bir iPhone uygulaması (ya da buna benzer başka bir şey) geliştirmek için en iyisi, verilere erişmek için API kullanabilir.
ANCAK, bu güvenli olmak istiyorum. Bir kullanıcı benim web uygulaması oturum ve benim API güvenli olduğundan emin olmak istiyorum. Bir yerde okumuştum OAuth, OAuth 2.0 ve Openıd, Hmac, karma vs... istediğim için kullanmaktan kaçının harici giriş (Facebook/Twitter/etc) istediğim kayıt ve giriş için benim app/sunucu.
...ama yine de kafam karıştı. Belki de gece geç ya da benim beynim yanmış. ama burada gerçekten ne için bazı adımlar ile yapabilirim. Bana güvenli bir API oluşturmak için adımlar nelerdir?
Herhangi bir yardım, herhangi bir bilgi, herhangi bir örnek, adım falan çok iyi olurdu. Yardım lütfen!
CEVAP
Artan güvenlik / karmaşıklık için:
Temel HTTP Auth
Birçok API kitaplıkları inşa etmek izin verir (örneğin Django içinde Piston) veya web sunucusu halleder. Nginx ve Apache server direktifleri b64encoded basit bir şifre ile güvenli bir site için kullanabilirsiniz. Dünyanın en güvenli şey değil ama en azından bir kullanıcı adı ve şifre!
Eğer Nginx kullanıyorsanız bir bölümü ana bilgisayar yapılandırma gibi ekleyebilirsiniz:
auth_basic "Restricted";
auth_basic_user_file /path/to/htpasswd;
(location /
blok koy)
Dokümanlar: http://wiki.nginx.org/HttpAuthBasicModule
Python komut dosyası, bir parola oluşturmak ve bir dosyaya çıktı almanız gerekir: http://trac.edgewall.org/browser/trunk/contrib/htpasswd.py?format=txt
Dosya konumunu çok Nginx erişimi olduğu sürece önemi yok.
HTTPS
Bu uygulama, bu en temel olduğu için sunucudan bağlantıyı güvenli ve orta saldırılarda adam önleyecektir.
Nginx ile bunu yapabilirsiniz, bunun için dokümanlar çok kapsamlıdır: http://wiki.nginx.org/HttpSslModule
Bu güzel (ve ücretsiz!) olacağı için kendi imzanızı taşıyan sertifika.
API Anahtarları
Bu gibi herhangi bir biçimde olabilir, ama onlar gerekir iptal erişimi parası vermek. Muhtemelen bağlantı iki ucu geliştiriyorsanız sizin için mükemmel bir çözüm değil. Üçüncü taraf API, örneğin Github kullanarak olduğunda kullanılacak eğilimindedir.
OAuth
OAuth 2.0 ile burada olduğu gibi. Temel işleyişini en kimlik doğrulama (Twitter, Facebook, Google, vb.) için de facto standart bir şey olduğunu bilmiyorum kütüphaneler ve dokümanlar bir ton bu uygulamaya yardımcı olmak için vardır. Bu varlık genellikle kimlik doğrulaması için üçüncü parti bir hizmet sorarak bir kullanıcının kimliğini doğrulamak için kullanılan olduğunu söyledi.
Verilen bu işin gelişimi iki taraftan da olur yeterince koymak API arkasındaki Temel HTTP Auth ve hizmet üzerinden HTTPS, özellikle eğer istemiyorsan boşa zaman tembellik ile OAuth.
İçinde Node.js nasıl "vardır"...
Nasıl ya eski node.js benim sürümü kal...
Nasıl otomatik olarak bir git push ( G...
Hala üçüncü taraf OAuth sağlayıcıları ...
Neden Google 1 Benim fare hareketleri ...