【问题标题】:Unable to authenticate with CAS无法通过 CAS 进行身份验证
【发布时间】:2018-05-09 08:25:04
【问题描述】:

我已经实施了 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 .| | | | [Client.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:连接被拒绝)[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', true) [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(登录、门户...)位于另一台服务器中。我一直在配置防火墙,但可能我做错了,但我不知道会发生什么,因为在本地它运行良好。

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

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

【问题讨论】:

  • 连接被拒绝。这显然是一个防火墙问题。如果您已在服务器上部署了 CAS 应用程序,请确保该服务器位于可以从外部访问的正确安全防火墙区域中。我认为,您组织中的网络安全人员应该能够为您提供帮助。
  • 我可以解决它。我对 phpCAS 源代码进行了更改以获得正确的 URL,因为正如您所说,某些 URL 无法从某些网络访问。现在它正在工作。顺便说一句,谢谢你的评论:)
  • 很高兴它有帮助。如果他们最终遇到同样的问题,我将其发布为将来帮助其他人的答案。如果您认为它适合您的问题,请接受答案。

标签: cas phpcas


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 2014-01-05
    • 1970-01-01
    • 2015-09-15
    • 2017-08-31
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多