我目前在我的 OSGi 应用程序中使用码头。在这个应用程序中,我创建了 2 个带有自己的 WEB_INF 的 webapps(在单独的包中),以保持 AppA 和 AppB 的简单性。在这种情况下,AppA 还包含必要的 jetty.xml 文件以在 OSGi 环境中启动 jetty 服务器。
现在我想添加一些身份验证。我按照文档(http://www.eclipse.org/jetty/documentation/current/configuring-security.html#configuring-security-authentication)并添加了所有必要的配置。
码头.xml;
<Call name="addBean">
<Arg>
<New class="org.eclipse.jetty.security.HashLoginService">
<Set name="name">Realm</Set>
<Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/auth.properties</Set>
<Set name="refreshInterval">5</Set>
</New>
</Arg>
由于这是唯一的领域,所有身份验证服务都使用它。当我部署它时,当我浏览到具有安全约束的 url(在两个应用程序中)时,我确实有一个登录选项。要完整;我使用表单登录方法,所以呈现了一个漂亮的表单。
但是,当我登录 AppA 时,我没有登录 AppB。因此,当我转到 localhost/appA/secured 并登录时,当我转到 localhost/AppB/secured 时,我仍然必须登录(使用相同的凭据)。
现在我想知道是否有可能以这样的方式链接两个应用程序,当我登录 appA 时,我会自动登录 appB?我注意到在早期版本中有一个 HashSSORealm,但在 jetty 9 中它似乎不再存在了。