`
CaptainCook
  • 浏览: 136960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一种SSO和权限管理方案

    博客分类:
  • J2EE
阅读更多

一种SSO和权限管理方案

 

本单点登录借鉴了著名的OFBIZMS PassportSSO原理。主要是为了方便和权限管理集成。

一般来说,对于一个大型的企业信息系,认证和授权要考虑一下几个问题:

1、          门户的子系统单点登录

2、          门户子系统的分散授权还是集中授权

3、          门户子系统是否是同构或异构,如ASPJSPPHP

4、          该门户是否B/SC/S并存

5、          遗留系统的用户账号是分散,还是统一管理。不过一般遗留系统都有几套用户账号,然后当子系统增加时,为了把所有子系统集成,就要考虑门户的问题。

6、          和遗留系统相对应的,就是一个企业要新开发好几个子系统,让它们集成到一起

 

本方案也只能解决其中的一部分问题

 

概念:

SSOServer:(浅绿色)负责登入和登出服务,它和application不在同一个application Server上。

appA:某个Application Server上的application

appB:另一个Application Server上的application

checkLoginSSOServer上的一个登录判断和登录入口

loginSSOServer上的登录入口

logoutSSOServer上的登出入口

autoLogin:(浅黄色框)某个Application上的用户第一次请求入口,它是每个web application的权限初始化模块,在这里处理用户信息获取,权限分配等,它由每个application实现,但有一定的规范。如果说SSOServer处理Authentication,那么它就是处理Authorization

filter:(浅蓝色框)某个application的前端拦截器,主要是拦截客户端URL请求,判断他是否为已认证和已授权用户。它由SSOServer统一实现,各application只需按要求部署即可。

ticket:该用户在所有系统的惟一标识

uuid:和ticket类似,只不过用意不同,结合cookie,可以解决跨域的问题

lock用户在CAS中验证通过后设置为0,但在autoLogin处理完毕后设置为1。这主要是为了安全性考虑。黑客捕获ticket,即使得到该ticket,但lock设置为1后,autoLogin就不再处理该登录(相当于悲观锁)。

 

登录过程:

1、  客户端浏览器发起对http://appA.com/foo.jsp 请求,appAfilter检查该用户Session,发现他还没有登录,保存其目标url信息于新创建的Session中,重定向到https://SSOServer/checkLogin

2、  checkLogin调用login页面进行登录,用户输入用户名、密码进行登录,处理完毕,生成一个ticket,将该ticketusername保存于SSO 数据库中,同时设置lock0。然后在SSOServer上创建会话Cookie(该cookie保存于内存中,存在于浏览器会话期间,如Servlet规范里的JSESSIONID),在该cookie中保存该uuid,然后再重定向到http://appA.com/autoLogin?ticket=??? 其中ticket包括一个全局标识,如asdfsdFsdfsdfsdfsdfsdf345uyui

3、  autoLogin里根据ticket取得用户username,根据其username在数据库里取得用户权限信息等,将其保存于原先在filter里创建的session中,同时将lock设置为1(防止第二个有同样ticket的用户访问,保准安全性,)然后重定向到Session里的目标url这时便可顺利通过filter

4、当用户需要访问http://appB.com/bar.jsp 时,appBfilter发现该用户没有在其系统中登录(Session不存在),保存其目标url于新创建的Session中,重定向到https://SSOServer/checkLogin

5、  checkLogin根据当前浏览器的cookie,发现有uuid,从而判断该用户已经登录过,然后将该用户重定向到http://appB.com/autoLogin?ticket=??? ,然后重复3的步骤。

 

说明:

1、  对于每个用户登入的每个系统,用户只需要一次和SSOServer交互,并且,也只需要一次与autoLogin交互。

2、  如果用户第一次访问整个门户,可以从Login入口,而不是checkLogin,这可以允许Login页面的定制(如English网站Login入口)。

3、  引入lock,其实就是引入安全性。

4、  本方案暂时没有处理Logout,不过实现应该不是很难。

5、  本方案适用于Web application,可以支持JSPASPPHP等异构系统,不过用Servlet规范的filter容易处理。

6、  本方案暂时忽略了遗留系统导致的有几套账号的问题,而是采用统一账号管理。

分享到:
评论

相关推荐

    SSO案例源码.zip

    Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进行了很好的无缝连接,在移动互联网的授权认证...

    boot-ssoserver.rar

    Security,该框架提供了一整套比较成熟,也很完整的机制用于处理各类场景下的可以基于权限,资源路径,以及授权方面的解决方案,部分模块支持定制化,而且在和oauth2.0进行了很好的无缝连接,在移动互联网的授权认证...

    一种基于Web Service的简单SSO系统实现

    分析了现存多种SSO技术的优缺点,针对用户跨系统操作较多的分布式系统,提出了一种基于Web Service的以权限管理为核心的轻量级的单点登录实现方法。通过在某航空呼叫中心中的运用实践,很好地说明了该方法的实用性。

    django-oauth2-sso:简单的OAuth2身份验证和SSO实体到本地Django用户模型的自动映射

    一旦通过身份验证,您将获得一种快速简便的方法,以编程方式创建具有正确权限的用户,从而免除了您从管理工具手动创建用户的负担。安装为了将软件包安装在本地存储库中,只需运行以下命令: python setup.py ...

    SSO单点登陆系统PPT

    一种对于许多相互关连,但是又是各自独立的应用系统,提供存取控制的属性。当拥有这项属性时,当使用者登入时,就可以取得所有系统的存取权限,不用对每个单一系统都逐一登入。它是目前比较流行的企业业务整合的解决...

    .NET Core 生成JWT令牌源码

    .NET Core JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它是一种轻量级的安全令牌,用于在不同的应用程序或服务之间传递身份验证信息。 JWT由三部分组成:头部(Header)、载荷(Payload)和签名...

    sa-token:这可能是史上功能最全的Java权限认证框架!目前已集成-登录验证,权限验证,会话会话,踢人下线,分布式会话,单点登录,OAuth2.0,记住我模式,模拟公众账号,临时身份切换,集成Redis,多账号认证体系,前后台分离模式,注解式鉴权,路由拦截式鉴权,花式令牌生成,自动续签,同端互斥登录,会话治理,密码加密,jwt集成,Spring集成..

    你可以以一种极简的方式实现系统的权限认证部分与其他权限认证框架索引, sa-token具有以下优点:简单:可零配置启动框架,真正的开箱即用,规定上手强大:目前已集成数十项权限相关特性,涵盖了大部分业务场景的...

    asp.net知识库

    .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN文章 —— 泛型FAQ:最佳实践 Visual C# 3.0 新特性概览 C# 2.0会给我们带来什么 泛型技巧系列:如何提供类型参数之间的转换 C#2.0 - Object Pool 简单实现 ...

    python入门到高级全栈工程师培训 第3期 附课件代码

    05 setDaemon方法和继承式调用.baiduyun.downloading 05 setDaemon方法和继承式调用 第34章 01 上节知识回顾 02 并发并行与同步异步的概念 03 GIL的概念 04 同步锁 05 递归锁 06 同步对象event 07 信号量 08 线程...

    mahara教师评价系统

    但是原来的 moodle 用户却不能 再漫游到 mahara 了,这个 SSO 只能选择一种方向。所以系统集成以后,应以 mahara 为主, 用户在 mahara 上注册,同时可以使用 moodle 的功能,在 moodle 上注册的用户不能使用 mahara...

    ofbiz综合技术文档

    一、soap应用的两种情况 91 1、ofbiz 将其他的webservice 封装成服务,这时ofbiz的应用系统可以直接调用该服务,以访问其他的Webservice: 92 2、其他的soap客户端可以通过soap访问ofbiz,这时ofbiz相当于Webservice...

    亮剑.NET深入体验与实战精要2

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    亮剑.NET深入体验与实战精要3

    此次将长期的思考、感悟,多年的系统开发、设计和团队管理经验,以及深入分析众多项目实战的宝贵成果和盘托出,力求将编程思想与具体实践融为一体,提炼出适合于广大读者快速理解和彻底掌握.NET软件开发的最佳学习...

    单点登录源码

    本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级...

    aws-runas:Go中重写了aws-runas

    奥维斯鲁纳斯 一种执行AWS STS AssumeRole操作的友好方法,因此您可以使用一组特定的权限来执行AWS API操作。 包括对IAM用户凭据和SAML SSO的支持,包括对两者的MFA! 在AWS开发工具包配置文件中配置的配置文件名称...

Global site tag (gtag.js) - Google Analytics