jsp实现登录验证 cas server + cas client 单点登录 原(2)

电脑杂谈  发布时间:2017-12-28 22:04:02  来源:网络整理

CAS服务端总共对外定义了9个接口,客户端通过访问这9个接口与服务端交互,这9个接口为:

详细说明:

/login:

登录流程这部分要考虑到不同种类用户凭证的获取方案,以及客户应用传来的service、gateway、renew参数的不同取值组合,CAS为了实现流程的高度可配置性,采用了Spring Web Flow技术。通过CAS发布包里的login-webflow.xml、cas-servlet.xml、applicationContext.xml这3个文件,找出了登录有关的所有组件,画出处理流程图。

CAS默认的登录处理流程

第一次访问Web应用的流程走向

已经登录web1后,访问web1的资源(web1没有启动session),或访问web2的资源

注:

1:InitialFlowSetupAction:是流程的入口。用request.getContextPath()的值来设置cookie的Path值,Cookie的path值是在配置文件里定义的,但这个Action负责将request.getContextPath()的值设置为Cookie的path值,这是在cas部署环境改变的情况下,灵活地设置cookie path的方式;把cookie的值以及service参数的值放入requestContext的flowscope里。

2:GenerateServiceTicketAction此Action负责根据service、GTC cookie值生成ServiceTicket对象,ServiceTicket的ID就是返回给客户应用的ticket参数,如果成功创建ServiceTicket,则转发到WarnAction,如果创建失败,且gateway参数为true,则直接redirect到客户应用,否则则需要重新认证。

3:viewLoginForm这是登录页面,CAS在此收集用户凭证。CAS提供的默认实现是/WEB-INF/view/jsp/simple/ui/casLoginView.jsp。

4:bindAndValidate对应AuthenticationViaFormAction的doBind方法,该方法负责搜集登录页面上用户录入的凭证信息(用户名、密码等),然后把这些信息封装到CAS内部的Credentials对象中。用户在casLoginView.jsp页面上点击提交后,会触发此方法。

5:submit对应AuthenticationViaFormAction的submit方法,如果doBind方法成功执行完,则触发submit方法,此方法负责调用centralAuthenticationService的grantServiceTicket方法,完成认证工作,如果认证成功,则生成TicketGrantingTicket对象,放在缓存里,TicketGrantingTicket的ID就是TGC Cookie的value值。

6:warnCAS提供了一个功能:用户在一个web应用中跳到另一个web应用时,CAS可以跳转到一个提示页面,该页面提示用户要离开一个应用进入另一个应用,可以让用户自己选择。用户在登录页面viewLoginForm上选中了id=”warn”的复选框,才能开启这个功能。

WarnAction就检查用户有没有开启这个功能,如果开启了,则转发到showWarnView,如果没开启,则直接redirect到客户应用。jsp实现登录验证

7:SendTicketGrantingTicketAction此Action负责为response生成TGC Cookie,cookie的值就是AuthenticationViaFormAction的submit方法生成的TicketGrantingTicket对象的ID。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-56599-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...