java - 与 FileNet 内容引擎交互的 Web 服务中的 JAAS 授权

标签 java websphere jaas filenet-p8 filenet-content-engine

我有两个应用程序在 WAS 7.0 服务器的单个实例中运行,其中一个是 IBM Business Space(在本例中无关紧要,但无论如何),另一个是我正在开发的 RESTful 服务。这两个应用程序都与 FileNet 内容引擎交互。我知道业务空间使用 JAAS 来利用身份验证和授权任务,我的服务也是如此。要求是在访问服务时,使用已登录到 Business Space 的用户的安全 token 从服务内执行对 FileNet 的请求。我对 JAAS 机制没有深入的了解,可能是错误的,但快速谷歌搜索表明可以获取登录用户的 JAAS 主题并将其传递给我的服务的 UserContext 。我使用的代码如下:

if (userContext == null) {
    userContext = UserContext.get();
    if (userContext.getSubject() == null) {
        LoginContext loginContext = new LoginContext("config");
        loginContext.login();
        userContext.pushSubject( loginContext.getSubject() );
    }
}
UserContext.set(userContext);

对应的JAAS配置文件:

config {
    com.filenet.api.util.WSILoginModule required;
};

我有以下问题:

  • 如果我不想在用户尚未登录 Business Space 应用程序时提示用户输入凭据,我是否应该将回调处理程序传递给 LoginContext 构造函数?
  • 我是否需要调整任何 WAS 设置才能使该方案发挥作用?

更新

我已经设置:

  • web.xml 中的基本身份验证方法,使用特定于浏览器的对话框提示用户输入凭据
  • jaas.conf 文件的路径,指定要使用的 LoginModule 类的实现

当我测试此解决方案时,它失败并出现以下错误:

javax.security.auth.login.LoginException: Error: no CallbackHandler available to get authentication information

假设回调授权成功,这意味着由于某种原因服务无法检索所需的 JAAS 主题。

我错过了什么?

<小时/>

此外,我在 IBM 网站上发现了以下声明:

One of the advantages inherent to the EJB transport layer is the ability to leverage Java™ Authentication and Authorization Service (JAAS)-based authentication.

但是,它并没有说明在使用 WS 传输时不可能利用 JAAS。或者是吗?

最佳答案

你是对的,因为你已经有了用户信息,所以不需要回调(用于基于表单的身份验证)。 至于 WAS 设置,您必须自己决定。 Here是一个非常好的教程。

但是您是否考虑过使用更简单的 SSO持久验证的机制。 WAS 配置文件/服务器之间的上下文?

关于java - 与 FileNet 内容引擎交互的 Web 服务中的 JAAS 授权,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16978477/

相关文章:

java - Websphere : deployment logs location?

java - 不使用 Websphere Deployment Manager 部署 Web 应用程序

java - 在应用程序内部配置身份验证领域

java - 使用 Wildfly 8 进行客户端 PKI 证书身份验证发送 404

java - Java如何选择多态中的重载方法

java - 创建后绘制组件

security - 如何确定 Java EE 应用程序需要哪些执行权限?

java - 在 JBoss 中使用多个登录模块

java - 在 NetBeans 和 Ant 中编译前过滤源

java - 在 RecyclerView 中我想要 onclicklistener 操作