当前位置: 首页 > 知识库问答 >
问题:

与FileNet内容引擎交互的web服务中的JAAS授权

尚嘉勋
2023-03-14

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

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;
};

我有以下问题:

    < li >如果用户尚未登录到Business Space应用程序,我不想提示用户输入凭据,我是否应该向LoginContext构造函数传递回调处理程序? < li >我是否必须调整任何WAS设置才能使此方案生效?

更新

我已设置:

  • Web 中的 BASIC 身份验证方法.xml使用特定于浏览器的对话框提示用户输入凭据
  • 指定要使用的登录模块类的实现的 jaas.conf 文件的路径

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

javax.security.auth.login.login异常: 错误: 没有回调处理程序可用于获取身份验证信息

如果回调授权成功,这意味着由于某种原因,服务无法检索所需的JAASSubject。

我错过了什么?

此外,我在IBM网站上看到了以下声明:

EJB传输层固有的优势之一是能够利用基于Java身份验证和授权服务(JAAS)的身份验证。

然而,它没有说明在使用WS传输时不可能利用JAAS。还是真的?

共有1个答案

楚鸿波
2023-03-14

你说得对,因为你已经有了用户信息,所以你不需要回调(用于基于表单的身份验证)。就fas as was设置而言,你必须自己决定。这是一个非常好的教程。

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

 类似资料:
  • 我最近读了不少关于微服务的文章,尤其是关于AuthN和Authz的文章。在很大程度上,这一切都很有意义,我可以看到这一切应该如何工作。 (注意--现在我只实现了客户端凭据授予和资源所有者密码凭据授予,因为我只是想看看它是如何工作的,而且用curl调用它们更容易。但我不知道这有什么不同)

  • 拿WeX5自带的外卖来说举例,它由三部分组成 1. UI2/takeout 这个是页面,由页面文件.w和js以及css等构成,js中有$.ajax的请求 2. Native/外卖 这个是本地app的工程,用来打包app 3. tomcat的webapps/baas 这个是服务端,提供步骤1中的$.ajax访问 启动服务 开发工具Studio中启动Tomat,这个将启动两个服务,一个是tomcat的

  • 我正在使用Redisson为我的Java应用程序。在他们的文档中,redisson在任何一个redis节点上创建对象。这是什么意思? 对于例如: 它返回本地存在的RSet对象。现在我对它做的任何操作都会改变本地对象和redis对象。这是否意味着两个远程调用 我的应用程序将处理大量的流量,我担心这将是原子和快速与否?

  • 在python内置的web服务器中,当使用函数时,它会在终端中打印结果... 例如: 如何在PHP内置Web服务器中打印这样的东西? 例如,我希望在终端中打印$\u POST。我使用用于运行PHP内置web服务器。

  • PHP 5.4 之后, 你可以不用安装和配置功能齐全的 Web 服务器,就可以开始学习 PHP。 要启动内置的 Web 服务器,需要从你的命令行终端进入项目的 Web 根目录,执行下面的命令: > php -S localhost:8000

  • 我是WebServices的新手。Im通过标记为“Transacted”的camel路由向cxfendpoint发送webservice请求,并得到响应。在同一事务路由中,next语句抛出一个异常,以便我的异常处理程序回滚该事务。 我可以在我的事务回滚中找到其他东西,除了我的webservice请求响应,因为它已经提交了。