2013-04-23 21 views
5

Rozważam opracowanie aplikacji, która udostępnia usługi przy użyciu usługi REST. Usługi te będą dostępne za pośrednictwem przeglądarki i klientów spoza przeglądarki. Spodziewam się, że będzie kilka instalacji tego oprogramowania, które są własnością i zarządzane przez różne grupy. Chcę umożliwić użytkownikom z jednego systemu dostęp do usług na innym. Nie będą udostępniać tego samego magazynu tożsamości. Chciałbym, aby użytkownik mógł uwierzytelnić się w swojej instancji, a następnie użyć tokena do wysyłania żądań do ich instancji i zdalnych instancji. Wydaje się, że jest to dobry użytek z JSON Web Tokens (JWT). Każdy system musiałby być skonfigurowany tak, aby ufał sobie nawzajem tokenom, które są podpisane przez certyfikaty.Uwierzytelnianie/autoryzacja usług REST przy użyciu identyfikatorów stowarzyszonych JWT

Przeczytałem, że można to zrobić za pomocą OAuth z tokenami na okaziciela JWT, ale wydaje się, że jest to bardziej narzutowy niż jest to konieczne. Po co wymieniać token na okaziciela na token dostępu zamiast używać tylko tokenów na okaziciela? Zastanawiam się, czy OAuth jest dobrym rozwiązaniem, niezależnie od tego, czy nie kontroluje, czy system może uzyskać dostęp do danych użytkownika w innych miejscach, jak wiele przykładów w Internecie, ale czy ma dostęp do danych przechowywanych w systemie.

Następną częścią problemu jest ustalenie sposobu tworzenia tych tokenów JWT, wydaje się, że byłoby to coś w rodzaju WS-Trust STS. Nie widziałem takich, które są proste i po prostu uwierzytelniają użytkowników i zwracają tokeny. Potencjalnie przydatne może być również przedłużenie wygaśnięcia tokena i zatwierdzenie tokenów?

W przeszłości byłem w stanie włączyć ten typ możliwości za pomocą SOAP z WS-Security i SAser Assuranceions. Chcę sprawdzić, czy to samo można osiągnąć za pomocą tokenów REST i JWT. W Internecie jest wiele postów doradzających przeciwko rozwijaniu własnego systemu zabezpieczeń, więc byłem trochę niezdecydowany, aby iść naprzód. Widziałem, że Microsoft dodał opiekunów, aby dbać o ochronę usług za pomocą tokenów JWT, więc wydaje się, że widzą pewną wartość w tym podejściu.

Czy ktoś ma wgląd w sposoby realizacji tego rodzaju federacji tożsamości dla usług REST w sposób zgodny ze standardami i prosty sposób?

Odpowiedz

4

Tak, to jest podejście, które polecam moim klientom. W rzeczywistości JWT jest sposobem, w jaki usługi Windows Azure Mobile zabezpieczają swoje punkty końcowe. JWT są stosunkowo proste w obsłudze (na przykład w porównaniu do tokenów SAML), ale zachowują interesujące właściwości w porównaniu do access_tokens (jak na przykład podpis).

This doc pokazuje przykład jak to zrobić z WebApi i naszym produktem (jeśli używasz technologii MS). Zasady są jednak ogólne i można je stosować niezależnie od tego, czy korzystasz z naszego STS, czy nie.