我正在尝试在Weblogic版本12.2.1.3中使用SSO。我们已将其与OAM / OID集成在一个包含Oracle Forms&Reports的大型应用程序中。除了Forms,我们还有各种需要从Forms调用的基于Servlet的自定义应用程序。
这很好。
由于身份验证是通过OAM登录屏幕在Oracle世界中进行的,所以到目前为止,除了从HTTP标头中获取用户名之外,我还无需在Java自定义代码中弄乱访问管理。
不好的是,有时我们需要我们的servlet充当Forms和Reports之间的中间人。例如。我需要使用Reports(在服务器上)调用各种内容,对其进行转换并将其发送回客户端。我知道这在设计上听起来并不正确。但这仍然是遗留代码,我们需要完成这项工作-至少需要尝试一下。
以前,我们过去常常在请求之间传递cookie。但是在11 / 12g OAM中,我从here收集到成功会话验证所需的cookie(OAMAuthnCookie)在到达我的servlet之前已从请求中删除。这确实发生了,这是基于我正在执行的标头转储,并使用浏览器上的F12开发人员工具来跟踪调用。
所以..我已经收集到我需要生成一个新的OAMAuthnCookie或将其创建并将其附加到新的http调用的东西。.我只是想要一个专家或已经对此进行过处理的人来验证以下假设是正确的-唯一的方法是使用OAM SDK(有点不直观的恕我直言)。
另一件事-我发现的有关OAM SDK的许多示例都处理登录表单。我不需要进行用户身份验证,也不需要自己与OAM交谈以验证资源是否受到保护。我正在处理一个已经过身份验证的请求-需要以某种方式从HttpServletRequest获取UserSession和用户令牌,以便生成新的OAMAuthnCookie,以便我的下一个请求(例如使用apache客户端)成功。。我曾经假设这不会很难,但是现在有点难过了。
感谢您的关注。
答案 0 :(得分:0)
据我所见,使用OAM SDK时(在撰写本文时,我们正在将Weblogic 12c与Access Manager一起使用,其行为与讨论OAM 11g的文档中所描述的完全相同-因此,我认为这是版本我们也在使用),涉及
有一个很好的指南,说明如何在Oracle documentation here中编写代码。
我还发现这些文章非常有用:
我想到的代码最终将生成一个新的身份验证cookie,然后将其传递给report servlet以进行进一步授权(因为在到达我的应用程序之前,该cookie实际上已从请求中剥离)。根据{{3}},我发现生成此类Cookie的唯一方法是在OAM控制台中更改设置以在请求中包含另一个Cookie(OAM_IDENTITY_ASSERTION)。
在上述调查过程中,我最终在Oracle论坛上偶然发现了another Oracle A-Team article。据此,在OAM控制台中有一个用户设置,该设置允许关闭OAMAuthnCookie的默认过滤。
filterOAMAuthnCookie=false
就我们而言,这非常适合我。确实,更改之后,有问题的cookie终于到达了我的应用程序,从而使我能够将它传递给Oracle Reports的后续请求,而无需使用OAM SDK。