单点登录方案说明书

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

单点登录方案说明书拟制人:、日期:2015-7-9评审人:日期:批准人:日期:修订记录日期版本修改章节修改描述作者2015-7-9V1.01初稿目录1引言...........................................................................41.1方案综述.................................................................41.2参考资料.................................................................41.3术语定义及说明...........................................................42技术方案.......................................................................42.1方案一filter服务........................................................42.2方案二CAS................................................................82.3方案三OAuth............................................................102.4方案四SAML..............................................................112.5方案五OpenID...........................................................13单点登录方案说明书1引言1.1方案综述下面介绍了五个主流的单点登录技术,简单概述一下每个技术的优缺点:方案一:属于单独创建的一个登录服务,需集成的软件登录都需要继承这个服务。实现单点登录的要点在于,每个用户登录成功之后将生成一个ticket(票),每个程序通用这个ticket。方案二:CAS本身没有授权,也没有权限控制,但是CAS支持SAML,所以就支持了权限控制。方案三:OAUTH需要认证才可以获取登录权限,比较不适合我们情况方案四:SAML支持XACML协议进行权限控制。SAML协议较OAUTH来说确实比较复杂,但是功能也十分强大,支持认证,权限控制和用户属性。方案五:OpenID是IDP提供一个身份唯一标识把第三方的应用帐号绑定到唯一标识上,只起到了认证的作用。1.2参考资料://://itindex.net/detail/48346-sso-%E7%99%BB%E5%BD%95=ainiguhU2QB6PQCslL4nciBvux3UIzq50YUwSPEfoRntQOouVn-ks97xt8RCu9dlbQTJQvT0M8v0FjIBJZPY7aTx4ZVRTr1vy1xrGbszOCC1.3术语定义及说明SSO:SingleSignOn单点登录CAS:CentralAuthenticationServiceOAuth:OpenAuthorization开放授权SAML:SecurityAssertionMarkupLanguage安全断言标记语言2技术方案2.1方案一filter服务SSO实现方式,有一个SSOServer,也会叫认证中心。同时也会有被认证的系统,即client端系统。此方案中,Server端是自己构建服务端,不依赖任何第三方技术。为了更形象体现SSO,我写的SSO是有三个工程:一个SSOServer端口为8081,一个OA系统端口为8082,一个采购系统端口为8083。如图:流程介绍在整个SSO流程当,有两个流程非常重要,第一个是用户没有登录系统到登录系统的过程;第二是用户在一个系统当中已经登录(例如在OA系统中登录了),但又想进入另一个系统(例如进入PRO系统)的过程,如果把这两个过程搞定了,那么SSO也就搞定了。我画了两幅图来说明这两个过程。先看用户没有登录系统到登录系统的过程,如图:1:用户通过URL访问OA系统。2:在OA系统中的filter发现这个URL没有ticket(你暂且就把ticket看做是门票),此时就会跳转到SSOServer。3:SSOServer中的filter发现该客户端中的cookie中没有相应信息,也即是一个没有登录的用户,那么会跳转到登录页面。4:用户在登录页面填写相应信息,然后通过post方式提交到SSOServer中。5:SSOServer会校验用户信息(我为了快,我的校验方式就是要用户名为:cloud,同时密码为:cloud),同时在cookie中放username。6:将生成ticket和username放到JVMCache中,在实际项目应该放到Memcached中,它的用处等下分析。7,8:就是在用户访问OA系统的URL基础上加上了一个ticket参数,这样跳转到OA系统。(此时进入OA系统时,filter发现URL是带ticket的,则filter会根据带过来的ticket并通过HttpClient的形式去调用SSOServer中的TicektServlet,这样就会返回用户名,其实这个用户名就是从JVMCache拿到的,同时马上将这个ticket从JVMCache中移除,这样保证一个ticket只会用一次,然后把返回的用户名放到session中)9:session中有了用户名,说明用户登录成功了,则会去本应该返问的servlet。10,11:将OA系统返回的视图给用户。第二过程,用户已经登录成功了,但要访问另一个系统,如图:1:用户通过URL访问PRO系统。2:在PRO系统中的filter发现这个URL没有ticket,此时就会跳转到SSOServer。此时,由于用户登录了,所以cookie中有相应的信息(例如用户名),此时SSOServer中的filter会生成一个ticket。3:将生成的ticket和username放到JVMCache中。4:就是在用户访问PRO系统的URL基础上加上了一个ticket参数,这样跳转到PRO系统。(此时进入PRO系统时,filter发现URL是带ticket的,则filter会根据带过来的ticket并通过HttpClient的形式去调用SSOServer中的TicektServlet,这样就会返回用户名,其实这个用户名就是从JVMCache拿到的,同时马上将这个ticket从JVMCache中移除,这样保证一个ticket只会用一次,然后把返回的用户名放到session中)5:session中有了用户名,说明用户登录成功了,则会去本应该返问的servlet。5,7:将PRO系统返回的视图给用户。2.2方案二CAS此方案是依赖于CAS技术基础之上的,所谓的CAS是指的是:全拼是CentralAuthenticationService,是Yale大学发起的构建WebSSO的Java开源项目。1.CAS的结构体系CASServerCASServer负责完成对用户信息的认证,需要单独部署,CASServer会处理用户名/密码等凭证(Credentials)。CASClientCASClient部署在客户端,当有对本地Web应用受保护资源的访问请求,并且需要对请求方进行身份认证,重定向到CASServer进行认证。2.CAS协议基础协议上图是一个基础的CAS协议,CASClient以过滤器的方式保护Web应用的受保护资源,过滤从客户端过来的每一个Web请求,同时,CASClient会分析HTTP请求中是否包请求ServiceTicket(上图中的Ticket),如果没有,则说明该用户是没有经过认证的,CASClient会重定向用户请求到CASServer(Step2)。Step3是用户认证过程,如果用户提供了正确的认证信息,CASServer会产生一个随机的ServiceTicket,会向User发送一个Ticketgrantingcookie(TGC)给User的浏览器,并且重定向用户到CASClient(附带刚才产生的ServiceTicket),Step5和Step6是CASClient和CASServer之间完成了一个对用户的身份核实,用Ticket查到Username,认证通过。在该协议中,所有与CAS的交互均采用SSL协议,确保,ST和TGC的安全性。协议工作过程中会有2次重定向的过程,但是CASClient与CASServer之间进行Ticket验证的过程对于用户是透明的。上图是一个基础的CAS协议,CASClient以过滤器的方式保护Web应用的受保护资源,过滤从客户端过来的每一个Web请求,同时,CASClient会分析HTTP请求中是否包请求ServiceTicket(上图中的Ticket),如果没有,则说明该用户是没有经过认证的,CASClient会重定向用户请求到CASServer(Step2)。Step3是用户认证过程,如果用户提供了正确的认证信息,CASServer会产生一个随机的ServiceTicket,会向User发送一个Ticketgrantingcookie(TGC)给User的浏览器,并且重定向用户到CASClient(附带刚才产生的ServiceTicket),Step5和Step6是CASClient和CASServer之间完成了一个对用户的身份核实,用Ticket查到Username,认证通过。在该协议中,所有与CAS的交互均采用SSL协议,确保,ST和TGC的安全性。协议工作过程中会有2次重定向的过程,但是CASClient与CASServer之间进行Ticket验证的过程对于用户是透明的。2.3方案三OAuthOAuth(OpenAuthorization,开放授权)是为用户资源的授权定义了一个安全、开放及简单的标准,第三方无需知道用户的账号及密码,就可获取到用户的授权信息,并且这是安全的。OAuth的原理(流程图)我在图上分了四个步骤,下面是四步的讲解:第一步:用户访问第三方网站,比如:就是你需要使用QQ进行登录的网站;第二步:你点击QQ登录后,第三方网站将会连接并进行请求,比如:你点击登录后,第三方网站会跳转到QQ平台,提示你进行登录;第三步:你要进行授权第三方网站对你的信息访问的一个权限,比如:当你QQ登录成功后,QQ会提示你,是否授权第三方Web访问你的用户基本信息或其他的资源信息,这时你点击授权即可;第四步:授权后,第三方Web即可访问你刚才授权的资源信息,比如:你的QQ基本信息-头像、昵称、性别等。通过这个原理图示及讲解,相信大家都了解了OAuth这个原理的一个基本流程。2.4方案四SAMLSAML即安全断言标记语言,英文全称是SecurityAssertionMarkupLanguage。它是一个基于XML的标准,用于在不同的安全域(securitydomain)之间交换认证和授权数据。在SAML标准定义了身份提供者(identityprovider)和服务提供者(serviceprovider),这两者构成了前面所说的不同的安全域。SAML是OASIS组织安全服务技术委员会(SecurityServicesTechnicalCommittee)的产品。SAML(SecurityAssertionMarkupLanguage)是一个XML框架,也就是一组协议,可以用来传输安全声明。

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功