Mi chiedo se dovrei usare il protocollo CAS o OAuth + un provider di autenticazione per il single sign-on.
Scenario di esempio:
- Un utente tenta di accedere a una risorsa protetta, ma non è autenticato.
- L'applicazione reindirizza l'utente al server SSO.
- Se viene autenticato, l'utente ottiene un token dal server SSO.
- L'SSO reindirizza all'applicazione originale.
- L'applicazione originale controlla il token sul server SSO.
- Se il token è ok, l'accesso sarà consentito e l'applicazione conosce l'id utente.
- L'utente esegue un logout e viene disconnesso da tutte le applicazioni connesse contemporaneamente (single logout).
Per quanto ho capito, è esattamente per questo che è stato inventato CAS. I client CAS devono implementare il protocollo CAS per utilizzare il servizio di autenticazione. Ora mi chiedo di usare CAS o OAuth sul sito client (consumatore). OAuth è un sostituto per quella parte di CAS? OAuth come nuovo standard di fatto dovrebbe essere preferito? Esiste una sostituzione facile da usare (non Sun OpenSSO!) Per la parte di autenticazione di CAS che supporta diversi metodi come nome utente / password, OpenID, certificati TLS ...?
Contesto:
- Applicazioni diverse dovrebbero fare affidamento sull'autenticazione del server SSO e dovrebbero utilizzare qualcosa di simile a una sessione.
- Le applicazioni possono essere applicazioni Web GUI o serivces (REST).
- Il server SSO deve fornire un ID utente, necessario per ottenere ulteriori informazioni sull'utente come ruoli, e-mail e così via da un archivio informazioni utente centrale.
- La disconnessione singola dovrebbe essere possibile.
- La maggior parte dei client sono scritti in Java o PHP.
Ho appena scoperto WRAP , che potrebbe diventare il successore di OAuth. È un nuovo protocollo specificato da Microsoft, Google e Yahoo.
appendice
Ho imparato che OAuth non è stato progettato per l'autenticazione, anche se potrebbe essere utilizzato per implementare SSO, ma solo insieme a un servizio SSO come OpenID.
OpenID mi sembra il "nuovo CAS". CAS ha alcune funzionalità mancate da OpenID (come il single logout), ma non dovrebbe essere difficile aggiungere le parti mancanti in un particolare scenario. Penso che OpenID abbia un'ampia accettazione ed è meglio integrare OpenID nelle applicazioni o nei server delle applicazioni. So che CAS supporta anche OpenID, ma penso che CAS sia superfluo con OpenID.