• SSO CAS 单点系列


    在多系统应用群中,使用,例如,用户账户管理,用户应该有一个统一的账户,不应该让用户在每个子系统分别注册 登陆再分别登出。这就是我们所说的单点登陆问题,即SSO;

    SSO问题,时大中型web应用经常碰到的问题,是java架构师需要掌握的必备技能之一,中高级以上Web工程师都应该对它有所了解;

    http是一个无状态协议,在此之上实现会话管理,就需要额外的手段,1 带请求参数,侵入性较大,一般不使用,2 使用cookie,服务器通过HTTP响应创建好cookie后,浏览器就接收下来,下次请求会自动携带上返回给服务器,应用这个机制,我们可以实现应用层的登陆会话状态管理。

    例如我们可以把登陆状态保存哎cookie中,这是客户端保存方式。会话信息在客户端,需要维护其安全性、徐娅加密文件、携带量变大,这样会影响http的处理效率,同时cookie的数据携带量也有一定的限制。

    比较好的方式是服务器端的保存,cookie只保存会话信息的句柄,即在登陆成功后,服务器端可以创建一个唯一登陆会话,并把会话标识ID通过cookie返回给浏览器,浏览器下次访问时会自动带上这个ID,服务器根据ID即可判断是此会话中的请求,从而判断出是该用户,这种操作直到登出销毁会话为止。

    我们使用的web应用服务器一般都会提供这种会话基础访问,如Tomcat的Session机制。也就是说,应用开发人员不必利用cookie亲自代码实现会话的创建 维护 和销毁等整个生命周期管理,这些内容服务器Seeion已经提供好了,我们只需要正确使用即可。

    1 大中型web应用基本都是多系统组成是应用群,SSO是必须面对的基本问题。

    2 Cookie有作用域限制,顶级域名Cookie不能共享,故登陆会话不能共享。

    3 直接改造各子系统共享Session,通用性灵活性不强,或对原系统侵入性大,不是解决SSO根本办法。

    来自:https://www.imooc.com/article/3555#

    当用户访问子系统需要登录时,我们把它引到认证中心,让用户到认证中心去登录认证,认证通过后返回并告知系统用户已登录。当用户再访问另一系统应用时,我们同样引导到认证中心,发现已经登录过,即返回并告知该用户已登录

    1 登陆属于系统安全管理模块一部分,涉及认证 建立会话 会话状态判断 取消会话等操作。

    2 剥离各系统认证功能,建立统一独立认证服务中心,是解决SSO问题的正确方法。

    3 由于是分布式,处理SSO需要解决认证消息传递问题、登陆状态判断问题、登出信息传递问题,保证各应用系统与认证中心之间有效通信。

    来自:https://www.imooc.com/article/3558

    1 临时令牌只能使用一次,不呢个长期存在,可以使用Redis来实现

    2 全局会话和本地会话可以利用web服务器Session,但我们必须实现根据SeeionId查找seesion的功能。

    3 服务器端之间HTTP协议方式的通信,可以使用HttpClient工具模拟浏览器实现。

    来自:https://www.imooc.com/article/3564

    1 CAS是中央认证服务的简称。目前已成为影响最大、广泛使用的、基于java实现的、开源SSO解决方案

    2 CAS分为CAS Server认证中心和CAS Client应用系统连接组件,CAS Client支持java php .NET等多种语言开发系统

    3 CAS Server是java Web应用,可部署在Tomcat中。CAS Client是连接组件,集成在需要单点登陆的各应用系统中,鉴于登陆安全性,实际应用中使用https协议,为调试方便,可修改为支持http。

    来自:https://www.imooc.com/article/3576

  • 相关阅读:
    如何防止源码被盗
    C# WebBrowser 获得选中部分的html源码
    特殊字符和空格
    MySQL性能优化
    mysql5.7新特性探究
    【九】MongoDB管理之安全性
    【八】MongoDB管理之分片集群实践
    【七】MongoDB管理之分片集群介绍
    【六】MongoDB管理之副本集
    【五】MongoDB管理之生产环境说明
  • 原文地址:https://www.cnblogs.com/xiaofenguo/p/11527849.html
Copyright © 2020-2023  润新知