我試圖在CodeIgniter應用程序中實現CAS認證,儘管我找不到目前是否有任何庫設置爲它。我管理的只是包括課程,並添加了一些骯髒的修復,但如果有人知道一個合適的庫,我認爲這將是一個更乾淨的解決方案。CodeIgniter的CAS認證庫
我一直在尋找這裏以及谷歌各地的一系列帖子,但似乎對我需要的東西不足。任何相關的唯一的地方是VCU Libraries上的帖子,但不包括圖書館下載鏈接。
謝謝大家!
我試圖在CodeIgniter應用程序中實現CAS認證,儘管我找不到目前是否有任何庫設置爲它。我管理的只是包括課程,並添加了一些骯髒的修復,但如果有人知道一個合適的庫,我認爲這將是一個更乾淨的解決方案。CodeIgniter的CAS認證庫
我一直在尋找這裏以及谷歌各地的一系列帖子,但似乎對我需要的東西不足。任何相關的唯一的地方是VCU Libraries上的帖子,但不包括圖書館下載鏈接。
謝謝大家!
UPDATE:您可以在Github上找到最新版本的庫:https://github.com/eliasdorneles/code-igniter-cas-library
您還可以通過安裝火花:http://getsparks.org/packages/cas-auth-library/versions/HEAD/show
我已經開始CAS庫,以簡化爲CodeIgniter設置CAS認證,該認證依賴於現有的phpCAS。 要開始使用它,你就必須在一些訪問的目錄安裝phpCAS,把庫文件中application/libraries/Cas.php
,並創建一個配置文件config/cas.php
這樣的:
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
$config['cas_server_url'] = 'https://yourserver.com/cas';
$config['phpcas_path'] = '/path/to/phpCAS-1.3.1';
$config['cas_disable_server_validation'] = TRUE;
// $config['cas_debug'] = TRUE; // <-- use this to enable phpCAS debug mode
然後,在你的控制器,你將能夠做到這一點:
function index() {
$this->load->library('cas');
$this->cas->force_auth();
$user = $this->cas->user();
echo "Hello, $user->userlogin!";
}
這裏是庫文件(已經被命名爲Cas.php):
<?php if (! defined('BASEPATH')) exit('No direct script access allowed');
function cas_show_config_error(){
show_error("CAS authentication is not properly configured.<br /><br />
Please, check your configuration for the following file:
<code>config/cas.php</code>
The minimum configuration requires:
<ul>
<li><em>cas_server_url</em>: the <strong>URL</strong> of your CAS server</li>
<li><em>phpcas_path</em>: path to a installation of
<a href=\"https://wiki.jasig.org/display/CASC/phpCAS\">phpCAS library</a></li>
<li>and one of <em>cas_disable_server_validation</em> and <em>cas_ca_cert_file</em>.</li>
</ul>
");
}
class Cas {
public function __construct(){
if (!function_exists('curl_init')){
show_error('<strong>ERROR:</strong> You need to install the PHP module <strong>curl</strong>
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: <code>" . $cas_lib_file. "</code>");
}
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);
}
}
我推薦使用Ion Auth Library,它建立在Redux Auth之上,它變得過時了。 Ion Auth重量輕,易於定製,並可滿足您的需求。 Ion Auth是CodeIgniter的最佳認證庫之一。
我必須同意這一點。 Ion Auth非常輕巧,易於實施和定製。此外,CodeIgniter應該有一些內置的身份驗證(http://codeigniter.uservoice.com)。 – Fuseblown 2011-04-17 23:57:21
Ion Auth非常好,但是您仍然需要編寫自己的CAS組件。 – icchanobot 2011-04-18 01:49:03
Ion Auth確實看起來非常穩固,我堅持使用CAS的唯一原因是因爲它需要與其他人的記錄集成。將看看這個並嘗試並納入CAS。謝謝 – Twade 2011-04-18 22:37:29
什麼是不適用於VCU庫?
任何你可以在PHP中做的事情,你可以在CodeIgniter中做。 所以你可以使用PHP CAS客戶端: http://www.jasig.org/phpcas-121-final-release
這裏是一個如何進行身份驗證的例子。
https://source.jasig.org/cas-clients/phpcas/trunk/docs/examples/example_simple.php
您鏈接的客戶端是我目前使用的客戶端。我面臨的唯一問題是,包含庫我需要多個CAS庫的副本,因爲我的主機可以防止文件鏈接,並在包含文件夾時包含錯誤。我想有一個專門的圖書館會使它更簡單,包括 – Twade 2011-04-18 22:38:48
你有沒有考慮過把它添加到github? – beardedlinuxgeek 2012-09-18 17:56:57
謝謝,我想也許我應該等待別人認爲這很有趣。我想時間已經到了,我會很快做到的! :) – elias 2012-09-19 16:38:19
我已經設置了一個[GitHub repo](http://getsparks.org/packages/cas-auth-library/show)和一個[spark](http://getsparks.org/packages/cas- AUTH-庫/顯示)。 – elias 2012-09-19 23:23:27