我正在尝试使用来自IBM的阀门,以通过从IBM Secure Access Manager(Tivoli Access Manager)传递的HTML标头对Tomcat 9进行基于角色的身份验证。我已经在发动机缸体内配置了气门,如下所示:
<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_HOME/lib
目录中的catalina.jar中。我将AMTomcatValve.jar放入$ CATALINA_HOME / lib中,并将其添加到了启动tomcat的java命令的类路径中。
此外,当除去阀标签时,Tomcat映像也会启动。当气门移至发动机缸体之外时,它也会启动(但是将其从上下文中删除),但是当尝试使用IBM Security Access Manger WebSeal进入我的应用程序时,我遇到“意外验证错误”。 / p>
关于如何让Tomcat查找此类有什么建议吗?我真的很想避免编写自定义的登录/身份验证阀