基础知识名词解释As认证服务:认证服务,TGT发行
KDC密钥分发中心:密钥发布中心
TGS Ticket-Granting Service :票务授权服务、TGT理赔、ST发放
TGC ticket-granting cookie :授权票证证书由CAS Server通过SSL发送给最终用户。 该值存在于Cookie中,通过TGC可以找到TGT。
TGT Ticket Granting tieckt (俗称大令牌或票根,由KDC和AS发行,获得该票根后,可以直接申请其他服务票根ST,无需提供身份证明信息
ST Service Ticket :服务票证由KDC的TGS发行,ST是访问服务器内部的令牌
CAS认证过程中央认证服务(CAS )中央认证服务认证过程如下:
访问服务:由于cas客户端和web APP应用程序位于一起,因此当用户访问web APP应用程序时,cas客户端将处理面向请求的身份验证。 cas客户端检查HTTP请求是否包含ST和TGT,如果不包含,则重定向到cas服务器地址进行用户验证。 用户在浏览器中填写用户信息。 提交cas服务器认证颁发票证: cas服务器验证用户信息后,向cas客户端发布ST,在浏览器cookie中设置TGC,下次访问cas服务器时根据TGC和TGT的验证, 判断验证票证是否注册: cas客户端获取ST后,再次请求cas服务器验证ST的有效性,验证通过后,允许客户端访问并传输用户信息: cas服务器验证ST
使用phpCAS实现对www.baidu.com的访问控制
? PHP require _ once './vendor/ape reo/PHP cas/cas.PHP '; $home='http://www.baidu.com/'; $ log in _ URL=' http://10.91.156.17433608080/cas/log in? 服务='.urlencode ($ home; $ logout _ URL=' http://10.91.156.17433608080/cas/logout '; $ service _ validate _ URL=' http://10.91.156.17433608080/cas/service validate '; PHP cas :3360集调试(; 设置客户端属性PHP cas :3360 client (cas _ version _2_ 0,' 10.91.156.174 ',8080,'/cas ' ); //loginurlphpcas :3360设置setserverloginurl ($ log in _ URL )//logouturlphpcas :3360设置setserverlogouturl ($ logout 设置validateurlphpcas :3360 setserverservicevalidateurl ($ service _ validate _ URL ); //cas server设置中,ssl证书PHP cas :3360 setnocasservervalidation (; //该方法确认用户是否验证过,如果没有验证,则跳转到验证界面。 PHP cas :3360 forceauthentication (; 在php -S localhost:8080上启动服务
第一个登录过程访问控制的资源地址为http://www.baidu.com/
1 .访问服务通过访问localhost:8080访问本地WEB服务,如果发现没有用户登录信息,则生成login url并重定向到该地址。 其中login_url中的service参数表示受访问控制的资源
2 .接收到重定向响应的定向认证浏览器请求login_url,然后等待输入用户名密码
3 .用户认证用户输入用户名密码提交表单后,CAS服务器验证提交信息。 如果验证成功,浏览器将重定向到service参数后的url,稍后将携带ticket令牌。 此参数为ST。 另外,将作为访问service_url的Cookie的CASTGC设定为Cookie,仅在访问了该地址的情况下携带Cookie。
向Cookie添加CASTGC的目的是为了下次访问service_url时,在浏览器请求时携带TGC参数,服务器通过基于该TGC查找对应的TGT,判断用户是否登录TGT和TGC之间的关系类似于会话和Cookie会话id之间的关系。
4 .票证发行CAS server是否生成ST服务票证并将浏览器重定向到$service_url? ticket=$service-ticket
5 .验证票证CAS客户端以检索ticket,生成$service_validate_url,并将请求发送到$service_validate_url以验证ST。 确保ticket的URL如下所示。
3358 $ { cas _ server _ host } : $ { cas _ server _ port }/cas/service validate? 如果ticket=$ { service-ticket } service=http://www.Baidu.comcas server验证通过,将再次重定向到service_url,并在浏览器中显示相关资源
第二次登录过程1 .访问服务以访问本地WEB服务,然后跳转到login_url
2 .票务2 .以前访问过一次,所以这次要把以前获取的CASTGC带到login_url上,认证中心收到请求后,发现TGC支持TGT,用TGT发布ST,返回浏览器
3 .验证票证浏览器可以重定向到CAS服务器发布的地址,验证ST,并在验证成功后访问控制资源
简单来说,如果客户端请求服务端的login_url,拥有TGC,则客户端返回ST,如果客户端没有携带可以再次检查ST的TGC,则整个流程跳转到login_url