Konfiguruję nową usługę sieci Web RESTful i muszę zapewnić oparty na rolach model kontroli dostępu . Muszę stworzyć architekturę, która pozwoli użytkownikom podać swoją nazwę użytkownika i hasło, aby uzyskać dostęp do usług, a następnie ograniczyć sposób, w jaki mogą korzystać z usług (z których usług mogą korzystać, czytać a czytać / pisać itp.) W zależności od ról przypisany do tych użytkowników.
Rozejrzałem się wokół innych pytań i znalazłem fragmenty tego, czego chcę. Na przykład istnieje kilka świetnych dyskusji na temat obsługi przekazywania poświadczeń usługom REST restful-authentication , najlepsze praktyki . Istnieją również świetne wskazówki na temat tego, co programiści powinni wiedzieć podczas tworzenia stron internetowych ( co każdy programista powinien wiedzieć przed budowaniem publicznej strony internetowej ).
Ale nie udało mi się znaleźć dobrego wpisu, artykułu, książki na temat najlepszych praktyk i wzorców dla architektury oprogramowania, która implementuje te rozwiązania.
Konkretnie:
- Jak należy przechowywać dane użytkownika i prawa dostępu? (model danych, lokalizacja, format)
- Jakie są dobre wzorce projektowe do reprezentowania i śledzenia ich na serwerze? (sesje w pamięci, wyszukiwania bazy danych za każdym razem itp.)
- Jakie są dobre wzorce mapowania tych praw do usług w bezpieczny sposób w bazie kodu?
- Jakie rozwiązania architektoniczne mogą pomóc w zapewnieniu bezpieczeństwa i niezawodności systemu?
- Czego się nauczyli ludzie z okopów?
Szukam wzorców projektowych i rekomendacji dla architektury oprogramowania poza konkretnymi technologiami.
(Jeśli technologie mają znaczenie, planuję wdrożyć to za pomocą Pythona, Twisted i bazy danych Postgresql)
Odpowiedzi:
OpenAM.
http://forgerock.com/openam.html
Menedżer tożsamości. Oddziel od dowolnego serwera WWW. Oparte na LDAP.
Rozwiązane przez ramy. Nie myśl więcej. Po prostu użyj już zbudowanych dobrych wzorców projektowych.
Rozwiązane przez ramy. Każda struktura wykorzystuje nieco inne podejście. Każdy język ma nieco inne funkcje. Na przykład Django mocno wykorzystuje do tego dekoratory Pythona.
Więcej? Więcej niż co?
źródło