【问题标题】:OpenAM 11: Display exception from authenticating datastoreOpenAM 11:显示身份验证数据存储的异常
【发布时间】:2014-12-16 13:08:34
【问题描述】:

我们在 OpenAM 中使用自定义数据库数据存储。该商店根据我们的 Oracle 数据库对用户进行身份验证。 现在,有许多可能的原因导致身份验证失败。该帐户可能在 Oracle 中被锁定,或者密码可能已过期。 数据存储捕获 SQLException,但如何将原因传播到 OpenAM UI?

我可以从 authenticate() 抛出一个 AuthLoginException,但在到达 AMLoginContext 的途中,它会被包装,并且 AMLoginContext 无论如何都会忽略 AuthLoginExceptionS 的错误代码。含义:AMLoginContext 不会从异常中读取错误码,而是尝试自行判断错误码,通常只是将 AMAuthErrorCode.AUTH_LOGIN_FAILED 置于登录状态。

如何让 UI 显示登录问题的原因?

【问题讨论】:

  • 出于安全原因,未显示错误的实际原因,否则会知道,例如帐号存在,密码错误,帐号被锁定
  • 好吧,如果用户的密码已经过期,我们需要知道这一点。否则我们将如何提示用户更改密码才能继续应用程序!?如果帐户被锁定,那么让用户重新输入密码也没有意义。
  • 您可以扩展 JDBC 身份验证模块并处理密码过期,就像在 LDAP 身份验证模块中所做的那样......,默认的数据存储身份验证模块不打算提供此功能。

标签: openam


【解决方案1】:

正如 Bernhard 所说,不建议这样做。但是,您可以从您的数据存储中获取一个 Debug 实例 (com.sun.identity.shared.debug.Debug),并且您可以记录异常,它们将出现在 [AM_INSTALL_DIR]/openam/debug 中。

编辑:您可以在整个 OpenAM 源代码中找到这样做的示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-25
    • 2023-03-06
    • 2018-12-10
    • 2012-01-07
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    相关资源
    最近更新 更多