Open the menu

    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:

    1. 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.
    2. 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:

    3. 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.xml habilitar o log de depuração da categoria lumis.portal.authentication.http.SpnegoAuthenticator.
    • Habilitar mensagens de depuração do Login Module, colocando parâmetro debug=true no com.sun.security.auth.module.Krb5LoginModule no LumisPortalSpnego. 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 valor true. Estas mensagens são normalmente emitidas na saída padrão (System.out) da aplicação.