2013-05-10 14 views
7

Jestem trochę zagubiony z nadmiarem informacji i potrzebuję wskazówek na temat najlepszego sposobu, w jaki mogę wesprzeć zapewnianie dostępu API tylko zaufanym klientom.Scentralizowany dostawca API - oAuth czy nie?

Aktualny środowiska:

Mamy scentralizowany serwer, który obsługuje użytkownika uwierzytelniania/autoryzacji poprzez Apache Shiro.
Posiadamy wewnętrzne interfejsy API, które wewnętrznie komunikują się ze scentralizowanym serwerem w celu uwierzytelniania i zarządzania tokenami. (W ten sposób umożliwiając SSO).

Komunikacja między naszymi aplikacjami klienckimi i interfejsami API jest zabezpieczona przez SSL.
Użycie uwierzytelniania za pomocą tokena.

docelowa:

Naszym celem jest umożliwienie aplikacji 3rd Party i API do komunikacji z naszym scentralizowanego serwera uwierzytelniania. Ale naszą główną troską jest wyłudzanie informacji, ponieważ chcemy tylko, aby "ważne" strony komunikowały się z nami, a najlepiej nie zezwalają na ujawnianie informacji uwierzytelniających stronie trzeciej.

Pytania:

1- Jaki jest najlepszy sposób, aby wdrożyć taką architekturę? Czy powinniśmy postępować z OAuth? Jeśli tak, czy istnieje dobry sposób na integrację z Shiro?

2- Czy OAuth wykonałby swoją pracę również na aplikacjach mobilnych? (np. Ogranicz dostęp do REST API, chyba że aplikacja jest zaufana)

3- Czy istnieje biblioteka dostawców OAuth, której mogę używać w Javie, czy też OAuth to po prostu "standard", który muszę sam wdrożyć? (Takie jak na przykład implementowanie API RESTful)

4- Czy SSO jest łatwo obsługiwane przez OAuth?

Przepraszamy za nieokreślone pytania. Potrzebuję tylko ogólnych wskazówek i porad.

+0

2) Moje pytanie brzmi - dlaczego OAuth nie powinien działać na urządzeniach mobilnych? :) Nie widzę powodu, dlaczego nie powinien tam pracować. – Dworza

+0

Czy Shibboleth jest opcją? Wygląda na to, że integruje się również z aplikacjami mobilnymi i ma nieco bardziej spójny interfejs API niż OAuth. [zobacz to pytanie SO na ten temat] (http://stackoverflow.com/questions/1935011/integrating-iphone-application-with-shibboleth) – David

+0

Czy jest to wymagane, aby Twoi użytkownicy mogli przyznać/odmówić dostępu do ich danych przez te aplikacje innych firm? – Perception

Odpowiedz

2

Oto moje odpowiedzi w porządku,

  1. OAuth 2.0 to najlepiej pasuje do ciebie. Powiedziałbym, że powinieneś wybrać OAuth.
  2. Zdecydowanie tak.
  3. Istnieją biblioteki. Apache Oltu i Google client library.
  4. Specyfikacja OpenID Connect zbudowana na bazie OAuth może zostać wykorzystana do wdrożenia SSO.
+0

dziękuje divyanshm za edycję – SureshAtt

+0

Dokumentacja biblioteki klienta Google określa, że ​​"ta biblioteka jest łatwą w użyciu i wydajną biblioteką klienta Java do uzyskiwania dostępu do interfejsów API Google przy użyciu JSON i OAuth 2.0.". Zgubiłem się, myślałem, że to będzie biblioteka do wdrożenia mojego własnego dostawcy OAuth? – SiN

+0

Czy próbowałeś Oltu? – SureshAtt

2
  1. Aplikacje mobilne działają doskonale z OAuth.
  2. Jednokrotne logowanie można włączyć za pomocą protokołu OAuth.

Kilka informacji o tym, jak skonfigurować serwer OAuth/Provider - How would an efficient OAuth2.0 server/provider work?

jak mówisz, trzeba poprosić użytkownika o zgodę aplikację (przyjmuję/zaprzeczyć uprawnienia aplikacja prosi o) - idealne zastosowanie dla OAuth 2.0.

Jeśli chcesz uzyskać więcej informacji na temat działania usługi OAuth, proszę o kontakt.

PS - Nie mam pojęcia o integracji z Shiro.

Powiązane problemy