我在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;
};
我有以下问题:
更新
我已设置:
当我测试这个解决方案时,它失败了,并出现以下错误:
javax.security.auth.login.login异常: 错误: 没有回调处理程序可用于获取身份验证信息
如果回调授权成功,这意味着由于某种原因,服务无法检索所需的JAASSubject。
我错过了什么?
此外,我在IBM网站上看到了以下声明:
EJB传输层固有的优势之一是能够利用基于Java身份验证和授权服务(JAAS)的身份验证。
然而,它没有说明在使用WS传输时不可能利用JAAS。还是真的?
你说得对,因为你已经有了用户信息,所以你不需要回调(用于基于表单的身份验证)。就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请求响应,因为它已经提交了。