2010-03-23 12 views
5

Mamy aplikację REST, która jest używana głównie przez aplikacje, które nie muszą utrzymywać swojego stanu, więc do tej pory byliśmy cicho "RESTFUL" bez utrzymywania stanu. Używamy prywatny/publiczny (podobny do Amazon) dla authentication.Currently klient przechodzi poświadczenia dla każdego żądaniaSposób na utrzymanie sesji w aplikacji REST

teraz mamy nowy wymóg gdzie musimy utrzymać stan (lub rozmowy) .Powierzchnia klient może być Bogata aplikacja lub ręczne urządzenie. Próbuję uzyskać najlepszy sposób implementacji stanu. Czy powinniśmy przekazać identyfikator sesji i utrzymywać, że ID ... jest najlepszym i jedynym rozwiązaniem?

+2

Dlaczego aplikacja RIA lub urządzenie przenośne nie może utrzymywać sesji i uzyskać zasobów z serwera REST? Po co łamać podstawowe zasady REST? Dlaczego nie wepchnąć stanowej sesji tam, gdzie ona należy - w ludzkim interfejsie? –

+0

Dobre pytanie, czy dobrze z poświadczeniami wysyłanymi na każde żądanie, po którym następuje uwierzytelnianie, które wydaje się być oprowadzaczem dla niektórych moich pracowników w zespole. – romanianGeek

+0

Uwierzytelnienie można łatwo buforować po stronie serwera i zadać niemal zerowe kary za wydajność. – Gandalf

Odpowiedz

3

Przekazywanie identyfikatora sesji nie jest jedynym sposobem, a nie najlepszym sposobem utrzymania stanu konwersacji. Najlepszym sposobem, jeśli masz OSR, jest utrzymanie stanu na samym kliencie, gdzie należy, jak sugerują niektóre komentarze. Oznacza to, że nadal wysyłasz referencje za każdym razem.

Re-authentication na każde żądanie jest jedynym sposobem, i jeśli czujesz, że nie jest to wydajność hit na serwerze, serwer może (jak sugerowano) buforować wynik żądania uwierzytelnienia przez okres czasu. Digest authentication może pomóc uniknąć buforowania odpowiedzi przez kryptograficzne podpisywanie tokenów przechodzących przez przewód.

Jeśli to nie wystarczy, możesz użyć czegoś podobnego do Google ClientLogin i podać klientowi zaszyfrowany token, który można zweryfikować bez konieczności żądania autoryzacji, i bez przekazywania prawdziwych danych uwierzytelniających użytkownika przez kabel. Sami to robią, logując się przez https, a następnie używając wygenerowanych tokenów przez http. Jest otwarty na ataki powtórki na czas życia tokena.

+0

+1 Dla łącza do uwierzytelniania skrótów. – Triztian

Powiązane problemy