ssl - 使用 HTTP/HTTPS 混合代理目标站点的 PingAccess 问题

标签 ssl https proxy pingaccess

我正在尝试将 PingAccess 设置为代理(让我们调用 PA 主机 pagateway) 用于共享 Web session 的几个应用程序。我希望所有访问都通过 PA 网关并使用 HTTPS,但后端系统不是 HTTPS。

我定义了两个站点,app1:8080app2:8080。两者都设置为“secure”= no 和“use target host header”= yes。

我在端口 5000 和 5001 上定义了监听器,它们都设置为“secure”= yes。

我发现的第一个问题是,当我以这种方式访问​​任一应用程序时(例如转到 https://pagateway:5000),在使用 PingFederate 成功验证后,我最终被重定向到实际的底层主机名(例如 http://app1:8080),这意味着与应用程序的任何后续交互都不是通过 PingAccess。对于网络外的用户,他们甚至无法这样做,因为 app1 主机甚至不可见或不可访问。

我想也许我需要将“使用目标主机 header ”关闭为 false,但 Chrome 提示我下载一个包含 NAK、ETX、ETX、NUL、STX、STX 代码的文件,并且在 PA 日志中我得到了一个SSL 错误:

2015-11-20 11:13:33,718 DEBUG [6a5KYac2dnnY0ZpIl-3GNA] com.pingidentity.pa.core.transport.http.HttpServerHandler:180 - IOException reading sourceSocket
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at sun.security.ssl.InputRecord.handleUnknownRecord(InputRecord.java:710)
    ...

我不确定 SSL 错误到底来自过程的哪一部分(在浏览器和 pagateway 之间,或 pagatewayapp1 之间) ).我猜 app1 可能遇到意外主机 header 的问题...

在另一个变体中,我关闭了 PA 监听器上的 SSL(我还必须将 PingFederate 客户端设置中的 PingAccess 回调 URL 更改为 http)。但是当我通过 http://pagateway:5000 访问它时,我在浏览器中收到了一条通用的 PingFederate 错误消息,并且在 PA 日志中收到了一条不同的错误消息:

2015-11-20 11:37:25,764 DEBUG [DBxHnFjViCgLYgYb-IrfqQ] com.pingidentity.pa.core.interceptor.flow.InterceptorFlowController:148 - Invoking request handler: Scheme Validation for Request to [pagateway:5000] [/]
2015-11-20 11:37:25,764 DEBUG [DBxHnFjViCgLYgYb-IrfqQ] com.pingidentity.pa.core.interceptor.flow.InterceptorFlowController:200 - Exception caught.  Invoking abort handlers
com.pingidentity.pa.sdk.policy.AccessException: Invalid request protocol.
    at com.pingidentity.pa.core.interceptor.SchemeValidationInterceptor.handleRequest(SchemeValidationInterceptor.java:61)

有人知道我做错了什么吗?老实说,我对重定向到实际服务器名称感到有点惊讶,但在那之后我对从这里去哪里感到困惑。

如有任何帮助,我们将不胜感激。

最佳答案

联系过our support吗在这个?这听起来像是需要深入挖掘的东西 - 但我可以提出一些高层次的建议:

查看浏览器跟踪以确定后端站点何时发生重定向。这通常是因为后端 Web 服务器的重定向中有一个 Location header (本质上)是一个绝对 URL,但指向它而不是面向外部的主机名。

一个常见的解决方案是将 Target Host Header 设置为 False - 这样它将从浏览器接收未修改的请求,并且后端服务器应该知道将自己表示为那个(如果它在代理后面表现良好)。

如果后端服务器不能这样做(听起来好像不能)——您应该考虑为该应用程序分配重写规则。有关它们的更多详细信息,请访问:https://support.pingidentity.com/s/document-item?bundleId=pingaccess-52&topicId=reference%2Fui%2Fpa_c_Rewrite_Rules_Overview.html . “重写响应 header 规则”尤其会重写 HTTP 重定向中的位置 header 。

仅供引用 - “无效的请求协议(protocol)”。您在描述底部看到的错误可能是由于您定义的应用程序上的“需要 HTTPS”标志。

关于ssl - 使用 HTTP/HTTPS 混合代理目标站点的 PingAccess 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33817224/

相关文章:

ssl - HTML 函数在 SSL 下不工作

ssl - JMSCMQ0001 : IBM MQ call failed with compcode '2' ('MQCC_FAILED' ) reason '2400' ('MQRC_UNSUPPORTED_CIPHER_SUITE' )

javascript - 内容文件在 SSL 连接上返回 "empty"

java - Android WebView - 使用经过身份验证的代理

java - 检查证书是否有效

ssl - 从 .NET 5 中的 ServicePointManager.SecurityProtocol 解析密码套件

php - 无法连接到 WSDL

python应用程序中的SSLError,证书更新后

google-chrome - 您可以使用不同的代理运行多个 Chrome 实例吗?

python - 在代理后面使用 python-twitter