「个人学习记录,肯定有理解错误和理解不透的地方,小白总是有个成长的过程,希望大家多多指教。」
书接上文:单点登录CAS解决方案<二>:数据库验证,服务端已经有了,现在应该开始做客户端的了。由于手上现在在做PHP的,所以,就先记录下phpCAS的使用。先给几个相关的网站
phpCAS官方文档:https://wiki.jasig.org/display/CASC/phpCAS
phpCAS源码:https://github.com/Jasig/phpCAS
一、phpCAS下载
原本官网上是有发布版下载的,我当时cas-server使用的版本是4.0.2的时候,下载发布版1.3.3的phpCAS,过程中有BUG,我就直接在github上下载最新的源码解决了问题。直接用使用git克隆代码:
> git clone https://github.com/Jasig/phpCAS.git
二、创建PHP项目
1、创建自己的PHP项目,至于用什么框架,和开发工具,这儿就不说了,各有各的需求。将同步下来的代码的“source”目录拷贝到项目中,可以改名caslib之类的,以作区分
2、项目中怎么使用呢?这个可以参考上面的官方文档和克隆下来的“docs/examples”目录下的例子。我这儿就直接使用他的例子来做一个超级简单的CAS客户端。
三、使用例子
1、如上图所示,我将phpCAS的CAS.php和CAS文件夹拷贝到caslib目录下
2、创建一个index.php文件,内容如下:
<?php
require_once '/caslib/CAS.php';
// Enable debugging
phpCAS::setDebug();
// 第一个CAS协议版本号
// 第二个cas-server的域名
// 第三个cas-server的端口号
// 第四个cas-server的项目访问路径
phpCAS::client(CAS_VERSION_2_0, '127.0.0.1', 8443, 'sso');
// 这个是设置非SSL访问,在真实项目中不建议使用,不安全.
// 如果PHP环境没有openssl拓展的话,可以添加这个来测试单点登录的效果
phpCAS::setNoCasServerValidation();
// 这个方法确保用户是否验证过,如果没有验证则跳转到验证界面。
phpCAS::forceAuthentication();
// logout if desired
if (isset($_REQUEST['logout'])) {
phpCAS::logout();
}
?>
<html>
<head>
<title>phpCAS simple client</title>
</head>
<body>
<h1>验证成功</h1>
<dl style='border: 1px dotted; padding: 5px;'>
<dt>Current script</dt><dd><?php print basename($_SERVER['SCRIPT_NAME']); ?></dd>
<dt>session_name():</dt><dd> <?php print session_name(); ?></dd>
<dt>session_id():</dt><dd> <?php print session_id(); ?></dd>
</dl>
<p>登录用户为: <b><?php echo phpCAS::getUser(); ?></b>.</p>
<p>phpCAS 版本号<b><?php echo phpCAS::getVersion(); ?></b>.</p>
<p><a href="?logout=">Logout</a></p>
</body>
</html>
好吧,上面的也只是入门的例子,如果需要更理想的效果,还得慢慢的研究官方的文档,博客会持续更新的,如果有好的东东,一定会记录下来,也希望和大家能多多交流。