Zastanawiam się, czy powinienem używać protokołu CAS lub OAuth + jakiegoś dostawcy uwierzytelniania do pojedynczego logowania.
Przykładowy scenariusz:
- Użytkownik próbuje uzyskać dostęp do chronionego zasobu, ale nie jest uwierzytelniony.
- Aplikacja przekierowuje użytkownika na serwer SSO.
- W przypadku uwierzytelnienia użytkownik otrzymuje token z serwera SSO.
- SSO przekierowuje do oryginalnej aplikacji.
- Oryginalna aplikacja sprawdza token na serwerze SSO.
- Jeśli token jest prawidłowy, dostęp zostanie udzielony, a aplikacja będzie znała identyfikator użytkownika.
- Użytkownik dokonuje wylogowania i zostaje wylogowany ze wszystkich połączonych aplikacji w tym samym czasie (wylogowanie jednokrotne).
O ile rozumiem, właśnie po to został wymyślony CAS. Klienci CAS muszą zaimplementować protokół CAS, aby korzystać z usługi uwierzytelniania. Teraz zastanawiam się nad używaniem CAS lub OAuth w witrynie klienta (konsumenta). Czy OAuth zastępuje tę część CAS? Czy należy preferować OAuth jako nowy faktyczny standard? Czy istnieje łatwy w użyciu (nie Sun OpenSSO!) Zamiennik części uwierzytelniającej CAS obsługujący różne metody, takie jak nazwa użytkownika / hasło, OpenID, certyfikaty TLS ...?
Kontekst:
- Różne aplikacje powinny polegać na uwierzytelnianiu serwera SSO i powinny używać czegoś podobnego do sesji.
- Aplikacje mogą być aplikacjami sieciowymi GUI lub usługami (REST).
- Serwer SSO musi mieć identyfikator użytkownika, który jest niezbędny, aby uzyskać więcej informacji o użytkowniku, takich jak role, poczta e-mail itp. Z centralnego magazynu informacji o użytkowniku.
- Pojedyncze wylogowanie powinno być możliwe.
- Większość klientów jest napisana w języku Java lub PHP.
Właśnie odkryłem WRAP , który może zostać następcą protokołu OAuth. Jest to nowy protokół określony przez Microsoft, Google i Yahoo.
Uzupełnienie
Dowiedziałem się, że OAuth nie został zaprojektowany do uwierzytelniania, nawet może być używany do implementacji SSO, ale tylko razem z usługą SSO, taką jak OpenID.
Wydaje mi się, że OpenID to „nowy CAS”. CAS ma pewne funkcje, które pomija OpenID (takie jak pojedyncze wylogowanie), ale dodanie brakujących części w określonym scenariuszu nie powinno być trudne. Myślę, że OpenID ma szeroką akceptację i lepiej jest zintegrować OpenID z aplikacjami lub serwerami aplikacji. Wiem, że CAS obsługuje również OpenID, ale myślę, że CAS jest zbędny w przypadku OpenID.