范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

java单点登录集成客户端

  2 变更记录
  版本
  修改时间
  修改人
  修改内容
  备注
  3 产品介绍3.1 基本原理
  一次完整的SSO认证如下图所示:
  假设应用1(地址为http://192.168.0.100/sever1)和应用2(地址为http://192.168.0.101/server2)分别集成了SSO Client,SSO Server部署在192.168.0.10上。
  Ø 从未登录系统的情况
  用户访问应用1时,应用1将自动携带当前地址(HostUrl)重定向至SSO Server;SSO server 返回用户登录界面,待用户登录认证通过,将随机生成一个验证票据(Ticket)返回给用户,同时重定向至最初携带的应用1的地址(HostUrl);应用1将携带应用1的地址(HostUrl)和票据(Ticket)提交给SSO Server验证用户是否登录有效,验证通过后,最终返回访问页面。Ticket具有一定的存活周期。
  Ø 应用1已经登录,应用2未登录
  用户访问应用2时,应用2将自动携带当前地址(HostUrl)重定向至SSO Server;由于应用1已经登录,则SSO Server直接生成一个验证票证(Ticket)返回给用户浏览器,然后应用2将地址(HostUrl)和票据(Ticket)提交给SSO Server验证用户是否登录有效,验证通过后,最终返回访问页面。
  Ø 系统退出登录
  系统退出登录,必须使用SSO退出登录,否则不能保证当前应用退出登录,对其它系统生效。3.2 版本说明
  单点登录客户端从版本2.1.0开始,bonc-sso-client-XX.jar不再包含cas-client-core.jar,因此在bonc-sso-client-2.1.0.jar及以上版本开始,需要用户注意添加cas客户端核心包cas-client-core.jar。3.3 文件说明
  单点登录应用通常包括了以下文件, 其中"xxx"为版本号:
  Ø bonc-sso-client-demo-xxx.war 单点登录客户端演示应用
  a) bonc-sso-client-xxx.jar 单点登录客户端应用开发包
  b) cas-client-core-3.2.1.jar 单点登录客户端cas客户端依赖包
  c) commons-logging-1.1.jar 单点登录客户端应用开发包的依赖包
  Ø bonc-sso-client-2.1.1-sources.jar 单点登录客户端本地会话实现源码参考4 部署4.1 环境要求
  应用服务器:JDK6.0+,TOMCAT6.X或其他同等应用服务器4.2 测试环境部署
  1. 假定单点服务端应用已经部署。
  2. 修改bonc-sso-client-demo-xxx.war中的/WEB-INF/web.xml中的配置,配置内容如下,请仔细查看参数的解释:< listener >
  < listener-class >
  org.jasig.cas.client.session.SingleSignOutHttpSessionListener
  listener-class >
  listener >
  < filter >
  < filter-name > SSO Filter filter-name >
  < filter-class >
  com.bonc.sso.client.SSOFilter
  filter-class >
  < init-param >
  < description > CAS客户端地址  description >
  < param-name > serverName param-name >
  < param-value > 127.0.0.1:8080 param-value >
  init-param >
  < init-param >
  < description > CAS服务器地址全路径 description >
  < param-name > casServerUrlPrefix param-name >
  < param-value > http://127.0.0.1:8080/cas param-value >
  init-param >
  < init-param >
  < description > CAS服务器登录地址 全路径 description >
  < param-name > casServerLoginUrl param-name >
  < param-value > http://127.0.0.1:8080/cas/login param-value >
  init-param >
  < init-param >
  < description > 是否启用单点登出 description >
  < param-name > singleSignOut param-name >
  < param-value > true param-value >
  init-param >
  < init-param >
  < description > 单点登录忽略校验URL description >
  < param-name > skipUrls param-name >
  < param-value > /out.jsp,.*.(css|js|jpg|jpeg|bmp|png|gif|ico)$ param-value >
  init-param >
  < init-param >
  < description > 登录成功后的的用户信息准备 须实现com.bonc.pure.sso.client.ILoginUserHand 接口 description >
  < param-name > loginUserHandle param-name >
  < param-value > com.bonc.sso.client.impl.DemoAuthHandleImpl param-value >
  init-param >
  < init-param >
  < description > 解决读取CAS server端返用户扩展信息中文乱码问题  description >
  < param-name > encoding param-name >
  < param-value > UTF-8 param-value >
  init-param >
  filter >
  < filter-mapping >
  < filter-name > SSO Filter filter-name >
  < url-pattern > /* url-pattern >
  filter-mapping >
  3. 将bonc-sso-client-demo-xxx.war改名为client.war,然后拷贝到tomcat主目录下的webapps目录下。如果tomcat在运行状态,则会自动部署client应用,否则,请启动tomcat(window:执行tomcat主目录binstartup.bat;linux/unix:执行tomcat主目录/bin/startup.sh)。
  4. 打开浏览器,在地址栏输入http://127.0.0.1:8080/client。如果正常的话,将转入单点登录服务器的登录界面:
  5. 测试的用户名/密码只要是一致的,就可以登录成功,登录成功后,将进入如下界面:4.3 正式环境部署
  1. 转入到客户端应用的开发环境下
  2. 将bonc-sso-client-xxx.jar、cas-client-core-3.2.1.jar、commons-logging-1.1.jar拷贝到客户端应用的WEB-INF/lib目录下
  3. 提取bonc-sso-client-2.1.1-sources.jar中的com/bonc/sso/client/demo/ IAuthHandle.java,参考DemoAuthHandleImpl实现一个适应本系统的实现类。IAuthHandle接口类中onSuccess方法是需要覆写的。/**
  *   校验通过后,写本地会话
  *
  *   @param   request
  *   HttpServletResponse
  *   @param   response
  *   HttpServletResponse
  *   @param   loginId
  *   登录用户ID,为用户在登录窗口的输入的ID
  */
  boolean  onSuccess(HttpServletRequest request, HttpServletResponse response, String loginId);
  4. 修改客户端应用中的/WEB-INF/web.xml中的配置,同测试环境部署。
  特别注意:需要将单点过滤器配置在所有过滤器的最前面,保证单点过滤器在过滤器链的最前面。
  5. 测试,同测试环境。5FAQ5.1 如何从旧版本迁移
  1、 删除之前的客户端应用中WEB-INF/lib/bonc_sso_client.jar
  2、 参照章节"部署客户端应用"部署新的客户端应用5.2 部署后,访问应用报错
  这一般是由于过滤器配置错误造成的。检查过滤器的各项配置是否正确,客户端是否能正常访问单点服务器。5.3 单点登录登录成功后,需要再次登录应用系统
  造成此现象原因有2个:
  Ø web.xml文件中没有配置相应的适合当前系统的com.bonc.sso.client.IAuthHandle实现类
  Ø 如果是XFrame框架,则是登录Action没有判断当前session中是否存在有效用户,而是直接跳转到登录界面5.3.1 配置IAuthHandle实现
  这说明单点服务配置成功,但是由于应用系统的session中没有相应的用户信息造成的。需要应用系统配置一个将用户信息写入本地session的一个实现类,接口为com.bonc.sso.client.IAuthHandle。系统提供3种实现供参考,并附上源代码:
  适用框架
  实现类
  Pure框架
  com.bonc.sso.client.impl.PureAuthHandleImpl
  Xframe2.*框架
  com.bonc.sso.client.impl.XframeAuthHandleImpl
  返回更多用户信息
  com.bonc.sso.client.impl.UserPrincipalHandleImpl
  参数配置:
  代码:
  本地用户信息session接口:
  其中loginId为用户登录时,填写的登录用户ID。5.3.2 修改LoginAction
  其中红色圈起来的为新增:5.4 退出系统失效5.4.1 情况一
  这是因为没有使用单点退出而造成的,正确的退出系统的url调用为:
  Http://${cas-server}:${cas-server-port}/${cas-server-contentpath}/logout?service=curentservice
  应该是cas单点服务器的根路径+/logout,此路径将不会重定向至你的单点应用,如果需要重定向至当前应用,应该将当前应用地址作为service参数附加在/logout后面。5.4.2 情况二
  不能只对*.action进行过滤,过滤器应该对所有请求/*进行过滤,。配置如下:
  < filter-mapping >
  < filter-name > SSO Filter filter-name >
  < url-pattern > /* url-pattern >
  filter-mapping >
  5.5 如何实现不通过单点就访问客户端应用的特定模块
  将不需要通过单点认证就能访问的URL,配置在单点过滤器的skipsUrl中。SSOFilter中的doFilter会通过preFilter会对url进行判断,若当前url在skipsUrl中,则不再对该url进行单点认证。 5.6 加单点后集群配置问题5.6.1 集群问题
  由于个别客户端应用的Apache采用jk_mod的集群方式,无法对tomcat内部的重定向的URL进行自动重写为apache的映射路径,因此客户端的表现为直接访问tomcat,但是用户初始访问是apache决定访问集群中的某个tomcat服务器,因此,负载均衡还是有效的。同时,由于同样的原因,造成客户端应用无法通过现有的apache集群来访问系统。
  解决办法:可通过单点服务器的apache统一访问,同时,将客户端应用原有的apache安装proxy模块,使用proxy_html替换现有的jk_mod集群。5.6.2 proxy集群环境下,通过单点认证后报403错误问题
  原因分析:直接访问应用根目录, apache会给用户分配一个 tomcat ,然后经过单点认证,apache重新转发时转发到新的tomcat,导致单点登录发放的凭证与当前tomcat不匹配造成的,tomcat未能正确的书写客户端cookie,导致转发错误。
  解决办法:通过Apache的header模块,给通过apache转发至集群中的tomcat时,强制书写一个路由ID标识,从而使得apache能转发至正确的tomcat。并且将各个系统的index.html,index.jsp排除在单点之外。
  如上海经分系统配置如下:RewriteRule ^/dss$ /dss/index.html [R,L]
  RewriteRule ^/dss/$ /dss/index.html [R,L]
  #dss
  Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/dss" env=BALANCER_ROUTE_CHANGED
  BalancerMember http://134.78.5.38:8080/dss loadfactor=1 route=dss1
  BalancerMember http://134.78.5.38:8090/dss loadfactor=1 route=dss2
  ProxySet stickysession=ROUTEID
  
  ProxyPass /dss/ balancer://dss/ nofailover=Off
  ProxyPassReverse /dss/ balancer://dss/5.7 经过单点验证后,系统抛空指针异常
  原因分析:单点验证的用户表和客户端应用的用户表不同步造成,单点验证的用户表中存在的用户在客户端应用的用户表中不存在。
  解决办法:修改SSOFilter,增加判断,当不存在用户时,提示权限不足(此处代码已修改)。同时,修改IAuthHandle实现类中得onSuccess方法,在用户不存在时,返回false,以供SSOFilter判断使用。5.8 怎么能同时支持内外网访问
  在实际部署中,会遇到内外网切换问题,此问题在之前的版本是通过修改配置的方式实现,当前,此方法已经废弃,改为通过通过apache反向代理解决内外网问题,相见apache反向代理配置
  需要注意的是:单点登录客户端地址均配置应用部署地址,保证服务器相通即可。5.8.1 使用pure门户集成应用系统地址切换问题
  在pure门户中配置应用系统管理的时候,系统的服务器地址应该配置为空。这样系统就可以默认取到当前访问的服务器地址(即门户apache的地址),当从外网访问时,取到的是服务器的外网IP。当从内网访问时,取到的是服务器的内网IP。然后通过apache对各应用做的proxy集群,分配tomcat,从而不会造成内外网切换问题。5.9 XFrame框架问题5.9.1 子系统重启后无限刷新
  通过门户进入子系统,子系统服务重启后,会一直在"您已掉线,请重新登录的页面"的界面无限刷新,无法回退操作。
  原因分析:此问题是由于子系统所使用的XFrame框架版本比较低,此版本中存在用户登录信息未及时写入数据库的bug,导致用户失败。
  同样,在用A用户登录门户,点击子系统菜单后,换B用户登录再次点击改子系统菜单会出现记录数不唯一的错误也属于该问题才生的。
  解决办法:由于框架版本比较低,为了减少直接升级至最新版本引起不可预见的问题,采用直接替换存在问题的部分代码。5.9.2 XFrame框架抛java.lang.NullPointerException
  具体报错类CookieManage中的 Utils.getResponse().addCookie(c)行。
  原因:由于老版的Utils.getResponse()方法直接调用的struts2的静态方法,此方法在没有经过struts2的拦截器的方法里面调用时,将抛出空指针异常。
  修改办法:将CookieManage的方法内容注释

手机拍摄的最佳伴侣斯莫格手机拍摄套件随着互联网的快速发展,如今越来越多的网络用户都会去拍一些日常的vlog,尤其是在抖音微视哔哩哔哩等视频平台则极为常见。但是很多普通的视频爱好者想要成为专业的或者半专业的视频拍客就很地产飞单成风,富力地产是怎么把客人都紧紧攥住的房地产领域非常常见的一个场景问题飞单。飞单是在房地产销售案场经常出现的问题。案场内的置业顾问和案场外的房产中介,通过藏客截客抢客相互介绍等方式,骗取更高佣金,获得灰色收入。而对于飞玩游戏不耽误游戏手柄随心充游戏机相信不少小伙伴都玩过,像PS4或者PS5这种都是业内一些比较知名的游戏主机。在玩的时候往往这些游戏机都是会配备专门的游戏手柄或者控制器来使用,而在以前呢游戏手柄往往都还是采用300段位的高性价比蓝牙耳机推荐,唐麦W5真无线动铁蓝牙耳机市面上的无线耳机品牌众多,价格也是高低不一,怎样才能让科技小白们选到一款功能强大又具有高性价比的无线耳机呢?不急,现在我就给大家推荐一款最新入手的唐麦W5动铁真无线蓝牙耳机,只要几百元级的13mm动圈耳机西圣AVA随着手机行业的发展,如今越来越多的手机厂商都取消了自家手机上的3。5mm耳机接口,取而代之的则是如今年轻人所追捧的无线蓝牙耳机。那么市面上的无线蓝牙耳机那么多,我们要如何选择呢?最漫步者LolliPodsPro降噪有多强?用完直接弃坑苹果美好的日子总是短暂的,马上就要大学毕业走上自己的工作岗位了,好在工作早已经确定了。所谓人靠衣装马靠鞍,毕竟人生第一份工作,当然要准备一套好的行头。电脑手机那当然是必备了,对哦,还差万能充体验丨REMAX睿量30W大功率自带线充电宝移动电源想必大家都用过,在这个机不离手的时代,基本上每个人出门都会携带一块移动电源,也就是俗称的充电宝。但是市面上的移动电源鱼龙混杂,我们想要选择一款性价比高且携带方便的移动电源并全链路服务V3。6。0更新,增加群聊表情包,来斗图啊2020年8月3日,全链路服务V3。6。0更新群聊功能。该功能的更新是云徙全链路服务深入业务视角的又一次创新。云徙敏锐的察觉到目前大多数企业客户服务为完成客户咨询和客户服务,只发挥直播监听也能用无线?快来试试森然无线监听耳机随着抖音,bilibili等视频平台以及直播平台的兴起,如今越来越多的网络大V以及娱乐艺人等都加入了直播的行列中。而一场优秀的直播除了需要一款优秀的声卡以外,还需要一款优秀的监听耳统一外观GalaxyNote20,Note20Ultra相机模块曝光GalaxyNote20和GalaxyNote20Ultra的后置摄像头模块看起来非常相似,特别是与前代相比。据一位熟悉三星的内部人士透露,三星与中国的一些零部件供应商关系密切。最外观有档次,内饰很卡罗拉,毫无性格的动力系统,试驾丰田亚洲狮为了提升在轿车市场的竞争力,一汽丰田推出了亚洲狮,最直接的对手就是一汽大众速腾,在血缘方面,亚洲狮和卡罗拉关系密切,这两款车都是基于TNGAC平台打造,其实我们也可以简单地将亚洲狮
围观!华为新爆料华为Mate50系列可能采用高通芯片您喜欢吗?哈喽,您好!我是原呵呵,点点关注吧,更多精彩内容等着您据报道,华为可能会依靠高通的Snapdragon芯片组在2021年为其华为中的旗舰产品华为Mate50系列高级智能手机提供核心显示屏市场扩张苹果订单提升夏普2021财年业绩预喜中新经纬客户端5月24日电据日经中文网消息,受益于全球液晶显示屏市场预期扩张及苹果iPhone液晶显示屏订单的增长,夏普预计2021财年(截至2022年3月)的合并净利润将比上财年荣耀6月起全面恢复芯片供应,未来不排除使用鸿蒙作者吴岱雅5月21日,荣耀CEO赵明在2021高通技术与合作峰会上表示,荣耀已正式与高通达成战略合作,未来荣耀全系产品将采用高通平台。荣耀的芯片供应将在6月份全面恢复,包括AMD英比特币挖矿遭遇强监管矿工大家都在观望期待更多细则科创板日报(杭州,记者冯军徐赐豪)讯5月21日,国务院副总理刘鹤主持召开国务院金融稳定发展委员会第五十一次会议,研究部署下一阶段金融领域重点工作。会议强调打击比特币挖矿和交易行为,天猫618预售榜单上线!这些商家在领跑天下网商记者章航英王诗琪天猫618来了。5月24日晚8点,天猫618预售开启。被称为官方作业的天猫榜单正式上线,并拥有专属的榜单会场。从618预售榜折扣榜,再到基于日常销量的热销榜适马的与腾龙的超长变焦150600价格区别不算小成像素质差别如何?本人是摄影爱好者,不是什么专业人士,也喜欢拍鸟,所以也就不在乎镜头是什么品牌,看中的是重量和焦段,只要能拍到就好,在二手市场看上腾龙一代,很便宜三千多点就进了一只,现在只要休息就背想配个6000元7000元的电脑,有什么好的建议?我推荐这款笔记本吧,炫龙T1ti。无论是游戏还是办公,都是上上之前。外观上,这款机器依然采用了15。6英寸全高清显示器,1080P分辨率使得游戏视觉体验能够得到更好的发挥。流畅的线疯狂的电话推销机器人一天拨号上千次,未婚被推销孩子辅导班中新经纬客户端5月24日电(常涛高铂宁)某辅导机构给我打了无数次电话,每次都说让我带着孩子去免费试听。我说我都没结婚,哪来的孩子?!别再来打扰我了!结果电话那头很客气地说,您的问题比特币跌破腰斩线!极度恐慌情绪中虚拟货币跳水不止财联社(上海编辑刘蕊)讯,自5。19暴跌后,虚拟货币市场在近一周内表现持续疲软。本周日,虚拟货币市场又经历了一轮自由跳水,从累积跌幅看,比特币价格已经直接自高点腰斩,以太坊狗狗币已可升级Android12OneUI4。0的Galaxy名单Google在IO上宣布将Android12Beta开放给PixelASUSvivoOPPORealmeSharpTecnoTCLZTE和小米等品牌,使对应的手机能够率先下载和安装曹县出圈后旅游业火爆,带上vivoS9,打卡拍照曾经玩过的梗只有妹纸才喜欢自拍?当然不是,越来越多的男孩子也爱上了自拍。根据美图2019年度自拍趋势数据报告,超过50的00后男生在日常生活中已离不开自拍,不管是肌肉男还是小鲜肉,都无法逃离自