我开发了一个实现javax.security.auth.spi.LoginModule的LoginModule,并且我使用org.apache.catalina.realm.JAASRealm。 有什么方法可以在 Websphere Application Server 8.5 上利用此解决方案吗?
我读到一些文章说我需要在WEB_INBOUND中设置我的loginModule。我尝试了这个,应用程序开始请求身份验证,但授权不起作用。我猜是因为WAS上不存在JAASRealm,所以WAS上有类似的Realm吗?我应该如何配置?
还有一个问题,当我配置 WEB_INBOUND 时,控制台管理员也使用我的 LoginModule 进行身份验证,我可以仅在我的应用程序上使用我的 LoginModule 吗?
最佳答案
使用登录模块有点复杂,所以我通常建议尽可能避免使用。 WAS 为一些开箱即用的用户注册表提供支持,例如文件、LDAP、自定义、专有数据库。检查一下,如果它对您来说足够了。如果您需要自定义登录过程,通常使用 TAI(可信关联拦截器)比登录模块更容易,因为将其编程为仅对某些应用程序有效更容易。
您没有在登录模块中编写您的自定义内容,因此很难推荐最佳解决方案。
要授权使用登录模块,您需要使用要为其创建主题的组/用户配置注册表,或者在登录模块中断言完整主题,请在下面的链接中查看详细信息。
至于将管理安全性(控制台)与应用程序安全性分开 - 在 WAS ND(网络部署)配置中相当容易,您有单独的服务器用于管理(部署管理器) - 您只需创建单独的安全域,并分配它到为您的应用程序提供服务的服务器。
在基本(单服务器)配置中,您无法执行此操作,因为安全设置是针对每个 JVM 的。您可以通过单独的服务器或管理代理尝试一些解决方法,但设置更复杂,而且我没有对此进行测试,所以我猜测。
您可以在 LoginModule 中使用 WSServletRequestCallback
或 WSAppContextCallback
并仅为您的应用程序进行自定义。
您还可以创建 WEB_INBOUND 的副本,并自定义该副本。但要使用它,您需要自定义登录页面/流程并以编程方式调用该登录配置。
另请参阅:
关于java - Websphere 8.5 中使用 JAASRealm 自定义 LoginModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481719/