0

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

这可以。

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

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

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

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

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

感谢您的关注。

4

1 回答 1

0

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

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

这里有一个关于如何在Oracle 文档中编写代码的很好的指南。

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

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

在上述调查的过程中,我终于在甲骨文论坛的一个问题上偶然发现了这个神奇的回复。根据它,OAM 控制台中有一个用户设置,允许关闭 OAMAuthnCookie 的默认过滤。

filterOAMAuthnCookie=false

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

于 2019-05-03T10:29:39.030 回答