版权声明:本文为博主原创文章未经博主允许不得转载。 /q/article/details/
单点登录主要用于多系统集成即在多个系统中,用户只需要到一个中央服务器登录一次即可访问这些系统中嘚任何一个无须多次登录。
单点登录(Single Sign On)简称为 SSO,是目前比较流行的企业业务整合的解决方案之一SSO的定义是在多个应用系统中,用戶只需要登录一次就可以访问所有相互信任的应用系统
目前已经有了成熟的单点登录实现方案,比如CAS我们只要在web系统中应用单点登录方案CAS即可。(主要涉及到注册登录验证等模块的改动)
CAS Server 会处理用户名 / 密码等凭证 (Credentials) 它可能会到数据库检索一条用户帐号信息,也可能在 XML 文件中檢索用户密码对这种方式, CAS 均提供一种灵活但同一的接口 / 实现分离的方式 CAS 究竟是用何种认证方式,跟 CAS 协议是分离的也就是,这个认證的实现细节可以自己定制和扩展
CAS Client 负责部署在客户端(注意,我是指 Web 应用)原则上, CAS Client 的部署意味着当有对本地 Web 应用的受保护资源的访问請求,并且需要对请求方进行身份认证 Web 应用不再接受任何的用户名密码等类似的 Credentials ,而是重定向到 CAS Server 进行认证
(后面代码小节会详细介绍,這里初步了解即可)
下图是 CAS 最基础协议:
至此为止SSO 会话就建立起来了,以后用户在同一浏览器里访问此web 应用时AuthenticationFilter 会在session 里读取到用户信息,所以就不会去CAS 认证如果在此浏览器里访问别的web 应用时,AuthenticationFilter 在session 里读取不到用户信息会去CAS 的login 接口认证,但这时CAS 会读取到浏览器传来的cookie 所以CAS 不会要求用户去登錄页面登录,只是会根据service 参数生成一个ticket 然后再和web 应用做一个验证ticket 的交互。
知道工作原理和流程之后我们来看看应该怎么在代码上实现CAS
一般来说我们写Web应用只需要熟悉这几个Filter就可以了,如果不需要https连接连第一个也不用熟悉。但是有人肯定会想这些 Filter怎么和我的数据库联系起来呢?不用着急这些Filter并不直接处理用户的认证,也不直接处理用户的授权而是把它们交给了认证管理器和决 策管理器。
对于这两種管理器那也是不需要我们写代码的,Acegi也提供了现成的类那么大家又奇怪了:又是现成的,那怎么和我的数据库关联起来呢别 着急,其实这两个管理器自己也不做事认证管理器把任务交给了Provider,而决策管理器则把任务交给了Voter如下图:
现在我要告诉你们,这里的Provider和Voter也昰不需要我们写代码的不要崩溃,快到目标了Acegi提供了多个Provider 的实现类,也就是说CAS的认证方式有很多种我们可以到数据库检索一条用户帳号信息,也可能在 XML 文件中检索用户密码 对于很多种方式,CAS 均提供一种灵活但同一的接口 / 实现分离的方式 CAS 究竟是用何种认证方式,可鉯由我们自己来决定也就是,这个认证的实现细节可以自己定制和扩展例如如果我们想用数据库来储存用户的认证数据,那么我们就選择DaoAuthenticationProvider对于Voter,我们一般选择 RoleVoter就够用了它会根据我们配置文件中的设置来决定是否允许某一个用户访问制定的Web资源。
loadUserByUsername(String userName)方法因此,怎么设計数据库都可以不管我们是用一个表还是两个表还是三个表,也不管我们是用户-授权还是用户-角色-授权,还是用 户-用户组-角色-授权這些具体的东西Acegi统统不关心,它只关心返回的那个User对象至于怎么从数据库中读取数据,那就是我们自己的事了
反过来再看看上面的过程,我们发现即使我们要做的只是实现自己的UserDetailService类,但是我们不得不在Spring中配置那一 大堆的Bean包括几个Filter,几个Manager几个Provider和Voter,而这些配置往往都昰重复的无谓的好在Acegi 2.0也认识到了这个问题,所以它设计了一个<http>标签,让Acegi的配置得到了简化
在后面具体的部署实施中我们再来详细讲這些细节。用户提供嘚用于登录用的凭据信息,如用户名/ 密码、证书、IP 地址、Cookie 值等比如 UsernamePasswordCredentials ,封装的是用户名和密码CAS 进行认证的第一步,就是把从UI 或request 对象里取箌的用户凭据封装成Credentials 对象然后交给认证管理器去认证。
CAS 服务端总共对外定义了9 个接口客户端通过访问这9 个接口与服务端交互,这9个接ロ为:
CAS 默认的登录处理流程图如下:
第一次访问Web 应用的流程走向图如下:
退出接口,负责销毁认证cookie | |
支持代理认证功能的接口 | |
支持代理认证功能的接口 | |
指定客户端的域名和端口是指客户端应用所在机器而不是 CAS Server 所在机器,该参数或 serviceUrl 至少有一个必须指定 | |
该參数指定过后将覆盖 serverName 参数成为登录成功过后重定向的目的地址 | |
如果指定为 true,那么受保护的资源每次被访问时均要求用户重新进行验证洏不管之前是否已经通过 | |
通过上面的学习我们已经对单点登录以及CAS有了一定的了解那么我们怎么入手搭建集群的单点登录呢?
首先我们肯定是要下载cas server的代码,然后进行用户名密码验证认证方式的选型选型结束后进行相应配置以及登录界面的修改等等。
然后把cas server的war包发布到服务器上运行即可。
cas server搭建完成后登录认证模块已经有了那么怎么跟我们的web项目关联起来呢? 这就需要在web 项目中集成cas的client客户端了,集成了之后对cas client的配置文件进行配置,对应到cas server的地址这样它们就能联系起来了。
我们之前已經说过了cas支持很多种认证方式我们即可把用户名密码写在xml中,然后cas来读取之后跟用户输入的帐号密码对比也可以把用户名密码存在数據库中。
目前cas提供给了以下认证方式:
有些认证方式对于web开发基本上不太好用或者不常用,因为他们的配置太不灵活或者太专业化在此の所以列举了那么多关于cas的认证处理器,主要为了让大家知道cas支持这种认证方式。比如现在新浪微博就对外开通了oauth认证接口如果哪一忝公司进行战略转形,希望用cas接新浪微博账号认证那么就可以直接在此基础上进行好好研究。
一般LDAP和数据库比较常用我们接下来会着偅讲这两种的运用。
A1: 可以跟学校商量能否在CAS里面写這个学校抬头的成绩单
Q2: 请问肺结核检测上面的地址写错了会对签证申请有影响吗?比如说本打算去A大学,检测时写的是A地址;但是後来确定去B大学CAS号码也是由B大学提供的。这种情况下我需要重新检测一次肺结核吗?也许办理签证时同时提交当时A大学给的offer、说明清楚情况就可以
A2: 没关系,不影响
Q3: 我女儿国家公派在英国留学读博士享受免学费,每年提供1.4万英镑生活费我想等女儿放假时去和女兒一起到英国旅游3星期。问题1:我要申请哪一类签证是申请旅游签证呢还是探亲签证?我已退休可以提供退休金银行流水帐,卡上活期余额需要多少3.需要的退休证,户口本银行流水等中文资料我女儿自己翻译可以吗?(我女儿有专8证书和口译证书)
A3: 可以申请普通訪客签证存款必须足够支付在英国逗留期间的所有花销,可以让你女儿翻译但同样需要注明译者的联系方式签名并对其负责
Q4: 递交签证材料时,需要提供安全英语测试的原件吗还是copy件就可以?谢谢
Q5: 签证需要的文字材料 家人不会说英语怎么办
A5: 写个中文信件然后找人翻譯
Q6: 在英国读高中A-level的成绩如何取得原件?网上下载的成绩单是否可以
A6: 原件你需要跟exam board沟通,如果时间不够办理签证你必须跟录取的学校商量不把原件写进CAS
Q7: 关于儿童学生签证,除了提供出生证明以外是否还需再提供户口本?以上证明是否同样适用于担保金存父母名丅的成人学生签证
A7: 出生证和户口任意之一可以证明双方关系,提交之一就可以了资金在父母名下的成人学生签证同样需要提供证明其关系的证明
Q8: 旅游签证需要提供具体的行程单吗?
Q9: 旅游签证必须要提供担保金的6个月历史吗还是提供其它银行流水6个月历史即可? 旅游囷访问签证递交材料的时候往返机票酒店及行程预订单必须提供吗?还是不是签证必须材料呢
A9: 签证申请时申请人提供6个月流水显示申請人有足够能力支付行程就可以
Q10: Tier-4学生签证资金存在父母一方名下,是需要提供学生和一方的证明就可以还是要证明和父母双方的关系证奣。
A10: T4要提供和父母双方的关系
Q11: 申请T4 General student visa如果申请人用父母名下的存款,但户口不与父母在同一户口本上无法证明亲属关系出生证也丢失了,在ukvi官网上也明确说明在中国申请不接受公证书作为亲属关系证明文件这种情况该提交什么材料证明父母子女关系呢?
A11: 能否去出生医院補办无法提供的话必须要我们指定机构的DNA检查机构提供证明,独生子女证也能作为亲子关系证明
Q1: 夏令营签证领队如果有了英国两年哆次往返的旅游签证,在给学生办理签证的时候是否可以不用再递交资料了
A1: 领队在持有有效签证必须把签证页的复印件交上?
Q2: 请问肺结核检测上面的地址写错了会对签证申请有影响吗?比如说本打算去A大学,检测时写的是A地址;但是后来确定去B大学CAS号码也是由B夶学提供的。这种情况下我需要重新检测一次肺结核吗?也许办理签证时同时提交当时A大学给的offer、说明清楚情况就可以
A2: 没关系,不影响
Q3: 夏令营团队签证申请 提交学生父母名下的不动产证明和定期存款 是否对签证申请有帮助呢
A3: 不用提交不动产证明,除非不动产是怹的收入来源建议打印流水就好了
Q4: 冬夏令营签证高峰期可以申请个人旅游签证领队老师陪同吗
A4: 夏令营团队中未成年成员申请有人陪伴的簽证页上会有陪同人的信息,学生必须由该陪同人一同入境英国不要随意更改领队,否则可能需要重新申请签证
Q1: 英国学生签证和旅游簽证翻译件要签字还是要盖翻译章还有提供的银行对账单是否需要翻译件?
A1:翻译件要翻译者签字并留下联系方式确保对翻译内容负責
A2:没有具体要求,需要翻译者在翻译件上面签名日期联系方式并对翻译内容负责
Q1: 请问银行存款证明冻结资金一定要活期存款和定期存款吗中低风险理财资金可以吗?
A1: 理财或其他金融产品不行必须是现金形式
Q2: 对于在读大学生的资助人,必须要是父母吗可不可以昰棠姑之类的亲戚?如何证明我们之前的关系呢
A2: 必须是父母或法定监护人
Q3: 有银行的《存款证明》,一定要定期存单吗? 如果定期存款昰存在中国银行借记卡上的不是定期存单,银行也开出了《存款证明》但不好开定期存单,怎么办?
A3: 资金证明可以是银行流水单不┅定是定期存单
Q4: Tier 4 General student 签证,钱存父母名下关系证明这块可以只提供户口本吗?户口本可以显示父母和孩子的关系
Q5: 关于银行流水,有没有具体要求一定要提供工资卡的流水还是平时用的比较多的一张卡的流水记录呢?有没有余额要求呢如果是现存的几万元有没有不好的影响?
A5: 没有具体要求建议使用工资流水,这样我们可以看到收入来源
Q6: 若一个银行账号的余额不够可否使用多个银行账号的和存款證明?是否可以计算其叠加的余额
A6: 可以多个账户叠加
Q7: 对于Tier4 General Student 签证,存款证明上是一定不能出现“冻结”字样吗还是对中国的银行存款证明来说,是否有“冻结”字样并不会对签证结果产生影响
A7: 在中国,英国签证及移民局接受在存款证明中将资金冻结但该存款证奣必须证明资金存期已满28天
Q8: 短期学生访问签,如果学生没有工作和收入来源是否一定要说明资金来源?什么样的材料可以作为资金材料證明资金要在银行存多久?
A8: 要说明由谁资助说明资金提供方出具材料来证明资金提供方的收入来源
Q9: 资金存在家长与学生的联名账户下,账户名是家长和学生两个人是不是不需要递交关系证明和家长同意书了?
A9: 建议提供我们也不清楚国内开具的联名账户学生用钱是否需要父母同意
Q10: 请问申请T4签证,存款为银行卡内定期存款没有存折或存单等纸质材料,开出的存款证明可以明确显示出存入日这种情况還需要打印一份定期账户的对账单吗?可以只提供存款证明而不提供对账单吗
A10: 应该提供对账单证明你在在线递交申请日期前31天内您仍然歭有该资金
Q11: 如果获得奖学金资助,是否还需要提供家庭出具的经济资助证明文件如存款证明,家长经济支持函关系证明等文件?
A11: 如果獎学金可以涵盖第一年的学费生活费只需要提供奖学金证明,如果不够还是需要提供父母资助的资金证明
Q1: 您好请问有拒签史,比如媄国但忘记拒签理由和时间,也找不到任何记录可以在表格上写个大概的时间,然后在最后的additional information中如实写自己忘记了吗
Q2: 请问T4学生签證,签证申请表上填的希望入境日期是开学前6天(9.26开学填的是9.20),一般会同意吗因为听说如果是第一次去英国是允许最多提前一个月詓的?谢谢!
A2: 没问题不管是不是第一次入境,也就是你填入境日期最多那是开学前一个月
Q3: 存款证明必须要在网上支付签证费之前开具吗还是可以先网上预约签证,支付签证费在去签证中心递交材料之前开具即可?对于在英国学习6个月以上课程但是最后一次在英國持续停留的时间不超过6个月的话,下次递交签证需要提供肺结核检测证明吗(免提交肺结核检测证明指上次在免肺结核检测证明国家读嘚课程是6个月以上还是最近一次在该国持续停留的时间需要6个月以上?)
A3: 建议在网上交钱前开好但必须在31天之内,要重新提交肺结核检测证奣
课程的学生)入学的时候是通过了学校的视频面试和测试题而录取的,并没有也不需要雅思成绩该如何选择此选项?网上签证表中的答案似乎都不太合适!
A4: 选尽可能相近的打印出来手动修改而且在additional infomation那里写明通过学校内测没有合适选项
Q1: 英国旅游签证被拒签以后可以马仩又重新准备资料再一次递签吗?之前被拒签字官说不能证明资金来源和没有被雇佣的相关工作证明自由职业者申请旅游签证。重新递簽签过的可能性很小吗
A1: 重新申请相同签证需要对每条拒签理由说明,如果是自由职业者只要针对自己情况说明自己的职业和收入状况
Q2: 速签留学材料准备详细说明
A2: 不管是否使用快速服务所需要准备的材料和普通申请人是相同的
Q3: 请问 100个24小时出签的签证服务,如果满額了还会继续开放吗?普通签证会不会因为加急签证的出现而速度变慢
A3: 在本次试运行期间内目前不会增加名额,UKVI致力于在标准时间內处理完申请
Q1: 请问脱欧后各种英国签证的申请有何变化对申请者的要求是否会提高?
A1: 目前为止没有任何变化
Q2: 我签了二年多次往返渶国签证请问停留180天是指一个自然年的时间内,还是从入境起计算谢谢!
A2: 每次入境在英国停留不能超过180天,申请人不能通过频繁的絀入境以达到长期留在英国或者工作的目的
Q3: 我是由学校(我单位)提供资助的访问学者去英国某大学访学四个月之前申请普通访客签證被拒(我误以为只有访学满12个月才可申请AV签证,而我只有四个月这是少于6个月的期限,所以申请了普通访客签证)想确认下我应该申请AV签证吗?
A3: 你看看上次拒签的理由建议你和中英双方学校确认一下你从事的活动是否适合普通访客访问学者类别,以及你去英国申請的签证类别
Q4: 我今天刚为家人提交了访问签证申请,签证中心告知我提前超过三个月的申请可能会影响出签时间和允许出境时间请问會有多大影响?另外我9月份将赴英读书家人12月过去,是否一定要提供邀请函因为我考虑人还未出国所以未提供,是否影响出签谢谢!
A4: 申请访问签证不能超过出行日期的3个月,可能到时会有人联系你你也可以主动撤签
Q5:我为了有个保底的学校准备办英国和加拿大两个國家的签证,现在加拿大已经出签了请问如果再办英国签证Tier4的话会不会对英国签证造成影响?
A5: 这个涉及到加拿大使领馆你可能需要哏加领再确定一下,英国签证你可以正常申请但还是要说明你已经拿到了加拿大签证
Q6: 父母办探亲签证去看望女儿,女儿是英国公民┅次性可以呆多长时间呢?到期后回国多久之后可以再次去英国呢?
A6: 每次都留不能超过180天但不能利用访问签证频繁往返达到留在英國或工作的目的
Q7: 16周岁以上18周岁以下的学生,就读Day School住寄宿家庭,是否不需要提供寄宿家庭主人的护照寄宿家庭监护信及当地政府的确認信?
A7: 未满16岁在英国由寄宿家庭照顾的申请人需要提供:1.看护人提供的承诺函确认照顾安排相关详细信息 2.看护人的有效护照、旅行文件或叺籍证书的公证书公证书必须在英国开具 3.父母或法定监护人的同意函 4.如果与不是父母、法定监护人或近亲的成年人生活,看护人需要在渶国当地机构登记
Q8: 请问16岁及以下学生递交签证一定要监护公司或寄宿家庭与政府往来的沟通信涵吗?大概内容是什么
A8: 为证明您的看护囚已经在当地机构登记,您需要提供下列材料: 1.父(母)、法定监护人或者看护人给英国当地机构的信函确认您在英国期间将由私人寄宿家庭照顾。2.英国当地政府的回复确认已经收到私人寄宿家庭安排相关通知
Q9: 16周岁以上T4儿童签证,学生住寄宿家庭如果家长同意孩子独洎生活,还需要寄宿家庭出信和护照复印件吗如果家长不同意孩子独立生活,那么在寄宿这方面需要提供哪些资料
A9: 16以上18以下儿童如果镓长不同意孩子独立生活,需要在同意信里面写明同意在英国住在寄宿家庭生活提供寄宿相关材料
Q10: 未满18周岁的学生可以申请短期学习签證吗?如果可以的话如若有父母陪同,父母是申请旅游签证就可以了么
A10: 可以申请短期学习签证不需要找监护人,需要有照顾安排短期访问类是没有父母陪同的,父母不能申请短期访问签证一直陪同
了解更多英国留学资讯可以收藏方便随时浏览最新消息。或是直接后囼咨询myOffer签证导师了解英国留学签证办理的事宜