cas php客户端配置,cas-client单点登录客户端使用案例

上一篇记录了关于cas-server的服务端安装

服务端搭建完毕后,开始使用客户端请求了。客户端的下载地址: http://developer.jasig.org/cas-clients/

那么客户端的使用例子,在下载包里面,我们可以得到example例子,但是全部是英文可能会看起来不太舒服。

由于cas-server默认采取的是https协议,所以cas-client逻辑里也有一些地方默认用https协议,如果你不是https协议,请打开client.php搜索https,把这个地址替换成自动检测地址类型,即自动识别https或者http。或者你直接写死为http.

简单的例子如下:

session_start();

include_once './CAS-1.3.4/CAS.php';

phpCAS::client(CAS_VERSION_3_0,"cas.jiankongbao.com",8080,"/cas");

phpCAS::setNoCasServerValidation(); //去除https的验证

phpCAS::handleLogoutRequests(); //保持与其他语言同步登录或者同步登出

if(phpCAS::checkAuthentication()) {

//获取登陆的用户名

$username = phpCAS::getUser();

$data1 = phpCAS::getAttribute('email'); //获取emial(前提需要cas-server配置)

$data2 = phpCAS::getAttributes(); //获取所有属性(前提需要cas-server配置)

echo '用户名:'.$username.'

';

echo 'email:'.$data1.'

';

echo '数组集合:';

var_dump($data2);

echo "我要退出";

//退出地址不一定写服务端地址

}else{

echo '还没登录,请登录';

//登录地址不一定写服务端地址

}

以上这是一个很简单的判断用户是否已经单点登录过了,以及获取用户信息。

那么基于我这次的任务,它是两套系统,且各自有自己独立的业务和库。所以基于cas作为中间服务,我需要做一个类似拦截器的封装,每次进入系统优先请求中cas-server,拿到用户信息后,判断该用户在自己的库中是否存在,存在则请求api接口进行自动登录,不存在则创建该用户并请求api接口完成自动登录。

而以上这个例子,就是客户端实现单点登录的逻辑

cas-server配置,返回用户的更多信息

上面有获取信息的getAttribute以及getAttributes方法,前提必须是server端已经配置,配置如下

cas4.0 没有了 UsernamePasswordCredentialsToPrincipalResolver,而是提供了 org.jasig.cas.authentication.principal.PersonDirectoryPrincipalResolver,需要配置 attributeRepository 属性

//将原来的ref="AttributeRepository"改为带上sso

再添加一个id为ssoAttributeRepository

然后将 RegexRegisteredService 的配置改为

username

password

email

phone

sex

最后,修改 WEB-INFiewjspprotocol.0casServiceValidationSuccess.jsp,加入(3.0中也要加入)

${fn:escapeXml(attr.value)}

配置是有点复杂,我也是费了很大劲,才配置出来的,这个配置的基于4.0的服务端版本,配置完后的xml文件,有需要请点击下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值