Pergunta

Acredito que podemos permitir que o Firefox envie dados NTLM para sites do SharePoint para fazer autenticação automática, e acho que isso é possível com o IIS.

Eu gostaria de fazer a mesma coisa com um site Rails interno.

Alguém sabe como eu poderia autenticar informações do usuário do tipo NTLM por meio de uma configuração Apache/mongrel (desde que já esteja sendo executado em uma caixa do Windows dentro de um domínio do Active Directory)?

Foi útil?

Solução

Suponho que você já tenha elaborado quais cabeçalhos HTTP você precisa enviar para obter o Firefox e o IE para enviar de volta o material de autenticação do NTLM, e está apenas precisando lidar com isso no lado do servidor?

Você poderia usar alguns dos rubi Bibliotecas Win32 Para acessar as funções de autenticação do Windows subjacentes que lidam com o NTLM.

Eu sugeriria que o caminho de menor resistência possa ser para ver se existe um componente com que pode fazer a autenticação para você e, se sim, usá -lo usando a biblioteca Win32ole Ruby.

Se não houver componente COM, você poderá encontrar algo em uma dessas outras bibliotecas que podem invocar os métodos nativos do Win32 para você.

Se você não conseguir encontrar isso, teria que escrever uma extensão Ruby C. Eu fiz isso no Linux, e estender o Ruby é muito fácil, mas você pode achar um pouco doloroso a API de autenticação do Microsoft.

Espero que você inicie o caminho certo :-)

Outras dicas

eu criei tutorial sobre como instalar o módulo mod_ntlm corrigido para Apache no Linux e como passar o nome de usuário autenticado NTLM para Rails e como criar uma sessão Rails a partir disso.Portanto, você não precisa do servidor Windows para executar o aplicativo Rails.

Lá você também pode descobrir como ativar a autenticação NTLM automática no Firefox - digite "about:config" no campo de localização e pesquise "network.automatic-ntlm-auth.trusted-uris".Lá você pode inserir servidores para os quais gostaria de usar a autenticação NTLM automática.

Um pouco de informação extra, caso alguém tropeça nesse sentido.

Eu queria fazer algo que eu achei que deveria ser bem simples - extrair o nome de usuário do Windows Usuários usando o NTLM de um aplicativo Rails em execução no MonGrel/Windows (instantrails na verdade). Tendo escrito o código básico Gerenciar as várias operações de handshaking (usando a Great Ntlmruby Library em http://rubyforge.org/projects/rubyntlm/) e, tendo conseguido funcionar maravilhosamente no Firefox, fiquei um pouco frustrado ao encontrar o IE não funcionando.

O MonGrel não suporta alivamentos durante a troca de mensagens Type1/2/3 (pelo menos nativamente, acredito que há um hack/correção para ele), o que o IE exige e o Firefox passa sem.

Portanto, a autenticação de um servidor Rails em execução no Windows contra um serviço NTLM remoto (por exemplo, SharePoint ou outro site) é razoavelmente direto, mas a autenticação de um navegador do IE contra um servidor Rails em execução no Windows não muito com o MonGrel. O IIS seria uma opção, assim como o Apache básico com o FastCGI. O primeiro se sente um pouco desajeitado e o último não será tão rápido quanto o Mongrel.

Você também pode usar o Módulo Apache NTLM, que deve passar um cabeçalho para o seu aplicativo com o nome de usuário do usuário autenticado. Esse módulo parece um pouco velho, mas sugere alguns outros módulos que podem atender às suas necessidades.

Pergunta antiga que eu sei, mas me deparei com isso procurando uma resposta semelhante.

Você pode usar os métodos descritos aqui (http://blog.rayapps.com/2008/12/02/ntlm-windows-domain-authentication-for-rails-application/). No entanto, mod_ntlm é para autenticação do Windows em uma máquina UNIX/Linux. MOD_AUTH_SSPI é o que você precisará para a autenticação WinNT do Apache no Windows.

Este projeto em particular parece promissor e está procurando colaboradores:

Eu ainda não experimentei isso. No momento, planejo implementar a solução de Raimonds, pois parece ter muito sucesso.

Verificação de saída Waffle. Ele fornece SSO no Windows para servidores Java usando a API Win32. Existem vários filtros implementados (servlet, válvula tomcat, segurança da mola).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top