Everyauth, Passport.js mi?


122

Everyauth ve Passport.js çok benzer özellik kümelerine sahip görünüyor. İkisi arasındaki olumlu ve olumsuz karşılaştırmalardan bazıları, birini diğerinin üzerinde kullanmak istememe neden olur?


Diğer bir alternatif ise Grant kullanmaktır - bu yalnızca OAuth ara yazılımını arıyorsanız. Yüzlerce sağlayıcıyı destekler ve basit JSON veri yapısı ile yapılandırılır.
simo

Yanıtlar:


191

Passport'un geliştiricisi olarak iki sentimle uğraşıyorum .

Passport'u geliştirmeden önce, her şeyi değerlendirdim ve gereksinimlerimi karşılamadığını belirledim. Bu yüzden farklı bir çözüm uygulamaya koydum. Ele almak istediğim ana noktalar:

Deyimsel Node.js

everyauth, Node'un geri aramaları ve kapatmaları kullanma yaklaşımı yerine vaatleri kapsamlı bir şekilde kullanır. Sözler, eşzamansız programlamaya alternatif bir yaklaşımdır. Bazı üst düzey durumlarda yararlı olsa da, başvuruma bu seçimi zorlayan bir kimlik doğrulama kitaplığından memnun değildim.

Dahası, geri çağırmaların ve kapatmaların doğru kullanımının kısa, iyi tasarlanmış (neredeyse işlevsel tarz) kodlar sağladığını gördüm. Düğümün gücünün büyük bir kısmı bu olgudan gelir ve Passport da bunu takip eder.

Modüler

Passport, çekirdek modül ile çeşitli kimlik doğrulama mekanizmaları arasındaki endişelerin net bir şekilde ayrılmasını tanımlamak için bir strateji tasarım modeli kullanır. Bunun, daha küçük genel kod boyutu ve iyi tanımlanmış ve test edilebilir arabirimler dahil olmak üzere bir dizi avantajı vardır.

Temel bir örnek için, koşmak $ npm install passportve koşmak arasındaki farkı karşılaştırın $ npm install everyauth. Passport, uygulamanızı yalnızca gerçekten ihtiyacınız olan bağımlılıkları kullanarak oluşturmanıza olanak tanır.

Bu modüler mimari, OpenID, OAuth, BrowserID, SAML, vb. Dahil olmak üzere çok çeşitli kimlik doğrulama mekanizmaları için destek uygulayan bir topluluğu kolaylaştırarak uyarlanabilir olduğunu kanıtlamıştır.

Esnek

Passport, Connect ve Express tarafından oluşturulan konvansiyonu kullanan bir ara yazılımdırfn(req, res, next) .

Bu , rotalarınızı nerede istediğinizi ve kimlik doğrulamasını ne zaman kullanmak istediğinizi tanımladığınız için sürpriz olmayacağı anlamına gelir . Ayrıca belirli bir çerçeveye bağımlılık yoktur. İnsanlar Passport'u Flatiron gibi diğer çerçevelerle başarıyla kullanıyor

Buna karşılık, everyauth'taki herhangi bir modül uygulamanıza yol ekleyebilir. Bir yolun nasıl gönderileceği açık olmadığından ve belirli bir çerçeve ile sıkı bir bağlantıya yol açtığından bu, hata ayıklamayı zorlaştırabilir.

Passport, Express tarafından tanımlanan hata işleme ara yazılımlarının yanında, tamamen geleneksel bir şekilde de hata yapar .

Buna karşılık, everyauth'un sorun alanına tam olarak uymayan ve # 36 gibi uzun süredir devam eden açık sorunlara neden olan kendi kuralları vardır.

API Kimlik Doğrulaması

Herhangi bir kimlik doğrulama kitaplığının taçlandıran başarısı, API kimlik doğrulamasını web tabanlı oturum açma kadar zarif bir şekilde işleme yeteneğidir.

Bu noktada fazla ayrıntıya girmeyeceğim. Ancak, insanları Passport'un kardeş projelerine, OAuthorize ve OAuth2orize'e bakmaya teşvik ediyorum . Bu projeleri kullanarak, hem HTML / oturum tabanlı web uygulamaları hem de API istemcileri için "tam yığın" kimlik doğrulaması uygulayabilirsiniz.

Dürüst

Son olarak, kimlik doğrulama, bir uygulamanın kritik bir bileşenidir ve güvenirken tamamen rahat olmak isteyebilirsiniz. everyauth uzun bir liste var konularda zamanla açık ve Resurface kalır birçoğu. Kanımca, bu düşük birim test kapsamından kaynaklanıyor ve bu da, her zaman için dahili arayüzlerin uygun şekilde tanımlanmadığını gösteriyor.

Aksine, Passport'un arayüzleri ve stratejileri iyi tanımlanmıştır ve kapsamlı bir şekilde birim testleri kapsamındadır. Passport aleyhine açılan sorunlar , kimlik doğrulamayla ilgili hatalardan ziyade çoğunlukla küçük özellik talepleri olma eğilimindedir.

Daha genç bir proje olmasına rağmen, bu kalite seviyesi, ileride sürdürülmesi ve güvenilmesi daha kolay olan daha olgun bir çözümü önerir.


9
@EhevuTov> bu cevabı seçin, benimkinden çok daha eksiksiz ve gözlemlerine% 100 katılıyorum.
Paul

1
@Jared Hanson: RESTfull kimlik doğrulaması ile pasaportun nasıl kullanılacağına dair herhangi bir örneğiniz var mı?
Naor

5
Sözlerin, vanilya geri arama stilinin belirtilen faydalarını gerçekten nasıl değiştirdiğini anlamıyorum. Doğrusal bir dizi olayın ek geri aramaları tetiklediği senaryolarda hemen hemen aynı şeyi daha az kodla yapıyorsunuz.
Erik Reppen

1
@ErikReppen ile vaatlerin bu karşılaştırmada alakasız olduğunu kabul edin.
vicneanschi

İronik bir şekilde, ancak pasaportun artık çok daha fazla sorunu var: github.com/jaredhanson/passport/issues (everyauth için 273'e karşı 148).
Anton Bessonov

19

Pasaport

  • modüler ve şeffaf
  • iyi dokümanlar
  • topluluk katkıları (modülerliği nedeniyle)
  • herkesle ve köpeğiyle çalışır (yine modülerliği sayesinde)

Everyauth

  • uzun gelişme geçmişi, olgun.
  • artık bakım yapılmıyor
  • harika dokümanlar
  • geniş bir hizmet yelpazesiyle çalışır

1
Everyauth artık aktif olarak korunmuyor.
YasharF

1
@YasharF bana haber verdiğin için teşekkürler. Cevap güncellendi
Waylon Flinn

Pasaportun da artık muhafaza edilmediğine dikkat edin. Son işlevsel taahhüt 2 yıl önce yapıldı ve 300 açık sorun var.
Uri

16

Her zamankinden pasaporta geçişi yeni bitirdim. Sebepler şöyleydi.

  1. Everyauth yeterince kararlı değil. Son pipet geçen hafta, facebook kimlik doğrulamasının local.host üzerinde ve üretim ortamında çalışacağı, ancak aynı kod ve veritabanları ve yeni bir heroku uygulaması örneğiyle bile heroku'daki test ortamımda çalışmadığı gizemli bir sorunla ısırıldım. Bu noktada, sorunu nasıl izole edeceğime dair teorilerim tükendi, bu yüzden her şeyi kaldırmak mantıklı bir sonraki adımdı.
  2. Kullanıcı adı / şifre kimlik bilgilerini kullanarak standart kimlik doğrulaması için destek sağlama şekli, tek sayfalı bir web uygulaması yaklaşımıyla kolayca entegre edilemez.
  3. Google hesaplarıyla çalışmak için herhangi bir gerçek olamadım.
  4. Everyauth'un aktif gelişimi düşüşte görünüyor.

Bağlantı noktası şaşırtıcı derecede ağrısızdı ve manuel test dahil sadece birkaç saat sürdü.

Açıkçası, pasaport için gitmenizi tavsiye ederim.


Son damla net olmasa da gerçek hikaye için teşekkür ederim.
Andrew_1510

4

Önce Everyauth'u denedim ve o zamandan beri Passport'a gittim. Özellikle beni biraz daha esnek buldum. eğer (örneğin) farklı sağlayıcılar için farklı mantığa ihtiyacım varsa. Ayrıca, özel kimlik doğrulama stratejilerini yapılandırmayı (imo) kolaylaştırır. Öte yandan, sizin için önemliyse, görüntü yardımcılarına sahip değildir.


Passport.js'nin endişeleri ortadan kaldırdığını söylediğini fark ettim ve everyauth'un da benzer şekilde oluşturulup oluşturulmadığını merak ediyorum.
EhevuTov


2

Bu cevap biraz geç, ancak bu konuyu buldum ve (Everyauth hakkındaki tüm olumsuz geri bildirimleri duyduktan sonra) Passport kullanmaya karar verdim ... ve ondan nefret ettim. Opaktı, yalnızca ara yazılım olarak çalıştı (örneğin, bir GraphQL uç noktasından kimlik doğrulaması yapamazsınız) ve birden fazla hata ayıklaması zor hataya çarptım (örn. Nasıl iki Express oturumum olur? ).

Bu yüzden aramaya gittim ve https://github.com/jed/authom'u buldum . İhtiyaçlarım için burası çok daha iyi bir kütüphane! Diğer iki kitaplıktan biraz daha düşük seviyededir, bu yüzden kullanıcıyı oturuma kendiniz dahil etmek gibi şeyler yapmanız gerekir ... ama bu sadece bir satır, bu yüzden gerçekten önemli değil.

Daha da önemlisi, tasarımı size çok daha fazla kontrol sağlar ve yetkinizi Passport'un amaçladığı şekilde değil, istediğiniz şekilde uygulamanızı kolaylaştırır. Ayrıca, Passport'a kıyasla çok daha basit ve öğrenmesi daha kolay.


1

Bu gönderinin tarihini not edin, bu gönderinin ne kadar alakalı olduğunu gösterecektir.

Tecrübelerime göre, Everyauth şifre giriş stiliyle kutudan çıkmadı. Express3 kullanıyorum ve ara yazılımımı böyle beyan ediyorum app.use(everyauth.middleware(app));ve yine de her zaman yerel olarak şablonuma geçmiyor. Son gitme işlemi bir yıl önceydi ve yeni paketlerin her zamankinden daha fazla bozulduğunu düşünüyorum. Şimdi pasaportu deneyeceğim.

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.