首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CAS服务工作流程

    1.用户访问app系统,app系统是需要登录的,但用户现在没有登录。 2.跳转到CAS server,即SSO登录系统,后续图中的CAS Server统一叫做SSO系统。SSO系统也没有登录,弹出用户登录页。 3.用户填写用户名、密码,SSO系统进行认证后,将登录状态写入SSO的session,浏览器(Browser)中写入SSO域下的Cookie。 4.SSO系统登录完成后会生成一个ST(Service Ticket),然后跳转到app系统,同时将ST作为参数传递给app系统。 5.app系统拿到ST后,从后台向SSO发送请求,验证ST是否有效。 6.验证通过后,app系统将登录状态写入session并设置app域下的Cookie。 至此,跨域单点登录就完成了。以后我们再访问app系统时,app就是登录的。

    03

    Filter实现登录后自动跳转目标url

    马 克-to-win:下面我们将利用Filter技术完成一个稍微实用一点的需求。需求的内容如下:一言以蔽之,我们就想保护internal目录下的所有 资源,(其他地方不保护)。具体有这么几点:如果用户非法访问internal目录下的资源,就将他导向internal目录下的login.jsp。如 果在login.jsp当中,他输入了正确的用户名和密码,就让他自动跳转到他原来想访问的那个jsp。但如果在一开始,用户直接就想访问 login.jsp,即使他输入了正确的用户名和密码,也只把他导向回根目录的首页index.jsp。这里需求有两个难点。一是自动跳转到他原来想访问 的那个jsp,这需要把他原来想要访问的目标给存在Session当中。想得到他想访问的目标,就用 (HttpServletRequest)hsr.getRequestURI()。马克-to-win:这还不算难。第二个难点就更难。我怎么能知道用 户一开始的目的就是想访问login.jsp,还是用户一开始想访问internal目录里其他的资源而被导到login.jsp的呢?因为 login.jsp也在internal目录里,所以到达login.jsp之前,无论如何要经过Filter。问题好像很困难。这里,我是这样完成这个 需求的:当用户想非法访问internal目录下的任何资源前一瞬间(除了login.jsp自己,这一点你要加判断,desURL.endsWith ("login.jsp"),否则逻辑上会出问题,不信你试试),我在request范围里加上一个标志:illegal。马克-to-win:只有这种 情况,我才加这个标志。这样在login.jsp的正常程序前,我再加一个判断,看是否有这个标志?如果有,就证明用户想非法访问internal目录下 的某个资源。如果没有这个标志,就说明用户一开始就想访问login.jsp。

    02
    领券