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:

    x
     
    1
    <security>
    2
    <httpAuthenticator className="lumis.portal.authentication.http.SpnegoAuthenticator" ></httpAuthenticator>
    3
    4
     <!-- Uncomment to configure Kerberos Authentication Protocol. See LumisXP documentation for details.
    5
      <kerberos>
    6
       <configurationFile>security/krb5.conf</configurationFile>
    7
      </kerberos>
    8
      -->
    9
    </security>

    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:

    8
     
    1
    <security>
    2
      <httpAuthenticator className="lumis.portal.authentication.http.SpnegoAuthenticator" ></httpAuthenticator>
    3
    4
      <!-- Uncomment to configure Kerberos Authentication Protocol. See LumisXP documentation for details. -->
    5
      <kerberos>
    6
       <configurationFile>security/krb5.conf</configurationFile>
    7
      </kerberos>
    8
    </security>

    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:

    14
     
    1
    [domain_realm]
    2
    .mydomain.com = MYDOMAIN.COM
    3
    4
    [libdefaults]
    5
    default_tkt_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
    6
    default_tgs_enctypes = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
    7
    permitted_enctypes   = aes128-cts rc4-hmac des3-cbc-sha1 des-cbc-md5 des-cbc-crc
    8
    default_realm = MYDOMAIN.COM
    9
    10
    [realms]
    11
    MYDOMAIN.COM = {
    12
            kdc = 10.200.20.12
    13
            default_domain = MYDOMAIN.COM
    14
    }

    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:

    9
     
    1
    LumisPortalSpnego {
    2
      com.sun.security.auth.module.Krb5LoginModule required
    3
      debug=false
    4
      storeKey=true
    5
      doNotPrompt=true
    6
      useKeyTab=true
    7
      keyTab="${lumis.portal.lumisDataPath}/config/security/lumisportal.keytab"
    8
      principal="lumisportalservice@MYDOMAIN.COM";
    9
    };

    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:

      4
       
      1
      setspn -s HTTP/portalserver lumisportalservice
      2
      setspn -s HTTP/portalserver.mydomain.com lumisportalservice
      3
      setspn -s HTTP/intranet.myportal.com lumisportalservice
      4
      setspn -s HTTP/www.myportal.com lumisportalservice

      Para visualizar os SPNs associados ao usuário, pode-se executar:

      1
       
      1
      setspn -L lumisportalservice

    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:

      1
       
      1
      ktab -a lumisportalservice@MYDOMAIN.COM -n 0 -k lumisportal.keytab

      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:

      9
       
      1
      C:\Java\jdk1.7.0\bin>ktab -l -e -t -k lumisportal.keytab
      2
      Keytab name: lumisportal.keytab
      3
      KVNO Timestamp      Principal
      4
      ---- -------------- ----------------------------------------------------------------------
      5
         0 21/09/12 18:31 lumisportalservice@MYDOMAIN.COM (17:AES128 CTS mode with HMAC SHA1-96)
      6
         0 21/09/12 18:31 lumisportalservice@MYDOMAIN.COM (23:RC4 with HMAC)
      7
         0 21/09/12 18:31 lumisportalservice@MYDOMAIN.COM (16:DES3 CBC mode with SHA1-KD)
      8
         0 21/09/12 18:31 lumisportalservice@MYDOMAIN.COM (3:DES CBC mode with MD5)
      9
         0 21/09/12 18:31 lumisportalservice@MYDOMAIN.COM (1:DES CBC mode with CRC-32)

      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 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.