CAS Authentication Library for CodeIgniter

后端 未结 3 1192
太阳男子
太阳男子 2021-01-24 13:51

I am trying to implement CAS authentication in a CodeIgniter application though I cannot find if there are any libraries currently set up for it. I am managing by just including

3条回答
  •  终归单人心
    2021-01-24 14:16

    UPDATE: You can find the latest version of the library at Github: https://github.com/eliasdorneles/code-igniter-cas-library

    You can also install via sparks: http://getsparks.org/packages/cas-auth-library/versions/HEAD/show

    I've started a CAS library to simplify setting up CAS authentication for CodeIgniter, that relies on the existing phpCAS. To start using it, you just have installation phpCAS in some accessible directory, put the library file in application/libraries/Cas.php and create a config file config/cas.php like this:

    Then, in your controllers you would be able to do this:

    function index() {
        $this->load->library('cas');
        $this->cas->force_auth();
        $user = $this->cas->user();
        echo "Hello, $user->userlogin!";
    }
    

    Here is the library file (has to be named Cas.php):


    Please, check your configuration for the following file: config/cas.php The minimum configuration requires:
    • cas_server_url: the URL of your CAS server
    • phpcas_path: path to a installation of phpCAS library
    • and one of cas_disable_server_validation and cas_ca_cert_file.
    "); } class Cas { public function __construct(){ if (!function_exists('curl_init')){ show_error('ERROR: You need to install the PHP module curl to be able to use CAS authentication.'); } $CI =& get_instance(); $this->CI = $CI; $CI->config->load('cas'); $this->phpcas_path = $CI->config->item('phpcas_path'); $this->cas_server_url = $CI->config->item('cas_server_url'); if (empty($this->phpcas_path) or filter_var($this->cas_server_url, FILTER_VALIDATE_URL) === FALSE) { cas_show_config_error(); } $cas_lib_file = $this->phpcas_path . '/CAS.php'; if (!file_exists($cas_lib_file)){ show_error("Could not find file: " . $cas_lib_file. ""); } require_once $cas_lib_file; if ($CI->config->item('cas_debug')) { phpCAS::setDebug(); } // init CAS client $defaults = array('path' => '', 'port' => 443); $cas_url = array_merge($defaults, parse_url($this->cas_server_url)); phpCAS::client(CAS_VERSION_2_0, $cas_url['host'], $cas_url['port'], $cas_url['path']); // configures SSL behavior if ($CI->config->item('cas_disable_server_validation')){ phpCAS::setNoCasServerValidation(); } else { $ca_cert_file = $CI->config->item('cas_server_ca_cert'); if (empty($ca_cert_file)) { cas_show_config_error(); } phpCAS::setCasServerCACert($ca_cert_file); } } /** * Trigger CAS authentication if user is not yet authenticated. */ public function force_auth() { phpCAS::forceAuthentication(); } /** * Return an object with userlogin and attributes. * Shows aerror if called before authentication. */ public function user() { if (phpCAS::isAuthenticated()) { $userlogin = phpCAS::getUser(); $attributes = phpCAS::getAttributes(); echo "has attributes? "; var_dump(phpCAS::hasAttributes()); return (object) array('userlogin' => $userlogin, 'attributes' => $attributes); } else { show_error("User was not authenticated yet."); } } /** * Logout and redirect to the main site URL, * or to the URL passed as argument */ public function logout($url = '') { if (empty($url)) { $this->CI->load->helper('url'); $url = base_url(); } phpCAS::logoutWithRedirectService($url); } }

提交回复
热议问题