app访问需要cas登陆的服务

iTry 2014-08-15 07:43:02
现在遇到的问题是这样的:

一个app需要服务一个服务端A提供的接口,而服务端对所有的url都有经过CAS过滤器过滤,也就是说要访问服务端A提供的url,必须先登陆cas,

app是提供httpclient访问服务端A提供的接口,app的登陆账号是例外一套账号跟服务端A是不一样的,服务端A给该app提供一个通用的账号B来登陆cas,也就是说所有app请求过来都需要通过账号B来登陆cas,然后再访问服务端A的服务,

现在有个思路是这样的,app请求服务时带上账号B的信息,然后在服务端A的cas过滤器前再定义一个新的过滤器C来拦截请求,然后在过滤器C里提供httpclient模拟登陆,登陆后那jsessionid返回给app,app再使用带有该jsessionid的请求来访问服务

遇到的问题:这样带过滤器C模拟登陆后的jsessionid的请求,还是会被转到cas登陆页面,
而如果通过浏览器登陆后 再拿浏览器请求里的jsessionid设置给app请求 确可以访问服务端A提供的服务。请问这是什么回事? 浏览器登陆与httpclient模拟登陆对后台有什么不一样??

请大侠赐教。。。。。。。。。。。。。。。 急啊 被这问题困扰了好几天了
...全文
191 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
iTry 2014-08-22
  • 打赏
  • 举报
回复
可以了,jsessionid没过期,jsessionid保存在cas服务端这边关闭后服务端不会知道的,
现在是这样解决的 在过滤器c登录后返回cookies给app,app那边再把该cookies设置给app那边的httpclient,这样再访问时带着cookie过去就可以访问了, 但不知道为什么浏览器登录只需要jsessionid就可以????
代码在工作机 拷贝不出来 ,截个图
过滤器C登录成功或返回Cookies


app这边接收到cookies后设置给httpclient


以后app使用该httpclient随便访问服务都畅通无阻

为什么浏览器登录只需要jsessionid就可以???? 还请高手指教啊
attilax 2014-08-17
  • 打赏
  • 举报
回复
sessionid过期了...因为应该是...过滤器C里提供httpclient模拟登陆,登陆后那jsessionid可能是保存在内存中的..so httpclient结束以后就关闭了session... 可以尝试保存httpclient不结束....

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧