Disseram-me que é possível criar um aplicativo Web que não exija login. O usuário efetua login no Windows, que é autenticado por meio de uma pesquisa do Active Directory (LDAP). Em seguida, eles devem poder acessar meu aplicativo da web e nunca ver um prompt de login. Esses clientes estão se referindo a isso como Logon único (talvez incorretamente e parte da minha confusão).
Mas, pelo que li o Logon único nos documentos do Tomcat, é:
A Válvula de Logon Único é utilizada quando você deseja oferecer aos usuários a capacidade de conectar-se a qualquer um dos aplicativos Web associados ao seu host virtual e, em seguida, ter sua identidade reconhecida por todos os outros aplicativos Web no mesmo host virtual.
Isso está perfeitamente claro para mim. O usuário precisa fazer login uma vez e pode acessar todos os aplicativos da web em uma instância do tomcat. Mas o que preciso fazer é, de alguma forma, permitir que eles entrem sem fornecer credenciais ao meu servidor tomcat.
Então, para que isso funcione, imagino:
- Usuário faz solicitação para alguma página
- O servidor não vê nenhum token de sessão e solicita ao cliente algumas credenciais.
- O navegador do cliente sem nenhuma intervenção do usuário fornece algumas credenciais ao servidor.
- Em seguida, usando essas credenciais fornecidas pelo navegador do cliente, ele faz uma pesquisa em um LDAP.
Eu já vi alguns exemplos que usam certificados do lado do cliente ... particularmente o sistema DoD PKI que faz algum sentido para mim, porque nesses casos você configura o Tomcat para solicitar certs do lado do cliente , mas apenas acessando janelas, não vejo como isso funcionaria e quais informações o navegador passaria para o servidor etc. É para isso que o NTLM é usado?
Em um ambiente Windows Active Directory, o Logon único é usado para significar que visitar uma página da Web interna carrega suas permissões de login do Windows e o servidor da Web pode agir sobre elas. É para isso que o NTLM é usado, mas implementações mais recentes usam o Kerberos.
Se você abrir um site do Sharepoint Server, ele sabe quem você é sem precisar de um nome de usuário e senha de login, mas isso funciona apenas para sites internos na mesma rede, não acho que faça muito sentido trabalhar em um site público. (Não sei dizer se você quer dizer "host virtual" como em um vhost Apache ou em um servidor hospedado terceirizado).
Aqui está um documento da Microsoft que descreve como a autenticação Kerberos funciona em um servidor Web executando o IIS / ASP.Net: http://msdn.microsoft.com/en-us/library/ff647076.aspx
Parece possível fazer com Apache / Tomcat / Java. Aqui está um PDF descrevendo uma implementação da Universidade do Reino Unido disso: http://gfivo.ncl.ac.uk/documents/UsingKerberosticketsfortrueSingleSignOn.pdf e um projeto Codeplex para isso: http://tomcatspnego.codeplex.com/ e Openfire têm alguns documentação relacionada ao trabalho geral com Java / Kerberos aqui ( http://community.igniterealtime.org/docs/DOC-1060 ).
fonte
Parece que você está descrevendo o que a Microsoft chama de Autenticação Integrada do Windows.
Parece que o Tomcat suporta autenticação do Windows, com base neste artigo .
fonte
Para iniciantes, você não pode evitar o login. Se você deseja identificar usuários, é necessário que eles façam login. Esqueça o NTLM, o Kerberos vem em socorro - ele pode fazer tudo de uma maneira completamente transparente.
O SingleSignOnValve não é o que você está procurando. Se você usa o Tomcat 7, pode usar o SpnegoAuthenticator imediatamente, mas no 6 é necessário usá- lo .
fonte