java - Websphere 8.5 中使用 JAASRealm 自定义 LoginModule

标签 java websphere jaas

我开发了一个实现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 中使用 WSServletRequestCallbackWSAppContextCallback 并仅为您的应用程序进行自定义。

您还可以创建 WEB_INBOUND 的副本,并自定义该副本。但要使用它,您需要自定义登录页面/流程并以编程方式调用该登录配置。

另请参阅:

关于java - Websphere 8.5 中使用 JAASRealm 自定义 LoginModule,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28481719/

相关文章:

linux - 如何从 Linux CLI 查询 websphere 节点状态

java - 使春分验证 bundle

java - Azure Application Insights 无代码代理不会在应用程序映射中显示 cloudRoleInstance 和 cloudRoleName

泛型方法中所需的 Java 冗余转换

java - Android StringTokenizer - 读取空白值

java - Jetty - JAAS 和 Active Directory - 仅身份验证?

authentication - 将 JAAS 用于具有 Spring 安全性的 LDAP 密码

java - 使用 Java String split() 很简单 "parser"

apache - 为什么使用 WAS-CE 而不是 Apache Geronimo?

jakarta-ee - Primefaces 组件在 websphere 8.5 中不起作用