门户(Portal)安全(Security)单点登录(SSO)文档说明

Posted FanZhe、FanZhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了门户(Portal)安全(Security)单点登录(SSO)文档说明相关的知识,希望对你有一定的参考价值。

项目介绍:

分为三个部分:
1、门户模块(系统首页的组成、动态发布存储在企业内部和外部的各种组件与模块,简单理解为对已存在的和第三方应用的系统菜单、组件等进行管理)
2、安全模块(用户角色、授权、组织机构以及日志相关、系统初始化和租户相关)
3、单点登录模块(集成门户与安全模块)

核心包主要有六个,分别为:
1、 bonc-portal-core:是一个核心包。打成jar包,配合portal包
2、 portal:后期打为war包,其中多为前端部分,后端代码主要为action(Controller层),通过调用bonc-portal-core包中方法,来实现表的增删改查以及一些工具的调用,最终显示在前端页面。
3、bonc-security-core(主要放entity、dao、service层,是一个核心包。打成jar包,配合security包)
4、bonc-security-base:与bonc-security-core目录结构类似。打成jar包,配合security包
5、security:后期打为war包,其中多为前端部分,后端代码主要为action(Controller层),通过调用bonc-security-core、bonc-security-base 包中方法,来实现表的增删改查以及一些工具的调用,最终显示在前端页面。
6、cas :作为单点登录,实现了SSO架构。

代码结构:

  • bean:实体类–表现层
  • dao:数据访问层,具体到对表的增删改查,封装了增删改查基本操作,DaoImpl中有 SQL/hql 语句
  • entity:实体类–业务层 --对数据库表的操作
    .hbm.xml: 文件配置,Hibernate的核心就是对象关系映射,对象和关系型数据库之间的映射通常使用XML文档来实现。
    例:
    Message(信息实体类): id、msgTitie、msgStatus(0/1)、msgSender(发件人)、msgCotent(信息内容)、startTime、endTime、timeSpan(时间跨度)、isEnable(是否确认)、msgReceiver(信息接收人)、msgPosition(邮件保存位置 0为接收者,1为发送者)、msgPosition(信息类型0为公告信息,1为私信信息)、name、receiverName(接收者姓名)、nextMessageTitle(下一个信息标题)、nextId(下一个信息id)、receiveType(接收类型)、encodeId(编码id)
  • factory
    SpringWiredBean: (自动装配注解会让Spring通过类型匹配为beanFactory注入示例)getBeanById(实例方法,使用的时候先通过getInstance方法获取实例)
  • service(服务层对一个或多个dao进行再次封装,封装成一个服务需要事务控制)
  • util(工具类):封装的工具类,例如登录、过滤、DES加密或解密、AES算法加密、简单规则拼接SQL
    ClassUtil:DeepClone(克隆对象)
    ConstantUtil:
    MessageTimeUtil: setTimeSpan(循环消息列表)
  • web:用来集成Filter、Listener类以及类加载器(解决与第三方应用集成时容易导致第三方jar包中的类冲突)
  • client:根据id查询用户、租户、组织机构、角色,认证接口,权限接口,
  • exception:一些异常类,例如:NoPrivilegeSQLException,表示没有执行该sql的权限异常
  • factory:获取SqlTransformServie的类
  • simpleDataSource:实体类–数据库连接实体
  • sso:模拟单点登录后的模拟登录
  • transform:租户SQL处理

一.门户管理

功能分析:

1.菜单管理(对第三方应用、页面进行展示,对系统存在菜单进行管理)
2.组件管理(管理在前端页面上展示的各个模块,包括已有的模块和第三方模块)
3.公告管理(为用户发起公告,记录公告信息(发布时间、开始时间、结束时间、接收者、状态)并对发布的公告进行管理)
4.主题管理(对系统主题以及页面主题进行管理)
5.页面管理(对页面进行管理)
6.布局管理(对页面布局信息进行管理)

二.安全管理(用户角色、授权、组织机构以及日志相关、系统初始化和租户相关)

功能分析:
1.用户管理授权
2.角色管理与授权
3.组织机构管理与授权
简单理解为:用户有自己的角色与组织机构,可以对用户进行冻结与修改、用户角色的授权、以及组织机构进行管理与授权
4.安全资源管理
(1).数据资源管理
(2).数据表管理
(3).数据资源划分规则管理
(4).资源注册
5.日志管理
可对日志服务进行配置,记录用户操作,例如:用户登陆时间、用户操作细节、文件操作等。
6.系统初始化
(1).扩展属性维护
(2).默认权限配置
(3).组织机构类型管理
7.租户管理
多用户环境下共享相同的系统或是组件,也能确保用户间资料的隔离性,每个租户分配有独立的内存。

三、cas单点登录(实现了SSO架构)

cas(具体)是实现sso(抽象)的一种手段,SSO 是英文 Single Sign On 的缩写,翻译过来就是单点登录。顾名思义,它把两个及以上个产品中的用户登录逻辑抽离出来,达到只输入一次用户名密码,就能同时登录多个产品的效果。
CAS流程与介绍:

  • CAS实现SSO思路:

1、用户访问产品 a,域名是 http://www.a.cn。
2、由于用户没有携带在 a 服务器上登录的 a cookie,所以 a 服务器返回 http 重定向,重定向的 url 是 SSO 服务器的地址,同时 url 的 query 中通过参数指明登录成功后,回跳到 a 页面。重定向的url 形如 http://sso.dxy.cn/login?service=https%3A%2F%2Fwww.a.cn。
3、由于用户没有携带在 SSO 服务器上登录的 TGC(看上面,票据之一),所以 SSO 服务器判断用户未登录,给用户显示统一登录界面。用户在 SSO 的页面上进行登录操作。
4、登录成功后,SSO 服务器构建用户在 SSO 登录的 TGT(又一个票据),同时返回一个 http 重定向。

详解CAS

  • 术语
    Client:用户。
    Server:中心服务器,也是 SSO 中负责单点登录的服务器。
    Service:需要使用单点登录的各个服务,相当于上文中的产品 a/b。
  • 接口
    /login:登录接口,用于登录到中心服务器。
    /logout:登出接口,用于从中心服务器登出。
    /validate:用于验证用户是否登录中心服务器。
    /serviceValidate:用于让各个 service 验证用户是否登录中心服务器。
  • 票据
    1、TGT:Ticket Grangting Ticket
    TGT 是 CAS 为用户签发的登录票据,拥有了 TGT,用户就可以证明自己在 CAS 成功登录过。TGT 封装了 Cookie 值以及此 Cookie 值对应的用户信息。当 HTTP 请求到来时,CAS 以此 Cookie 值(TGC)为 key 查询缓存中有无 TGT ,如果有的话,则相信用户已登录过。
    2、TGC:Ticket Granting Cookie
    CAS Server 生成TGT放入自己的 Session 中,而 TGC 就是这个 Session 的唯一标识(SessionId),以 Cookie 形式放到浏览器端,是 CAS Server 用来明确用户身份的凭证。
    3、ST:Service Ticket
    ST 是 CAS 为用户签发的访问某一 service 的票据。用户访问 service 时,service 发现用户没有 ST,则要求用户去 CAS 获取 ST。用户向 CAS 发出获取 ST 的请求,CAS 发现用户有 TGT,则签发一个 ST,返回给用户。用户拿着 ST 去访问 service,service 拿 ST 去 CAS 验证,验证通过后,允许用户访问资源。

    cas包 集成portal模块、security模块,实现了单点登录。

doc

doc数据库表、SQL文件、war包等等

以上是关于门户(Portal)安全(Security)单点登录(SSO)文档说明的主要内容,如果未能解决你的问题,请参考以下文章

浅谈OA系统与Portal门户的区别

Portal是用来干什么的?

使用带有 Spring Security 的 SAML 进行单点登录 (SSO)

使用sso(cas)的时候报单点登录service不匹配问题分析及解决

Portal数据清理过程说明

Portal数据清理过程说明