2016-04-08 72 views
1

Aşağıdaki kurulum var:harici bir sunucuya karşı CouchDB kullanıcıyı kimlik denetimi

    kullanıcıları depolar ve kimlik doğrulaması yapar
  1. CouchDB veritabanı; kullanıcı başına bir db oluşturur
  2. senkronize ve üzerinden kimlik doğrulaması için PouchDB kullanan
  3. Web uygulaması pouchdb-authentication
  4. Şimdi

CouchDB web uygulamasından gelen istekleri alır ve erişir

  • REST API sunucu, REST API yönetici erişimine CouchDB'ye göre, istekleri aldığında, gönderenin erişim hakkına sahip olduğunu iddia ettiği veritabanına izin verdiğinden emin olmak için bir çeşit kimlik doğrulaması yapması gerekir. Sürekli oturumları kullandığım için, web uygulaması kullanıcı parolasını her zaman bilmez (yerel bir yerde sakladığım sürece - açıkçası kötü bir fikir). Oturum çerezi HttpOnly, dolayısıyla ona erişemiyorum.

    Ne bu senaryo altında API istekleri kimlik doğrulaması için en iyi yolu olurdu? İhtiyacınız ve base64 oturum olarak çerezi eklemek

  • +0

    kanepenin DİNLENME tabakası parçası mı yoksa bağımsız bir yığın yani Java/Tomcat veya PHP/Apache vb O? – Harry

    +0

    @Harry Bağımsız yığın (Pas). – jgillich

    +0

    Bu, işleri çok kolaylaştırıyor. – Harry

    cevap

    1

    Şifrele herşey. Aşağıdaki WebApp için durumuna geçen yatma tabakası üzerinde de

    1. WebApp: Send username and password 
    2. REST: Authenticate this using couch. 
    3. REST: Encrypt the session along with username password and create cookie, then base64 result. 
    4. REST: Send cookie to WebApp. 
    5. WebApp: Alway sends cookie back to REST layer. 
    6. REST layer has everything it needs to authenticate the user. 
    

    ... dizisi olacaktır ve o WebApp gelen mi durumunu alır. Müşteri şifresini çözemez, bu yüzden güvenlidir. İstemci daha sonra bu belirteci, tanımlama bilgisi olarak REST katmanına geri gönderir ve ardından kimlik doğrulaması gereken ayrıntıları almak için kullanır.

    Sen oldukça kolay birkaç yüz bayt şifrelemek ve herhangi üstbilgi veya çerez boyutu sınırlamalarını çalıştırılamaz. Şifreleme öncesinde veya sonrasında, güvenlik nedenleriyle 'dan önce ve şifrelenmiş verilerin iyi sıkıştırılmaması nedeniyle sıkıştırmayın. Performans konusunda endişelenen biri varsa, o zaman bunu kıyaslayın, ancak bunu, Rust'tan daha yavaş büyüklükteki dilleri kullanarak kullandım. Yukarıda bir varyasyonu Ben başlıkları ve çerezleri kullanarak bu tekniği kullandım ve bir cazibe gibi çalıştı

    1. WebApp: Send username and password 
    2. REST: Authenticate this using couch. 
    3. REST: Store Couch session in memcahed along with username password and create cookie. The cookie is the key to memcached. 
    4. REST: Send cookie to WebApp. 
    5. WebApp: Alway sends cookie back to REST layer. 
    6. REST: Get details from memcached. 
    

    ... yani memcached kullanmaktır. Sana

    karıştırıp Uygulamalarınızı ihtiyaçlarını karşılamak için yukarıda eşleşebilir vb XSRF karşı korumak için bir şeyler kullanıyoruz varsayıyorum.