SORU
19 Mart 2013, Salı


Nasıl güvenli bir DİNLENME node.js API uygulamak için

Bir DİNLENME node.js açık ve mongodb ile API planlamaya başlıyorum. API bir web sitesi için veri (genel ve özel alan) ve mobil uygulaması belki daha sonra sağlar. Önyüz AngularJS ile geliştirilecek.

Birkaç gün DİNLENME API güvenliği hakkında çok şey okudum, ama nihai bir çözüm alamadım. Anladığım kadarıyla HTTPS temel güvenlik sağlamak için kullanmak. Ama nasıl kullanmak durumlarda API koruyabilirim:

  • Web sitesi/app kullanıcılar/ziyaretçi web sitesi/app kamusal alan için veri almak için izin verilir

  • Kimliği doğrulanmış ve yetkili kullanıcılar sadece özel alan (ve kullanıcı izinleri sadece veri) için veri almak için izin verilir

Şu anda sadece aktif bir oturum ile kullanıcıların API kullanmak için izin düşünüyorum. Kullanıcıları yetkilendirmek için pasaport kullanacağım ve izni, kendim için bir şey uygulamak istiyorum. HTTPS üstünde.

Birilerinin en iyi uygulama veya deneyimler sağlayabilir? Orada benim bir eksikliği“”? mimarlık.

CEVAP
19 Mart 2013, Salı


Tarif aynı sorunu yaşadım. Ben inşa ediyorum bir web site tarayıcıdan cep telefonundan ve erişilebilir kullanıcı Kayıt, Giriş ve bazı belirli görevleri yapmak için izin vermek için bir apı istiyorum. Ayrıca, ölçülebilirlik, aynı kodu farklı işlemler/makineleri çalıştırma desteği gerekiyor.

Kullanıcıların kaynakları (nam-ı diğer POST/eylemler KOYMAK) OLUŞTURMAK için apı güvenli gerekir. Oauth kullanabilirsiniz ya da kendi çözümünüzü oluşturmak ama tüm çözümler şifreyi Eğer gerçekten kolay bulmak için ise kırılmış olabilir unutmayın. Temel fikir, kullanıcıların kullanıcı adı, şifre ve token, bir aka apitoken kullanarak kimliğini doğrulamak için. Bu apitoken node-uuid kullanma ve parola sağlaması pbkdf2 kullanılarak oluşturulabilir

Sonra, oturumu bir yere kaydetmeniz gerekir. Düz bir nesne bellekte Sakla, seni sunucusunu öldürüp yeniden oturumun yok olacak. Ayrıca, bu ölçeklenebilir değildir. Eğer kullandığınız haproxy için yük dengesi arasında makine veya basitçe kullanın işçiler, bu oturum durumu olacak saklı bir tek işlem bu kadar eğer aynı kullanıcı yeniden yönlendirilen bir süreç/makine gerekiyor kimliğini tekrar. Bu nedenle ortak bir yerde oturumu saklamak gerekir. Bu genellikle redis kullanılarak yapılır.

Kullanıcı kimliği (kullanıcı adı şifre apitoken) başka bir oturum için bir belirteç oluşturmak, accesstoken aka. Yine, düğüm-uuıd ile. Kullanıcı accesstoken ve kullanıcı kimliği gönder. Kullanıcı kimliği (anahtar) ve accesstoken (değer) ile redis saklanır ve zaman, 1h örneğin dolacak.

Şimdi, kullanıcı herhangi bir işlemi geri kalanı kullanarak her zaman kullanıcı kimliği ve accesstoken göndermesini apı.

Eğer izin verdiğiniz kullanıcılar için kaydolma kullanarak dinlenme apı, ihtiyacınız olacak oluşturmak için bir yönetici hesabı ile admin apitoken ve onları mağaza içinde mobil uygulama (şifrelemek kullanıcı adı şifre apitoken) çünkü yeni kullanıcılar olmayacak bir apitoken zaman onlar kaydolun.

Web de bu apı kullanır ama apitokens kullanmana gerek yok. Redis bir mağaza ile ifade kullanmak ya da aynı tekniği yukarıda anlatılan ama apitoken denetimi atlama kullanıcı için bir tanımlama bilgisi kullanıcı kimliği accesstoken dönen kullanabilirsiniz.

Eğer varsa özel alanlarda kimlik doğrulaması için izin verilen kullanıcılar ile kullanıcı adı karşılaştırın. Ayrıca kullanıcılar için rolleri uygulayabilirsiniz.

Özet:

sequence diagram

Apitoken olmadan alternatif HTTPS kullanmak ve Yetkilendirme başlığı kullanıcı adı ve şifre göndermek ve redis içinde kullanıcı adı önbellek olurdu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bcbauer

    bcbauer

    7 ŞUBAT 2007
  • Klemens Torggler

    Klemens Torg

    11 Mart 2008
  • The Fashion Sight

    The Fashion

    22 AĞUSTOS 2011