SPNEGO/Kerberos
O LumisXP inclui uma implementação de autenticação integrada utilizando SPNEGO/Kerberos. Para utilizar esta forma de autenticação é necessário efetuar a configuração apropriada no LumisXP e no servidor de autenticação Kerberos.
Para esta forma de autenticação funcionar, é necessário que ambos, o servidor do portal e o navegador cliente tenham acesso ao servidor de autenticação do Kerberos (KDC).
Os usuários autenticados por esta funcionalidade devem ter login no formato user@mydomain.com.
Configuração no LumisXP
No LumisXP é necessário configurar a classe lumis.portal.authentication.http.SpnegoAuthenticator
no elemento <httpAuthenticator>
do lumisportalconfig.xml:
Também é necessário efetuar a devida configuração da conexão com o servidor Kerberos. Para isto, descomentar o elemento kerberos/configurationFile, e se desejado ajustar o caminho para o arquivo desejado:
No arquivo de configuração do Kerberos (com a configuração exemplo acima, estaria em lumisdata/config/security/krb5.conf), efetuar a configuração correspondente ao ambiente do servidor que será utilizado para autenticação.
Exemplo de configuração:
Configurar um LoginModule com nome LumisPortalSpnego para efetuar a autenticação utilizando esta configuração Kerberos (O local de configuração do LoginModule depende de seu servidor de aplicação. Veja nas instruções de instalação do LumisXP em seu servidor de aplicação onde o LoginModule LumisPortal foi instalado, e fazer o equivalente para o exemplificado abaixo. Em ambientes sem instrução específica, como no Tomcat, esta configuração deve ser ajustada em lumisdata/config/lumissecuritylogin.config). Exemplo de configuração do LoginModule:
Na configuração acima, o atributo principal deve corresponder ao usuário que o portal utilizará para acessar o Kerberos. Deve estar presente no keyTab especificado as chaves de autenticação deste usuário.
Configuração no Active Directory
Para usar o SPNEGO/Kerberos com o Active Directory, os seguintes passos precisam ser feitos:
- Criar um usuário para ser utilizado pelo LumisXP para processar as autenticações. Pode ser desejado configurar o usuário para que a senha não expire com o tempo, para evitar ter que manualmente alterar a senha e recriar o keytab para o usuário após a expiração. Para efeitos ilustrativos, nos exemplos será assumido que o login deste usuário é lumisportalservice@MYDOMAIN.COM.
- Efetuar o registro de Service Principal Names (SPNs) no usuário. Para esta operação, utilize o setspn.exe pela linha de comando em seu servidor Windows. Caso seu servidor Windows não possua o setspn.exe, obtenha-o instalando o Windows Support Tools.
Deve ser adicionado ao usuário SPNs na forma de HTTP/<hostname>, onde <hostname> corresponde aos possíveis hosts que podem referenciar o servidor do portal. Por exemplo:
Para visualizar os SPNs associados ao usuário, pode-se executar:
- Gerar um arquivo de keytab contendo as chaves de autenticação para o usuário criado no item (1). Com o JDK é distribuído ktab.exe, no seu diretório bin. Ele deve ser usado para gerar o arquivo de keytab. Ele pode ser executado em qualquer máquina, não precisando necessariamente ser no servidor.
Para criar o arquivo de keytab, pode-se executar:
Após executar este comando ele pedirá a senha do usuário. Em seguida o arquivo especificado (no exemplo lumisportal.keytab) será gerado.
O argumento "-n 0" indica para a chave ter versão (KVNO) 0 (zero). Quando a chave tem versão zero, seu número de versão não será validado com o número de versão no servidor. Pode-se ao invés de zero colocar o número correto da versão, mas neste caso tem que ser igual ao que está armazenado no servidor, caso contrário a chave não funcionará. Para descobrir o número da chave no servidor do Active Directory, execute ADSIEdit.msc, vá até o usuário, abra suas propriedades e veja o valor do atributo msDS-KeyVersionNumber.
Para visualizar informações sobre as chaves que estão armazenadas em um arquivo de keytab, execute o comando como o exemplo abaixo:
Após criar o arquivo de keytab, mova-o para a instalação do portal e o referencie no atributo keyTab do Login Module LumisPortalSpnego, como exemplificado anteriormente.
Navegadores Web
Uma vez o portal configurado corretamente, os navegadores podem efetuar automaticamente a autenticação dependendo de suas característica e configurações:
- Internet Explorer: Por padrão efetua a autenticação automática se o endereço acessado for considerado zona de intranet. Pode-se utilizar a funcionalidade de política de grupos do Active Directory para automaticamente configurar as máquinas do domínio para considerarem os endereços do portal como zona de intranet, caso já não seja o caso.
- Google Chrome: Não possui configuração específica, mas utiliza a mesma configuração que o Internet Explorer.
- Mozilla Firefox: Acessar about:config e incluir no parâmetro network.negotiate-auth.trusted-uris os endereços, separados por vírgula, que se confia para efetuar a autenticação automática. Em ambiente corporativos, pode-se usar a funcionalidade do Firefox de difusão das configurações no ambiente corporativo para efetuar tal configuração nas máquinas clientes do ambiente.
Resolução de Problemas
Caso a autenticação automática não esteja funcionando como esperado, algumas formas de obter mais informações afim de tentar resolver o problema são:
- Verificar informações presentes nos logs do LumisXP.
- Se não estiver habilitado, em lumislogconfig.yml habilitar o log de depuração do logger
lumis.portal.authentication.http.SpnegoAuthenticator
. - Habilitar mensagens de depuração do Login Module, colocando parâmetro
debug=true
nocom.sun.security.auth.module.Krb5LoginModule
noLumisPortalSpnego
. Estas mensagens são normalmente emitidas na saída padrão (System.out) da aplicação. - Habilitar mensagens de depuração do Kerberos, incluindo no JVM do servidor de aplicação a propriedade de sistema
sun.security.krb5.debug
com valortrue
. Estas mensagens são normalmente emitidas na saída padrão (System.out) da aplicação.