CAS协议介绍中创软件商用中间件有限公司CAS协议介绍前言本文是CAS协议规范的中文译文。ICAS协议介绍1.Introduction以下是CAS1.0和2.0协议的官方规范。注:CAS1.0和2.0协议大体包含两个方面的内容:各种票根(Ticket)和暴露给CAS客户的HTTP(S)URL。这些UPL(/login、/logout、/validate、/serviceValidate、/proxy、/proxyValidate等)围绕着这些票根(ST、TGC、PGT、PT等)进行活动。在此期间服务和终端服务之间会进行多次HTTPS交互。Conventions&Definitions(公约和定义)“Client”指的是终端用户或者是WEB浏览器。“Server”指的是统一认证服务所在的服务器。“Service”指的是终端用户或者WEB浏览器试图访问的应用.“Back-endservice”是指一个服务试图代表一个client去访问一个应用,这个应用就被称为终端服务(Back-endservice)。它也被称作“targetservice”目标服务。注:这里的service可以包含两部分,一是应用程序本身提供的service;二是应用程序本身还可提供代理服务,使Client能够通过它的代理功能访问终端服务。按照翻译,不容易理解“终端服务”,通过下面的图可以很容易看清楚它的作用。黄色区域指Client;绿色区域指Server;紫色区域指Service;蓝色区域指终端服务。其中CAS1.0中没有终端服务这一块,也没有Service的proxy,也即不能进行代理认证。1CAS协议介绍2.CASURIsCAS是一个基于HTTP的协议,这就要求其每一个组成部分可以通过特定的URIs访问到。本节将讨论每个的URIs。2.1./loginascredentialrequestor/loginURI通过两种行为运转:一是作为一个凭证索取者,二是作为凭证接收者。根据它对凭证的反应来区分他是作为凭证索取者还是凭证接收者。如果客户端已经与CAS建立了一个单点登录的session,Web浏览器给CAS一个安全的cookie,里面包含有一个以字符串形式存在的身份信息—TGT(Ticket-GrantingTicket),存储这个身份信息TGT的cookie就被称为票证授予的cookie(TGC-Ticket-GrantingCookie)。如果TGC里面有一个有效的TGT,CAS可以发出一个服务门票(ServiceTicket,ST),这个ST可以在本规范内的其他任何情况下使用。本规范的要求。见第3.6节提供更多的资料,TGC。2.1.1.parameters2CAS协议介绍下面的HTTP请求的参数可通过/login,这时它作为凭证索取者。他们都是区分大小写的,他们都必须处理/login。service[可选]-客户端尝试访问的应用的标识符。在几乎所有情况下,这将是应用的URL。请注意,作为一个HTTP请求的参数,此URL的值必须是符合RFC中URL编码的描述。(详情参见RFC1738[4]的第2.2节)。如果没有指定service并且单点登录session尚不存在,CAS应要求具有凭证的用户发起一个单点登录session。如果没有指定service但单点登录session已经存在,CAS应显示一条消息,通知客户,这是已经登录Renew[可选]-如果此参数设置,单点登录将被绕过。在这种情况下,CAS将要求客户提交证书,不论是否存在一个CAS的单点登录session。这个参数与“gateway”参数不兼容。服务重定向到/login的URI和登录表单视图,张贴在/login的URI中的值不应同时出现在“renew”和“gateway”请求参数。两个参数都设置这种行为是未定义的。CAS推荐:在实施时,如果设置“renew”参数则忽略“gateway”参数。推荐:当设置“renew”参数时,其值应该为“true”。注:也就是说:https://server/cas/login?service=serviceUrl&renew=true&gateway=true这种参数传递是错误的,不能同时出现两个参数。注:CAS协议允许客户端选择是否跳出单点登录,这就是renew。它允许一个客户端通知CAS服务器总是验证一个用户,不管一个单点登录的session是否存在。这是一个非常有用的属性,当一个特定的使用CAS认证机制的服务允许访问敏感资料时,它能强迫CAS重新认证一个用户,确保登录的是一个正确的用户。这时,那个应经存在的单点登录session应该是被终止的。使用这个属性通知CAS重新验证凭证时,客户端应用应该中定向用户到以下的URL上:https://server/cas/login?service=serviceUrl&renew=true当请求验证这个票据时,客户端可以要求CAS确保这个票据是来自一个新的认证请求。应用...