Tomcat 8, autenticação Kerberos

1

Estou configurando o kerberos para um servidor de tomcat. Antes de ligar para a empresa de suporte de aplicativos da web, gostaria de saber se estou executando as etapas corretas, já que é a primeira vez.

O domínio tem 2 zonas, uma é .local e a outra é .edu.

As pessoas acessarão o servidor por meio de server.domain.edu porque ele possui um certificado SSL para esse nome.

Eu tenho um usuário do Windows que possui um SPN HTTP / server.domain.edu registrado. A conta pode ser executada como um serviço.

Eu executei este comando ktpass -princ HTTP/[email protected] -mapuser [email protected] -pass "UserPass" -ptype KRB5_NT_PRINCIPAL -out keytabfile.kt .

A partir desse comando, obtive um HTTP / server.domain.edu mapeado com sucesso para [email protected] e o arquivo de chave.

Copiei o arquivo para o servidor do tomcat e configurei o seguinte.

Um arquivo jass.conf:

WebFDD
{
    com.sun.security.auth.module.Krb5LoginModule 
    required 
    debug=true 
    useKeyTab=true 
    storeKey=true 
    keyTab="C:/keytab.kt" 
    principal="HTTP/server.domain.edu" 
    isInitiator=false;
};

E um arquivo krb5.conf:

[libdefaults]
default_realm = domain
default_keytab_name = FILE:c:\keytab.kt
default_tkt_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
default_tgs_enctypes = rc4-hmac,aes256-cts-hmac-sha1-96,aes128-cts-hmac-sha1-96
forwardable=true

[realms]
domain = {
kdc = dc.domain.local
admin_server = dc.domain.local
}

[domain_realm]
domain.local = pupr.local
.domain.local= pupr.local

Em seguida, na ferramenta de configuração do tomcat:

Configure a conta para começar com [email protected].

Adicionadas estas 2 opções de java:

-Djava.security.auth.login.config=C:\jaas.conf
-Djava.security.krb5.conf=C:\krb5.conf

O serviço é iniciado e posso ver páginas que não exigem autenticação.

Quando eu ativo o kerberos na aplicação web no arquivo xml eu coloquei server.domain.edu, a porta já está configurada para 1433 (é para SQL) então eu deixo assim.

Eu tentei olhar para os logs no servidor, mas não consigo encontrar nada

C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs está vazio.

Ao tentar acessar o site, recebo este erro:

type Exception report

message Servlet.init() for servlet action threw exception

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Servlet.init() for servlet action threw exception
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)
root cause

java.lang.NullPointerException
    com.feith.webfdd.action.FddActionServlet.init(FddActionServlet.java:371)
    javax.servlet.GenericServlet.init(GenericServlet.java:158)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:613)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:516)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1086)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:659)
    org.apache.coyote.http11.Http11NioProtocol$Http11ConnectionHandler.process(Http11NioProtocol.java:223)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1558)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1515)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.lang.Thread.run(Unknown Source)

Obrigado pelo seu tempo!

    
por Eduard Ramos 29.10.2015 / 14:31

0 respostas