Gostaria de saber se devo usar o protocolo CAS ou OAuth + algum provedor de autenticação para logon único.
Cenário de exemplo:
- Um usuário tenta acessar um recurso protegido, mas não é autenticado.
- O aplicativo redireciona o usuário para o servidor SSO.
- Se estiver autenticado, o usuário receberá um token do servidor SSO.
- O SSO redireciona para o aplicativo original.
- O aplicativo original verifica o token no servidor SSO.
- Se o token estiver ok, o acesso será permitido e o aplicativo saberá o ID do usuário.
- O usuário faz um logoff e é desconectado de todos os aplicativos conectados ao mesmo tempo (logon único).
Pelo que entendi, foi exatamente para isso que o CAS foi inventado. Os clientes CAS precisam implementar o protocolo CAS para usar o serviço de autenticação. Agora, estou pensando em usar o CAS ou OAuth no site do cliente (consumidor). O Outh é um substituto para essa parte do CAS? O OAuth como um novo padrão de fato deve ser preferido? Existe uma substituição fácil de usar (não o Sun OpenSSO!) Para a parte de autenticação do CAS que suporta métodos diferentes como nome de usuário / senha, certificados OpenID, TLS ...?
Contexto:
- Aplicativos diferentes devem confiar na autenticação do servidor SSO e devem usar algo parecido com uma sessão.
- Os aplicativos podem ser aplicativos da web da GUI ou serviços (REST).
- O servidor SSO deve fornecer um ID do usuário, necessário para obter mais informações sobre o usuário, como funções, email etc. em um armazenamento central de informações do usuário.
- A saída única deve ser possível.
- A maioria dos clientes é escrita em Java ou PHP.
Acabei de descobrir o WRAP , que pode se tornar o sucessor do OAuth. É um novo protocolo especificado pela Microsoft, Google e Yahoo.
Termo aditivo
Aprendi que o OAuth não foi projetado para autenticação, mesmo que pudesse ser usado para implementar o SSO, mas apenas junto com um serviço SSO como o OpenID.
O OpenID me parece ser o "novo CAS". O CAS possui alguns recursos que o OpenID perde (como o logoff único), mas não deve ser difícil adicionar as partes ausentes em um cenário específico. Eu acho que o OpenID tem ampla aceitação e é melhor integrar o OpenID em aplicativos ou servidores de aplicativos. Eu sei que o CAS também suporta OpenID, mas acho que o CAS é dispensável com o OpenID.