问题描述
||
我在基于osgi的Web服务应用程序中使用Servicemix 4.2。
我的Web服务应用程序是使用Servicemix随附的CXF堆栈公开的。
现在,我们必须将应用程序与单独开发的身份验证api集成在一起。第三方api使用JAAS作为身份验证的手段。
我将第三方jar嵌入了我的应用程序包中。我使用export-package指令导出了LoginModule实现类。
当我尝试使用第三方提供的jaas模块时,出现了错误
无法创建登录上下文。未为LoginModule配置LoginModule。
第三方jaas提供程序使用system属性找到jaas.config文件的位置
java.security.auth.login.config
jaas.config文件的内容如下
LoginModule {
com.altair.aaservice.windowsauthn.hwec.Windows需要身份验证;
};
谷歌搜索后,我发现开箱即用的servicemix为jaas提供了两个系统捆绑包
Apache Felix Karaf :: JAAS模块(1.4.0)
Apache Felix Karaf :: JAAS Config(1.4.0)
并且您需要修改etc / users.properties文件和其他一些东西来实现jaas。但是由于我们需要与第三方jaas提供程序集成,因此我无法研究这些方式。而且,servicemix随附的大多数文档都坚持要求您使用servicemix方式来实现jaas,因此在寻找任何解决方案方面我没有获得太多成功。
我手动卸载了两个系统捆绑包,之后出现以下错误
javax.security.auth.login.LoginException:无法找到LoginModule类:从软件包[org.apache.cxf.bundle]中找不到com.altair.aaservice.windowsauthn.hwec.WindowsAuthentication
由于我的Web服务是基于CXF的,因此它可能正在此捆绑包中查找。
是否有任何方便的方法将servicemix与定制jaas实现集成在一起。请告诉我是否有。
解决方法
这里有一个编写自定义JAAS LoginModule的示例。