0

我已经实现了 SSO 服务,并且在很多天之后,我得到了它。但是现在我遇到了一个问题,如果您在本地网络和位于同一位置的另一个网络中,CAS 服务 (SSO) 可以工作,但是如果我从外部网络连接,我将无法连接。我可以访问服务,但一步失败并出现错误:连接被拒绝。

我使用 phpCAS 对服务进行身份验证,日志是这样的:

3CEF .=> phpCAS::forceAuthentication() [portal.php:16]

3CEF。| => CAS_Client::forceAuthentication() [CAS.php:1098]

3CEF。| | => CAS_Client::isAuthenticated() [Client.php:1280]

3CEF。| | | => CAS_Client::_wasPreviousAuthenticated() [Client.php:1393]

3CEF。| | | | 未找到用户 [Client.php:1635]

3CEF。| | | <= 假

3CEF。| | | CAS 2.0 票证“ST-7-6cgDalH6VPKQ5vE6SyCB-cas”存在 [Client.php:1447]

3CEF。| | | => CAS_Client::validateCAS20('', NULL, NULL, false) [Client.php:1450]

3CEF。| | | | [客户端.php:3169]

3CEF。| | | | => CAS_Client::getServerServiceValidateURL() [Client.php:3176]

3CEF。| | | | | => CAS_Client::getURL() [Client.php:453]

3CEF。| | | | | | 最终 URI:https ://www.XX.com/portal.php [Client.php:3548]

3CEF。| | | | | <= ' https://www.XX.com/portal.php '

3CEF。| | | | <= ' https://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php '

3CEF。| | | | => CAS_Client::_readURL(' https://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php&ticket=ST-7-6cgDalH6VPKQ5vE6SyCB-cas ', NULL , NULL, NULL) [Client.php:3191]

3CEF。| | | | | => CAS_Request_CurlRequest::sendRequest() [AbstractRequest.php:242]

3CEF。| | | | | | curl_exec() 失败 [CurlRequest.php:77]

3CEF。| | | | | <= 假

3CEF。| | | | <= 假

3CEF。| | | | 无法打开 URL“ https://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php&ticket=ST-7-6cgDalH6VPKQ5vE6SyCB-cas ”进行验证(CURL 错误#7: 无法连接到 XX.com 端口 8442: Connection refused ) [Client.php:3194]

3CEF。| | | | => CAS_AuthenticationException::__construct(CAS_Client, '票证未验证', ' https://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php&ticket=ST- 7-6cgDalH6VPKQ5vE6SyCB-cas ',真)[Client.php:3198]

3CEF。| | | | | => CAS_Client::getURL() [AuthenticationException.php:77]

3CEF。| | | | | <= ' https://www.XX.com/portal.php '

3CEF。| | | | | CAS URL:https ://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php&ticket=ST-7-6cgDalH6VPKQ5vE6SyCB-cas [AuthenticationException.php:80]

3CEF。| | | | | 身份验证失败:票证未验证 [AuthenticationException.php:81]

3CEF。| | | | | 原因:CAS 服务器没有响应 [AuthenticationException.php:83]

3CEF。| | | | | 出口()

3CEF。| | | | | -

3CEF。| | | | -

3CEF。| | | -

3CEF。| | -

3CEF。| -

正如我所说,它在本地和“半本地”网络中工作,但我无法从外部网络进行身份验证。

我打开了端口 8442,出于某种原因,从外部网络端口 8442 被关闭。我知道这是问题所在,但我不知道如何让这个端口监听应用程序。事实上,CAS 服务位于一台服务器中,而 WebService(登录、门户...)位于另一台服务器中。我一直在配置防火墙,但可能我做错了,但我不知道会发生什么,因为在本地它运行良好。

如果我使用服务和票证输入 validateService 的 URL(https://XX.com:8442/cas/serviceValidate?service=https%3A%2F%2Fwww.XX.com%2Fportal.php&ticket=ST-7-6cgDalH6VPKQ5vE6SyCB- cas ) 在浏览器上我得到了正确的用户名,所以我不知道为什么在 phpCAS 的事务中不起作用。

我希望你能帮助我,谢谢你的回答!

4

1 回答 1

0

你得到连接被拒绝。这显然是一个防火墙问题。如果您已在服务器上部署了 CAS 应用程序,请确保该服务器位于可以从外部访问的正确安全防火墙区域中。您组织中的网络安全人员应该能够为您提供帮助。

于 2018-05-30T13:55:25.227 回答