Почему менеджер Tomcat использует мой LoginModule? - PullRequest
2 голосов
/ 05 октября 2010

Я использую Tomcat 6.0.29 и создал свой собственный домен и модуль входа в систему. Они определены в server.xml примерно так:

<Realm className="mycompany.tomcat.MyRepositoryRealm" appName="My_Realm" userClassNames="mycompany.tomcat.IdentityPrincipal" roleClassNames="mycompany.tomcat.RolePrincipal" useContextClassLoader="true"/>

Я добавил библиотеку, содержащую эти классы, в мою папку tomcat / lib. Кроме этого, я не изменил Tomcat по умолчанию.

Когда я запускаю приложение Tomcat Manager на http://localhost:9080/manager/html, я не могу войти в систему, и журнал tomcat показывает ошибку и отслеживание стека для моего модуля входа.

Есть идеи? Спасибо!

Изменить:

Для каждого запроса здесь приведена трассировка стека. Моя область соединяется со службой JBoss, поэтому я получаю ошибку NamingContextFactory.

javax.security.auth.login.LoginException: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory at mycompany.tomcat.MyRepositoryLoginModule.login(MyRepositoryLoginModule.java:88) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at javax.security.auth.login.LoginContext.invoke(LoginContext.java:769) at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) at javax.security.auth.login.LoginContext.login(LoginContext.java:579) at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:410) at org.apache.catalina.realm.JAASRealm.authenticate(JAASRealm.java:335) at mycompany.tomcat.MyRepositoryRealm.authenticate(MyRepositoryRealm.java:34) at org.apache.catalina.authenticator.BasicAuthenticator.authenticate(BasicAuthenticator.java:181) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:619)

1 Ответ

3 голосов
/ 05 октября 2010

Мне удалось выяснить проблему.

Можно определить области безопасности для механизма, хоста или контекста.Я определил область для всего хоста (в server.xml), поэтому приложение tomcat manager пыталось его использовать.Я исправил проблему, определив область в файле META-INF / context.xml внутри моего веб-приложения.

...