2012-10-03 10 views
6

Jestem projektowania Service Oriented Architecture, a ja też potrzebują usługi uwierzytelniania w celu rozpoznania klientów i umożliwić im dostęp do zasobów.SOA - Authentication Service projekt

Właściwie znalazłem dwa możliwe rozwiązania:

  • znak każdego pojedynczego żądania za pomocą pubkey i PrivateKey
  • tokenów uwierzytelniania przy użyciu pubkey i PrivateKey

nie jestem zakładając OAuth2 usługi, ponieważ spowodowałoby to zbyt dużo narzutów w projektowaniu systemu dla moich potrzeb, zamiast tego wolę przyjąć prostsze (ale także mocne) rozwiązanie uwierzytelniające.

Więc przychodzę z moim AuthenticationService, który może być zapytany przez klienta, który składa żądanie API (uzyskanie tokena do przekazania obok żądania) lub może być zapytany przez każdy pojedynczy punkt końcowy API, aby wykonać odwrotną kontrolę HMAC który podpisał żądanie, aby sprawdzić, czy pasuje (sprawdzając, czy klucz prywatny użyty do wytworzenia HMAC był ważny).

widzę najnowszy być prostsze końcowego dewelopera wykonywania kilku operacji, ale to także wymaga więcej kontroli, aby sprawdzić poprawność tokenu i obsługiwać to wydech ...

jakie potencjalne kwestie bezpieczeństwa mogą token rozwiązanie podnieść, że HMAC z pojedynczym żądaniem nie działa? Co wolisz i być może dlaczego?

+0

co masz na myśli z _SOA authentication_ ?? budujesz swój własny pakiet SOA? SOA jest związkiem wielu technologii (Messaging, Web Services, BPEL, itp.), Pakiet SOA, którego będziesz używać, powinien zapewnić ci już przygotowane środki do uwierzytelniania użytkowników na każde żądanie, niezależnie od tego, czy pochodzą spoza ESB, czy wewnątrz tego. –

+0

Mam na myśli, że cała architektura jest budowana zorientowana na usługi. Wszystkie usługi muszą rozpoznać użytkownika, aby umożliwić/odrzucić żądanie, więc potrzebuję uwierzytelnienia, które również będzie niezależną usługą. –

+0

@AlonsoDominguez Edytowałem treść posta, masz rację, może to nie może być jasne, jak "Uwierzytelnianie SOA". –

Odpowiedz

7

Na koniec wreszcie zaprojektowany usługę uwierzytelniania oparty na tym samym roztworze Amazon. Wymaga od użytkowników podpisania każdego żądania za pomocą klucza prywatnego. Tak więc, żądanie wyśle ​​nagłówek autoryzacji z wartością "PUBKEY: SIGNATURE", gdzie podpis jest HMAC złożony z dowolnych danych żądania (może to być sama treść żądania) oraz znacznik czasu, który należy przekazać wewnątrz nagłówka Date. Ta implementacja jest wystarczająco silna, aby uniknąć MITM i powtórzyć ataki.

Aby uzyskać więcej informacji na temat tego rozwiązania here jest doskonałym wytłumaczeniem, że pomógł mi wiele do zrozumienia rzeczywistej realizacji.

Nadzieja to naprawdę pomóc komuś w świecie w obliczu tego samego problemu.

+3

Byłem bardzo zaskoczony w ciągu ostatnich 6 miesięcy, że niewiele osób mówi o tym dokładnie problemu. Jest oczywiście mnóstwo dyskusji na temat uwierzytelniania i autoryzacji pojedynczych aplikacji i ich serwisów internetowych, a także tożsamości federacyjnej przy użyciu ciężkich rzeczy, takich jak Kerberos, CAS, SAML itd. Wracam do tego, aby zmusić OAuth do pracy dla tego typu rzeczy . Czy rozważałeś OAuth? Co spowodowało, że zamiast tego wdrożyłeś własne rozwiązanie? –