【问题标题】:oracle weblogic OAM servlet proxy - how to propagate OAMAuthnCookieoracle weblogic OAM servlet 代理 - 如何传播 OAMAuthnCookie
【发布时间】:2019-04-18 14:09:20
【问题描述】:

我正在尝试在 weblogic 版本是 12.2.1.3 中与 SSO 搏斗。我们已将它与 OAM/OID 集成在一个由 Oracle Forms & Reports 组成的更大应用程序中。除了 Forms,我们还有各种需要从 Forms 调用的基于 servlet 的自定义应用程序。

这很好。

由于身份验证发生在 Oracle 世界中,通过 OAM 登录屏幕,到目前为止,除了从 HTTP 标头获取用户名之外,我不必在我的 Java 自定义代码中搞乱访问管理。

不好的是,有时我们需要 servlet 充当表单和报表之间的中间人。例如。我需要用报告(在服务器上)调用各种东西,转换它们并将它们发送回客户端。我知道这在设计上听起来不正确。但它仍然是遗留代码,我们需要完成这项工作 - 至少需要尝试..

以前,我们过去常常在请求之间传递 cookie。但在 11/12g OAM 中,我从 here 收集到成功会话验证所需的 cookie (OAMAuthnCookie) 在到达我的 servlet 之前已从请求中删除。这似乎确实发生了,基于我正在做的标头转储,并使用浏览器上的 F12 开发人员工具跟踪调用。

所以.. 我已经收集到我需要生成一个新的 OAMAuthnCookie,或者可以创建它并将其附加到新的 http 调用的东西.. 我只是希望专家或处理过这个问题的人来验证以下假设是正确的 - 唯一的方法是使用 OAM SDK(有点不直观,恕我直言)。

另一件事 - 我发现的许多关于 OAM SDK 的示例都处理登录表单。我不需要做用户认证,也不需要我自己和 OAM 交谈来验证资源是否受到保护。我正在处理一个已经过身份验证的请求 - 需要以某种方式从 HttpServletRequest 获取 UserSession 和用户令牌,以便生成新的 OAMAuthnCookie 以便我的下一个请求(使用例如 apache 客户端)成功。我曾经假设这不会很难做到,但现在有点难过。

感谢您的关注。

【问题讨论】:

    标签: java oracle weblogic single-sign-on oam


    【解决方案1】:

    使用 OAM SDK,据我草书所见(在撰写本文时,我们使用 Weblogic 12c 和 Access Manager,其行为与讨论 OAM 11g 的文档中描述的完全一样 - 因此我认为这是版本我们也在使用),涉及

    • 从 OAM 控制台生成 ObAccessClient.xml,以在您正在处理的代码(将称为 Access Client)和 OAM 之间建立联系
    • 将可下载 OAM SDK 中的 JAR 包含在您的应用中
    • 在您的应用程序中编写代码(例如,在身份验证过滤器或 servlet 中)以通过其 SDK 与 OAM 建立通信以最终进行身份验证/授权等。

    Oracle documentation here 中有一个很好的关于如何编写代码的指南。

    我还发现这些文章非常有用:

    我想到的代码最终会生成一个新的身份验证 cookie,我会将其传递给报告 servlet 以进行进一步授权(因为在到达我的应用程序之前,确实从请求中删除了这个 cookie)。根据another Oracle A-Team article,我发现生成此类 cookie 的唯一方法是更改​​ OAM 控制台中的设置以在请求中包含另一个 cookie (OAM_IDENTITY_ASSERTION)。

    在上述调查的过程中,我终于在Oracle论坛中偶然发现了this magic reply to a question。根据它,OAM控制台中有一个用户设置,允许关闭OAMAuthnCookie的默认过滤。

    filterOAMAuthnCookie=false
    

    在我们的例子中,这非常适合我。事实上,在更改之后,有问题的 cookie 终于到达了我的应用程序,结果我能够将其传递给 Oracle Reports 的后续请求,而无需使用 OAM SDK。

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 2013-08-31
      • 2012-11-11
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多