hasło jednorazowe (aka jednorazowego użytku żeton) Strategia dla resetowania hasła jest coś, co będę wykonawczych. Biorąc pod uwagę architekturę Passport, może to być osobny moduł i nie zdziwiłoby mnie, gdy dowiedziałem się, że ktoś już wdrożył takie rozwiązanie.
Pamiętaj, że funkcja obsługi tokenów trwałych to także coś, co chciałbym wesprzeć. Najlepiej, bym to była osobna strategia, ale może potrzebować jakiegoś podstawowego wsparcia. Jeśli tak się stanie, kilka dodatkowych linii w req.logIn
(https://github.com/jaredhanson/passport/blob/master/lib/passport/http/request.js#L28) powinno być w stanie go pokryć.
Jeśli chodzi o przechowywanie identyfikatora użytkownika w sesji, nie widzę dużego ryzyka, ponieważ domyślnie w usłudze Connect/Express właściwości sesji są przechowywane w całości i sprawdzane przez unikatowy zestaw sid
, który jest ustawiony w zaszyfrowanym pliku cookie. Złośliwy użytkownik musiałby posiadać zarówno unikalny sid, jak i sekret sesji w celu sfałszowania żądań.
Mozilla korzysta z usługi Passport w ramach zarządzania tożsamością, aby połączyć BrowserID z innymi dostawcami, którzy nie mają obsługi BrowserID (patrz browserid-bigtent). Biorąc pod uwagę ich wymagania, programiści mogą być pewni, że Passport spełnia surowe wymagania bezpieczeństwa.
(Ostatecznie serializacja sesji w usłudze Passport jest odpowiedzialnością aplikacji, więc zamiast bezpieczeństwa można użyć losowego tokena zamiast identyfikatora użytkownika, jeśli jest to pożądane ze względów bezpieczeństwa. Oczywiście należy to zrobić, jeśli dane są przechowywane bezpośrednio w pliku cookie, ale " d sugerują, że jest to najbardziej nieupoważnione podejście.)
Jeśli chodzi o zarządzanie tymi właściwościami w modelu, usługa Passport została zaprojektowana jako całkowicie agnostyczna dla modelu/ORM. Nie zamierzam nigdy zmieniać tego faktu, ponieważ uważam, że decyzje te najlepiej pozostawić aplikacji (a Paszport jest bardziej elastyczny w wyniku delegowania tej odpowiedzialności). Mimo to uważam, że jest miejsce na inne moduły, które można niezależnie budować na podstawie usługi Passport, aby zapewnić taką funkcjonalność.
Wszystko, co powiedziałem, myślę, że Passport jest najsolidniejszym z istniejących auth rozwiązań Node.js.Twoje pierwsze trzy prośby znacznie ułatwiłyby to zadanie i powinny być łatwe do zrealizowania. Chciałbym współpracować przy wprowadzaniu tych funkcji, więc nie wahaj się skontaktować ze mną.
Wreszcie, na wypadek, gdyby ktoś był ciekawy, uwierzytelnianie API pierwszej klasy jest obecnie w pracach, w oddziale authinfo. W oparciu o to, passport-http-oauth implementuje strategie serwera OAuth, które można łączyć z oprogramowaniem pośredniczącym oauthorize jako zestawem narzędzi do składania serwerów OAuth. To jeszcze nie jest w pełni upieczone, ale będzie to kolejna skuteczna funkcja Paszportu, gdy będzie gotowa.
Domyślam się, że nie jest to trudne do zrealizowania, wystarczy, że już istnieje. –
Połączyłem strategię "zapamiętaj mnie": https://github.com/jaredhanson/passport-remember-me –