【问题标题】:OpenAM Web Policy Agent not redirecting user with expired session to authenticate, but 403 page insteadOpenAM Web 策略代理不重定向会话过期的用户进行身份验证,而是重定向 403 页面
【发布时间】:2017-01-24 04:08:00
【问题描述】:

我正在为 apache 使用 OpenAM 13 和 Web Policy Agent 4.0。

Web Policy Agent 似乎无法识别 iPlanetDirectoryPro cookie,该 cookie 是 OpenAM 在身份验证后设置的令牌,已过期或实际上是无效的。

看起来 Web Policy Agent 会获取令牌并通过 OpenAM 确认,然后被告知验证失败,如下面的这些日志行,并给用户一个 403 禁止页面。

2017-01-24 11:29:55.475 +0800 WARNING [0x7f180e887700:17669] am_get_session_policy_cache_entry(): failed to locate data for a key (AQIC5wM2LY4SfcxFG6Bl98dRT7AluZ7682rulJGU8-CCSN4.*AAJTSQACMDEAAlNLABQtMTQ2NTcwMTgyOTEwMjQ5MTg4OQACUzEAAA..*)
2017-01-24 11:29:55.484 +0800 WARNING [0x7f180e887700:17669] validate_policy(): retry 0 (remote session/policy call failure: error)
2017-01-24 11:29:57.490 +0800 WARNING [0x7f180e887700:17669] validate_policy(): retry 1 (remote session/policy call failure: error)
2017-01-24 11:29:59.497 +0800 WARNING [0x7f180e887700:17669] validate_policy(): retry 2 (remote session/policy call failure: error)
2017-01-24 11:30:01.504 +0800 WARNING [0x7f180e887700:17669] validate_policy(): retry 3 (remote session/policy call failure: error)
2017-01-24 11:30:03.504 +0800 ERROR [0x7f180e887700:17669] validate_policy(): remote session/policy call to validate 'http://agent.job.com.tw:80/notification/push' failed (max 3 retries exhausted)

这种情况下的预期行为是将用户重定向到身份验证,我认为是这样,如果用户有效并且无权访问该页面,则会指示代理阻止用户进入该页面,如下面的这个.

2017-01-24 11:43:59.009 +0800 WARNING [0x7f17f9ff3700:17669] am_get_session_policy_cache_entry(): failed to locate data for a key (AQIC5wM2LY4Sfcz6gBnS77c_KhZogqv6gYGQdjU1WpRaQxE.*AAJTSQACMDEAAlNLABMzMTYxMjIwNDAzNjc4NDA4MDQxAAJTMQAA*)
2017-01-24 11:43:59.050 +0800 WARNING [0x7f17f9ff3700:17669] validate_policy(): decision: deny, reason: no action decisions found
2017-01-24 11:43:59.213 +0800 WARNING [0x7f180d000700:17669] validate_policy(): validate policy did not find a match for 'http://agent.job.com.tw:80/favicon.ico' in the cached entries, retrying with the new request to the policy service
2017-01-24 11:43:59.227 +0800 WARNING [0x7f180d000700:17669] validate_policy(): decision: deny, reason: no action decisions found

但是,如果我自己导航到 OpenAM 服务器页面,无论在访问资源页面之前或之后返回 403 页面,OpenAM 都会要求我进行身份验证!换句话说,登录时,iPlanetDirectoryPro cookie 消失了,我猜它被 OpenAM 清除了,所以这意味着 OpenAM 能够区分过期会话,或者至少,它知道如何采取处理不再有效的 iPlanetDirectoryPro cookie。

如果我选择不立即登录并返回资源页面,它会开始重定向到 OpenAM 进行身份验证,这很好。获取 403 页面时,手动删除 iPlanetDirectoryPro cookie 会达到同样的效果。

这真的很烦人,对于普通用户来说可能很关键,他们不会意识到要执行上述解决方法。

希望有人能帮我解决这个问题,非常感谢。

【问题讨论】:

  • 一般来说这是可行的,所以您的部署似乎存在特定问题。在代理 4 中,SSOToken 的缓存发生了变化。只要在 OpenAM 服务器端配置了“maxCachingTime”,它就会被缓存。当 SSO 会话超时并且代理配置为通知模式时,OpenAM 还会向代理发送通知以清理缓存。
  • 抱歉回复晚了,我的测试环境也遇到了这个问题,一个 Ubuntu 虚拟机只能按照Getting Started With OpenAMOpenAM Web Policy Agent Release Notes 中的步骤进行配置。您提到的 maxCachingTime 选项默认为 3 分钟,我尝试将其更改为 0 但问题仍然存在。感谢您的帮助。

标签: single-sign-on openam


【解决方案1】:

我相信你遇到了这个错误:AMAGENTS-279

【讨论】:

  • AMAGENTS-279 看起来与我在这里遇到的问题几乎相同。但是我也发现如果我的浏览器在启动时恢复了上次打开的标签,并且我在退出前没有关闭403标签,它在启动后仍然得到403。我已阅读发行说明,发现有一个问题OPENAM-8088 看起来与我遇到的相似,并且仅在 Agents 4.0.1 中针对订阅者进行了修复。而且我不太确定我面临的问题是否正是那个问题,因为那里使用的术语是会话。
  • 但是,如果我关闭 403 页面,然后重新启动浏览器,打开一个新选项卡并访问该页面,会将我重定向到我想要的身份验证。看来我可以做的是等到问题解决,并避免使用浏览器访问受保护的资源,该资源的工作时间将超过最大会话时间或修复到达之前的最大会话空闲时间。感谢您提供问题信息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-25
  • 2021-11-27
相关资源
最近更新 更多