0

我正在处理 webseal 身份验证,我已经创建了名称为/dgcontroller/services/dgsecure的联结,我已经创建了与联结 同名的其余 api。

这是其余的api

@RequestMapping(value = "/dgsecure", method = RequestMethod.GET)
    public void handleRedirectionForDgsecure(HttpServletRequest request, HttpServletResponse response)throws IOException, DgException {
        try {
            System.out.println("inside my service");

            String userIdentifierWebSEAL = "";
            
            String redirectionURL = "";

            userIdentifierWebSEAL = request.getHeader("iv-user");
            
            redirectionURL = "http://192.168.2.80:10181/dgadmin/login.html";
                        
            response.sendRedirect(redirectionURL);

        } catch (Exception e) {
            logger.error("Error in webseal handleRedirectionForDgsecure Rest API", e);
            response.sendRedirect("/dgcontroller/error.jsp");
        }
    }

iv-user 被成功获取,但之后它不会重定向到给定的 redirectionURL。谁能帮我解决这个问题。谢谢

4

1 回答 1

0

您尝试重定向到的绝对 URL 可能与联结服务器:端口配置不匹配。 根据文档,如果匹配,WebSEAL 应该删除 server:port 并重写为相对 URL。最佳做法是在您的应用程序中使用相对 URL。如果您尝试将 AWAY 从 WebSEAL 主机名全部重定向到不同的主机,那么 WebSEAL 可能会在您不希望的情况下重写 URL,在这种情况下您需要禁用该功能。

查看有关修改 URL 的文档。如果我的第一个建议不起作用,有几件事可能有用。在脚本内的绝对 URL 重写、JMT(连接映射表)和使用连接 cookie 的脚本支持之间,有多种方法可以实现重写。

现在,为了弄清楚发生了什么。最好的办法是在第 9 级使用 pdweb.debug 执行跟踪。如果在虚拟设备上,您可以通过 LMI 启用它(最好的方法,防止将日志文件发送到您无法清理它们的地方),或者使用pdadmin 工具和服务器任务命令。pdweb.debug 将为您提供标头跟踪(不是 HTTP 正文内容),并将向您显示重定向的位置标头。如果这还不够,则在级别 9 启用 pdweb.snoop 跟踪,它将捕获请求中的 HTTP 正文以及客户端、webseal 和后端应用程序服务器的响应。同时启用调试和窥探跟踪是始终找出有关重定向重写的问题的可靠方法。如果你不能忍受手动阅读窥探,L2 在 Perl 和 HTML 中有一些支持实用程序来提供帮助

于 2020-11-25T21:28:52.257 回答