Antes de mais nada - e no caso de outros usuários acessarem esta página - existem apenas alguns métodos de autenticação que permitem fazer SSO sem aviso prévio. Estes são NTLM e Kerberos . Por outro lado, o LDAP nunca fornecerá SSO sem aviso prévio.
O NTLM é na verdade NTLMv1 e NTLMv2. Eles são muito diferentes e o NTLMv1 é obsoleto devido a sérios problemas de segurança. Você deve se afastar das soluções de autenticação Java que não conseguem identificar corretamente se elas suportam NTLMv1 ou NTLMv2 porque elas usam somente a palavra "NTLM" em sua documentação. As chances são de que o desenvolvedor da solução de segurança não se conheça, o que é mais um motivo para procurar a saída de incêndio.
Ao contrário da crença tradicional, NTLMv1 e NTLMv2 são totalmente documentados pela Microsoft, mas você ainda encontrará soluções que afirmam ter "engenharia reversa" do protocolo. É verdade que isso era necessário antes da Microsoft documentar os protocolos que acredito por volta de 2006 ou 2007. De qualquer forma, o NTLMv1 é um não-não. Não há nada errado com o NTLMv2 per-se, mas a Microsoft tem desativado o NTLM (em qualquer formato) em todos os seus produtos em favor da autenticação Kerberos. NTLMv1 está morto há muito tempo e o NTLMv2 agora é usado apenas pela Microsoft nos casos em que nenhum controlador de domínio está disponível. Resumindo: NTLM (em qualquer forma) não é realmente o caminho a seguir. Na verdade, devemos saudar a Microsoft por adotar uma abordagem baseada em padrões aqui.Isso deixa você com o Kerberos. A Microsoft criou um protocolo para negociar e transportar informações de autenticação por HTTP. Isso é conhecido nos produtos da Microsoft como " Autenticação Integrada do Windows ", mas foi definido como um padrão oficial sob o nome de SPNEGO . É isso que você deveria estar procurando. O SPNEGO suporta o NTLMv2 e o Kerberos como o mecanismo de autenticação subjacente, mas pelas razões acima, você deve estar direcionando o Kerberos em vez do NTLMv2.
Integrei com sucesso vários aplicativos do Tomcat (em execução no Linux / Solaris) com o Active Directory usando o Projeto SPNEGO no SourceForge . Eu encontrei esta para ser a abordagem mais simples. Isso oferece um SSO sem prompt similar ao que, por exemplo, um servidor Sharepoint faz. Provavelmente, isso é o que seus usuários esperam quando falam sobre "SSO". Acertar a configuração do Kerberos, gerar chaves e configurar contas 'fictícias' no Active Directory pode ser um incômodo, mas, depois de acertar, funciona como um encanto.
A única coisa que eu não gosto sobre o Projeto SPNEGO no SourceForge é que eu não entendo quantas vezes ele realiza a autenticação. Minha suspeita desagradável é que ele faz isso para cada exibição de página, em vez de uma vez para cada sessão. Talvez eu esteja errado nisso. De qualquer forma: isso destaca outra coisa a considerar em soluções de SSO: você não quer implementar uma solução que "spams" seu provedor de identidade (digamos, o Active Directory) com solicitações desnecessárias.