Назад | Перейти на главную страницу

Tomcat 8, проверка подлинности Kerberos

Я настраиваю kerberos для сервера tomcat. Прежде чем позвонить в службу поддержки веб-приложений, я хотел бы знать, правильно ли я делаю шаги, поскольку это мой первый раз.

В домене 2 зоны: одна - .local, другая - .edu.

Люди будут получать доступ к серверу через server.domain.edu, потому что у него есть сертификат SSL для этого имени.

У меня есть пользователь Windows с зарегистрированным SPN HTTP / server.domain.edu. Учетная запись может работать как служба.

Я выполнил эту команду ktpass -princ HTTP/server.domain.edu@domain.edu -mapuser user@domain.local -pass "UserPass" -ptype KRB5_NT_PRINCIPAL -out keytabfile.kt.

С помощью этой команды я получил успешно сопоставленный HTTP / server.domain.edu с user@domain.local и ключевым файлом.

Я скопировал файл на сервер tomcat и настроил следующее.

Файл 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;
};

И файл 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

Затем в инструменте настройки tomcat:

Настроил учетную запись для запуска с user@domain.local.

Добавлены эти 2 варианта Java:

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

Служба запускается, и я вижу страницы, не требующие аутентификации.

Когда я активирую kerberos в веб-приложении, в файле xml я помещаю server.domain.edu, порт уже установлен на 1433 (это для SQL), поэтому я оставляю его таким.

Я пробовал смотреть журналы на сервере, но ничего не могу найти

C:\Program Files\Apache Software Foundation\Tomcat 8.0\logs пусто.

При попытке зайти на сайт я получаю такую ​​ошибку:

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)

Спасибо за ваше время!