Security OPENAM-amService UrlAccessAgent多次登录

Security OPENAM-amService UrlAccessAgent多次登录,security,identity,openam,opensso,Security,Identity,Openam,Opensso,在我们的部署中,我们在负载均衡器后面有3个OpenAM实例,粘性基于IP地址,因此用户总是在同一台服务器上 我的问题是,在完成一天的工作负载后,每个服务器上都会达到最大并发会话数 当我分析AMSO审核日志时,我发现我的Web代理(amService UrlAccessAgent)经常打开会话(每分钟超过20个会话),而且这些会话从未被破坏(它们都是实时的:) 你能帮我解释一下这种行为吗? 难道amService UrlAccessAgent不应该登录一次吗 提前谢谢。在您的描述中有几个有趣的地方

在我们的部署中,我们在负载均衡器后面有3个OpenAM实例,粘性基于IP地址,因此用户总是在同一台服务器上

我的问题是,在完成一天的工作负载后,每个服务器上都会达到最大并发会话数

当我分析AMSO审核日志时,我发现我的Web代理(amService UrlAccessAgent)经常打开会话(每分钟超过20个会话),而且这些会话从未被破坏(它们都是实时的:)

你能帮我解释一下这种行为吗? 难道amService UrlAccessAgent不应该登录一次吗


提前谢谢。

在您的描述中有几个有趣的地方:

  • 如果您使用的是web代理,那么为什么要将其与amService UrlAccessAgent一起使用?您应该为您的代理创建一个Web代理配置文件,并改用该帐户
  • 不清楚您使用的是什么web服务器,所以我假设它是Apache。在这种情况下,请确保您没有使用预工作模式,推荐的mpm是worker,因为它通常需要更少的代理登录。然而,据我所知,一旦子进程死亡,代理总是注销自己
  • 您可能还想尝试使用更新版本的webagent,如果此问题再次出现,甚至可以每晚使用一次

    • 我想我找到了解决办法。当我开始挖掘OpenAm代码和代理代码时,我发现了以下内容

                 if ((isApplicationModule(authMethName) && 
                      (ad.isSuperUser(userDN) || ad.**isSpecialUser**(userDN)))
                      || isAgent(amIdentityUser))
                 if (isAgent(amIdentityUser) && agentSessionIdleTime > 0) {
                      ....
                      session.setMaxSessionTime(Long.MAX_VALUE/60);
                      session.setMaxIdleTime(agentSessionIdleTime);
                      session.setMaxCachingTime(agentSessionIdleTime);
                  } else {
                      session.setExpire(false);
                  }
      
      当您稍早查看时,发现如果未设置属性com.iplanet.am.session.agentsessionidletim,则agentSessionIdleTime的值为0

      有关该财产含义的解释,请参见以下链接:

      谢谢彼得的帮助。
      我很快就会告诉你,这是否在我们的生产系统上运行良好。

      非常感谢你的answear,事实上我们使用apache,并且它有效地处于预工作模式,这是因为它承载PHP应用程序,我们通过mod_PHP(它与Worker模式不兼容)来实现这一点。关于你的第一个问题:我们使用默认配置文件是因为它满足了我们的需要,我没有看到可以添加到个性化配置文件(作为openAM新手,我是谁)上的具体调整。一旦我建立了一个测试环境,我将尝试你最后的假设。。。但我仍然希望可以通过配置使这些会话无效:)您应该在“访问控制-领域-代理-Web”选项卡下创建代理配置文件,并在安装Web代理时使用配置文件名/密码。目前,您似乎正在使用某个非常旧版本的代理(我甚至不知道如果没有适当的Web代理配置文件,它是如何工作的-因为UrlAccessAgent不是真正的Web代理配置文件-,代理应该会错过代理配置文件中的许多配置选项…)。但是,不明白为什么它没有自动注销我提出的解决方案只是一个在我们的案例中可行的解决方案,但问题仍然存在。当您查看openam时,乍一看,您可以看到它将一个清理方法挂接到进程结尾,而该进程在代理的附加日志中结束。它会记录错误,如果该进程生成了一些,我们的日志是干净的,没有错误,代理日志上没有警告。在一个测试环境中进行了一个小测试,在测试环境中我放置了相同的配置(相同的apache mod版本,相同的代理conf文件),但没有重现错误,代理正确地注销