Jetty LoginModule或LoginService

时间:2017-04-30 21:17:03

标签: java-ee jetty

我参与了一个包含非常旧代码的java EE项目。它有自己的机制,用于从html表单进行身份验证和授权用户。现在我想使用

在Java EE登录机制中移植此机制
<login-config>
  <auth-method>FORM</auth-method>
  <realm-name>Test Realm</realm-name>
  <form-login-config>
     <form-login-page>/logon.html?param=test</form-login-page>
     <form-error-page>/logonError.html?param=test</form-error-page>
  </form-login-config>
</login-config>

Jetty Document说,可以实现接口LoginModule(可以使用  org.eclipse.jetty.jaas.spi.AbstractLoginModule)并使用类JASSLoginService配置Jetty,s.t。喜欢

<Set name="securityHandler">
    <New class="org.eclipse.jetty.security.ConstraintSecurityHandler">
     <Set name="loginService">
       <New class="org.eclipse.jetty.jaas.JAASLoginService">
         <Set name="name">Test JAAS Realm</Set>
         <Set name="loginModuleName">xyz</Set>
       </New>
     </Set>
    </New>
  </Set>

由于我不想让应用程序过度配置,我的问题是,我可以只使用LoginModule实现接口org.eclipse.jetty.security.LoginService,而不是使用RelativePanel。它直接在&#34; securityHandler&#34;?

环境:Java SE 8 / JavaEE7; Jetty 9.2.x; Windows Server

1 个答案:

答案 0 :(得分:3)

你可以做任何一件事。如果要使用javaee标准身份验证机制,请配置JAASLoginService,然后指定LoginModule实现,由jetty提供或由您自己或第三方lib实现。如果您编写自己的LoginModule,那么它应该可以移植到任何servlet容器。

或者,您可以使用jetty特定的api进行身份验证,即LoginService,并插入我们现有的LoginServices之一,如HashLoginService,JDBCLoginService等,或者您可以改为编写自己的LoginService实现。当然,jetty LoginService不能移植到任何其他servlet容器。