W którym momencie zaczyna się OAuth 2.0, a w którym OpenID?

0

Cześć,

Chciałem sobie zrobić prosty(chyba :>) interaktywny czat z widokiem w JS + backend w Javie. Zacząłem od security, a w zasadzie od logowania przy użyciu konta google. Wiadome mi, że OAuth służy do sprawdzeniu, czy dana operacja dla danego użytkownika jest dozwolona ( w moim przypadku będzie to dodawanie pokoi w czacie na podstawie roli ), zaś OpenID do logowania przy właśnie użyciu np konta google/GH/FB.
Chciałem przy okazji zrobić tak aby każdy miał domyślną rolę i nie dodawał nowych pokoi w czacie, a mógł to zrobić tylko ktoś z rolą admin,a nie user stąd muszę wyciągnąć skądś ( chyba z obiektu Authentication? ) takie detale.
Kojarzę, że można by tutaj jeszcze coś z tokenem pokombinować ale nie za bardzo wiem o co chodzi :x Osobny serwis który sprawdzi token który otrzymuje od np. google po zalogowaniu i na podstawie tego tokenu będę wyciągał z niego potrzebne informację np. imię i od razu nadawał w mojej aplikacji jako login widoczny przy wysyłaniu wiadomości na czacie? Ciężko mi to wszystko zrozumieć aby wybrać dobrą drogę do nie zepsucia tej apki już na starcie..
Słyszałem, że ludzie zacierają granice albo używają OpenID do niewłaściwych celów. OAuth 2.0 i OpenID - stąd moje pytanie w którym momencie (w w/w aplikacji pojawiają się te techniki)/i ew. jak mam to w ogóle zrobić mam użyć tych technik aby nie zrobić źle :D

Dzięki!

3

Generalnie musisz poskładać do kupy kilka rzeczy:

  1. OpenID jest oparte na OAuth, można to rozumieć jako taki ustandaryzowany, best practices OAuth
  2. To co dostajesz od swojego OAuth providera (Google, GH, FB) to podstawowe informacje o użytkowniku, który chce korzystać z aplikacji (imię, nazwisko, email)
  3. W tokenie, który wraca od OAuth providera nie ma dodatkowych informacji np. uprawnień
  4. Uprawnienia dla różnych użytkowników (np. admina) musisz trzymać u siebie w aplikacji

Podsumowując, wydaje mi się, że dla zwykłych użytkowników (piszących tylko na czacie) wystarczy to co zwróci OAuth provider.
Dla admina musisz gdzieś umieścić informację o jego uprawnieniach. Jeśli nie chcesz inwestować w panel zarządzania użytkownikami do może jakaś lista adminów w propertisie?

Wspomniałeś o obiekcie Authentication: twoja aplikacja jest napisana w oparciu o Spring? Jeśli tak to polecam skorzystać z modułu Spring Security dla OAuth2. Wtedy Spring automatycznie wstawi potrzebne informacje do Authentication.

Jeśli nie korzystasz ze Springa to i tak powinieneś użyć jakiejś biblioteki do OAuth2.

1 użytkowników online, w tym zalogowanych: 0, gości: 1