【发布时间】:2015-11-20 00:59:27
【问题描述】:
我正在尝试将 PingAccess 设置为代理(让我们调用 PA 主机
pagateway) 用于共享 Web 会话的几个应用程序。我希望所有访问都通过 PA 网关并使用 HTTPS,但后端系统不是 HTTPS。
我定义了两个站点,app1:8080 和 app2:8080。两者都设置为 "secure" = no 和 "use target host header" = yes。
我在端口 5000 和 5001 上定义了侦听器,它们都设置为“安全”= yes。
我发现的第一个问题是,当我以这种方式访问任一应用程序时(例如转到 https://pagateway:5000),在成功使用 PingFederate 进行身份验证后,我最终会被重定向到实际的底层主机名(例如 http://app1:8080),这意味着与应用程序的任何后续交互都不是通过 PingAccess。对于网络外的用户,他们甚至无法做到这一点,因为 app1 主机甚至不可见或不可访问。
我想也许我需要将“使用目标主机标头”关闭为 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 之间,或在 pagateway 和 app1 之间)。我猜可能app1 遇到了意外的主机头问题...
在另一个变体中,我关闭了 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)
有人知道我做错了什么吗?老实说,我对重定向到实际服务器名称感到有些惊讶,但在那之后,我不知道从哪里开始。
任何帮助将不胜感激。
【问题讨论】:
标签: ssl https proxy pingaccess