Hallo,
das Thema ist zwar schon etwas älter, aber ich hoffe, es ist noch jemand hier und kann mir helfen.
Ich bin im Thema Tomcat Authentifizierung relativ neu. Bisher habe ich den Standard mit der xml Datei verwendet. Nun habe ich ein Projekt, bei dem ich ein wenig andere Funktionalität benötige.
Konkret soll es so ablaufen, dass man auf einer Seite seinen Usernamen und Passwort eingibt und dann beim Aufruf diese Daten genommen werden, in eine XML Struktur verpackt werden und ein HTTP Request mit dem XML im Body losgeschickt wird. Als Response kommt dann wieder ein XML Body, den ich dann zerlegen kann. In diesem wir auch die Rolle des Users zurückgeliefert und of die Authentifizierung erfolgreich war oder nicht.
Das ganze ist ein JSF Facelets Anwendung, aber das hat ja mir der Authentifizierung nicht viel zu tun, da das ja reine Tomcat Sache ist.
Ich habe jetzt versucht ein Realm zu schreiben, dass diese Funktionalität bietet. Ich denke auch, dass das geklappt hat. Das habe ich ich eine jar Datei verpackt und ins Server/lib Verzeichnis kopiert. Dann habe ich in der Server.xml die Klasse in der Realm Konfiguration eingetragen. Auch habe ich im Package eine mbean-descriptor.xml Datei abgelegt, wie es in der Tomcat Doku beschrieben ist.
Leider bekomme ich beim Tomcat Start nun den Fehler:
Code:
20.03.2007 10:40:10 org.apache.tomcat.util.digester.Digester startElement
SCHWERWIEGEND: Begin event threw exception
java.lang.ClassNotFoundException: org.apache.catalina.realm.DKVAuth
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:204)
at org.apache.tomcat.util.digester.Rule.begin(Rule.java:152)
at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1275)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:501)
at com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:179)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1337)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2740)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:645)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:508)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1561)
at org.apache.catalina.startup.Catalina.load(Catalina.java:489)
at org.apache.catalina.startup.Catalina.load(Catalina.java:523)
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 org.apache.catalina.startup.Bootstrap.load(Bootstrap.java:266)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:431)
Ich hoffe, es kann mir jemand weiterhelfen, da das Thema in der Doku und im Netz nicht gerade ausführlich behandelt wird. Ein kompletter Beispielcode für ein eigenes Realm wäre echt spitze.
Viele Grüße
Michael
edit: In der Zwischenzeit konnte ich das Problem mit Hilfe eines Kollegen lösen. Sollte jemand am gleichen Problem sitzen, bitte einfach bei mir melden.