diff --git a/auth/cas/auth.php b/auth/cas/auth.php index 22733b2a821..5fc773baa7d 100644 --- a/auth/cas/auth.php +++ b/auth/cas/auth.php @@ -183,6 +183,11 @@ class auth_plugin_cas extends auth_plugin_ldap { } else { phpCAS::client($this->config->casversion, $this->config->hostname, (int) $this->config->port, $this->config->baseuri, false); } + //Some CAS installs require SSLv3, etc be explicitly set. + if (!empty($this->config->curl_ssl_version)) { + phpCAS::setExtraCurlOption(CURLOPT_SSLVERSION,$this->config->curl_ssl_version); + } + $connected = true; } @@ -302,6 +307,9 @@ class auth_plugin_cas extends auth_plugin_ldap { if (!isset($config->certificate_path)) { $config->certificate_path = ''; } + if (!isset($config->curl_ssl_version)) { + $config->curl_ssl_version = ''; + } if (!isset($config->logout_return_url)) { $config->logout_return_url = ''; } @@ -374,6 +382,7 @@ class auth_plugin_cas extends auth_plugin_ldap { set_config('multiauth', $config->multiauth, $this->pluginconfig); set_config('certificate_check', $config->certificate_check, $this->pluginconfig); set_config('certificate_path', $config->certificate_path, $this->pluginconfig); + set_config('curl_ssl_version', $config->curl_ssl_version, $this->pluginconfig); set_config('logout_return_url', $config->logout_return_url, $this->pluginconfig); // save LDAP settings diff --git a/auth/cas/config.html b/auth/cas/config.html index 13c29899dc1..1a1e0edfce0 100644 --- a/auth/cas/config.html +++ b/auth/cas/config.html @@ -33,6 +33,9 @@ if (!isset ($config->certificate_check)) { if (!isset ($config->certificate_path)) { $config->certificate_path = ''; } +if (!isset ($config->curl_ssl_version)) { + $config->curl_ssl_version = ''; +} if (!isset($config->logout_return_url)) { $config->logout_return_url = ''; } @@ -216,6 +219,16 @@ if (!ldap_paged_results_supported($config->ldap_version)) { + + + + + error_text($err['curl_ssl_version']); ?> + + + + + : diff --git a/auth/cas/lang/en/auth_cas.php b/auth/cas/lang/en/auth_cas.php index c30522c6d98..e85588b07f1 100644 --- a/auth/cas/lang/en/auth_cas.php +++ b/auth/cas/lang/en/auth_cas.php @@ -35,6 +35,8 @@ $string['auth_cas_certificate_path_empty'] = 'If you turn on Server validation, $string['auth_cas_certificate_check_key'] = 'Server validation'; $string['auth_cas_certificate_path'] = 'Path of the CA chain file (PEM Format) to validate the server certificate'; $string['auth_cas_certificate_path_key'] = 'Certificate path'; +$string['auth_cas_curl_ssl_version'] = 'The SSL version (2 or 3) to use. By default PHP will try to determine this itself, although in some cases this must be set manually.'; +$string['auth_cas_curl_ssl_version_key'] = 'cURL SSL Version'; $string['auth_cas_create_user'] = 'Turn this on if you want to insert CAS-authenticated users in Moodle database. If not then only users who already exist in the Moodle database can log in.'; $string['auth_cas_create_user_key'] = 'Create user'; $string['auth_casdescription'] = 'This method uses a CAS server (Central Authentication Service) to authenticate users in a Single Sign On environment (SSO). You can also use a simple LDAP authentication. If the given username and password are valid according to CAS, Moodle creates a new user entry in its database, taking user attributes from LDAP if required. On following logins only the username and password are checked.';