关于用httpclient结合servlet登录的问题

想实现的情景是这样的,这是一个单点登录的体系。用户第一次访问Web应用,被重定向到认证中心登录,成功后认证中心重定向到该Web应用,然后该Web应用利用某些机制(如servlet)自动实现该合法用户登录,直接呈现登陆后的页面到浏览器。
(注认证中心通过本地的用户映射表找到该Web的真实用户名,然后返回给Web应用的是该应用自己的真实用户名。)
我现在想做的就是,在Web应用端拦截到用户名后查询到密码,然后用httpclient的postmethod去实现登录,结果浏览器直接显示的就是登录后的页面了。可以在servlet中用调用httpclient的postmethod,然后得到Web应用的cookie,再放在servelt的header里面,再redirect到Web登陆后的页面吗?可行吗?(Web应用采取cookie机制认证)。也不知道说明白了没,其实就是自动登录呈现页面的问题。真心求教。

2个回答

[quote]按你说的那样需要改很多原有系统的逻辑,不太好。我也想全网使用同一ID,这样各个Web应用都不用自己存储用户了,呵呵。可实际还要涉及权限什么的,所以登录、赋权这些都少不了。没办法,还有什么好办法吗?再次感谢。 [/quote]

其实,也不用改多少。

用户没登录时,就弹出认证中心的登录页。

用户在认证中心登录后,认证中心调用Web应用的WebService,将用户信息作为参数传给Web应用,另外还有一个随机长字符串传过来。认证中心再重定向到Web应用的直接登录页,url中带有那个随机长字符串。

Web应用的这页,接收到这个随机长字符串后,与认证中心通过WebService传来的进行对比,对比上了,就认为那个用户已经登录了,调用原来的登录方法(不再需要密码)。

建议这样来做:
1. 用户打开Web应用页面.

  1. Web应用发现用户未登录,发送一个请求给认证中心,并打开认证中心的登录页。

  2. 用户在认证中心中登录。

  3. 认证中心通知Web应用哪个用户登录了,将用户信息传给Web应用。

  4. Web应用认为当前用户已经登录了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问