Jetty custom LoginService

2019-09-07 02:14发布

问题:

Can anyone point me to a working example of a custom LoginService for Jetty?

I am just trying to do something as simple as making a copy of HashLoginService in a package in my project then reference that class from jetty-web.xml. When I do so, I always get:

2017-05-23 21:16:36.511:WARN:oejw.WebAppContext:main: Failed startup of context o.e.j.w.WebAppContext@60c6f5b{/,file:///D:/jetty-distribution-9.4.2.v2
0170220/webapps/a5-1.0-SNAPSHOT/,UNAVAILABLE}{D:\jetty-distribution-9.4.2.v20170220\webapps\a5-1.0-SNAPSHOT}
java.lang.NoSuchMethodException: class org.eclipse.jetty.security.ConstraintSecurityHandler.setAuthenticator(class org.eclipse.jetty.security.authenti
cation.FormAuthenticator)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.set(XmlConfiguration.java:593)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:411)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.get(XmlConfiguration.java:675)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:420)

OR

java.lang.NoSuchMethodException: class org.eclipse.jetty.security.ConstraintSecu
rityHandler.setLoginService(class org.overlord.fta.login.MyLoginService)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.set(XmlC
onfiguration.java:579)
        at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configur
e(XmlConfiguration.java:384)

Is this some classloader issue that I'm not understanding? Can anyone help me get a custom LoginService working? Thanks so much!

I have tried the code at the following github project which is similar to my project setup but that doesn't work either (same errors). https://github.com/EricWittmann/fuse-test-apps/tree/master/fta-custom-login-service-war

Below is my jetty-web.xml:

  <Get name="securityHandler">
    <Set name="loginService">
      <!-- THIS WORKS USING JETTY'S HASHLOGINSERVICE -->
      <New class="org.eclipse.jetty.security.HashLoginService">
        <Set name="name">testrealm</Set>
        <Set name="config">
        <SystemProperty name="jetty.base"
                        default="." />/etc/realm.properties</Set>
      </New>   
      <!-- THIS WON'T WORK USING MY HASHLOGINSERVICE -->   
      <!--New class="com.mysite.HashLoginService">
        <Set name="name">testrealm</Set>
        <Set name="config">
        <SystemProperty name="jetty.base"
                        default="." />/etc/realm.properties</Set>
      </New-->
  </Get>

回答1:

For those who stumble across this question, it was answered on the Jetty-Users mailing list. User placed .jar in lib/ext directory and was able to get it to work. As a note, users should construct a Jetty-base directory to house their webapps/libraries in.



标签: login Jetty