Я пытаюсь использовать клапан от IBM для аутентификации на основе ролей в Tomcat 9 с использованием заголовков HTML, переданных из IBM Secure Access Manager (Tivoli Access Manager).Я настроил клапан в блоке цилиндров, как показано ниже:
<Engine name="Catalina" defaultHost="localhost" >
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<!-- Here is my valve declaration -->
<Valve className="com.ibm.tivoli.integration.am.catalina.valves.AMTomcatValve"
debugTrace="true" addRoles="myrolename" groupsHeader="iv-groups" />
<Host name="localhost" appBase="/path/to/WARs" unpackWARs="true" autoDeploy="true" >
<Valve classname="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b />
</Host>
</Engine>
Однако это приводит к тому, что Tomcat не запускается.Вот Stacktrace:
Server start FAILED
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:306)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:491)
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.Authenticator
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 35 more
Я не уверен, что вызывает эту ошибку, поскольку класс org.apache.catalina.Authenticator явно существует в моем catalina.jar, расположенном в моем каталоге $CATALINA_HOME/lib
.Я поместил свой AMTomcatValve.jar в $ CATALINA_HOME / lib и добавил его в путь к классам, который дается команде java, запускающей tomcat.
Также изображение Tomcat запускается при удалении метки клапана.Он также запускается, когда клапан перемещается за пределы блока двигателя (однако это удаляет его из контекста), но я сталкиваюсь с «Неожиданной ошибкой аутентификации» при попытке войти в мое приложение с помощью IBM Security Access Manger WebSeal.
Есть какие-нибудь предложения о том, как заставить Tomcat найти этот класс?Я действительно хотел бы избежать написания пользовательского логина / аутентификационного клапана