现有4个Web系统,各自独立,IE中输入登录IP+端口显示登录页面,登录页面中输入用户名、密码,验证码(随机)则登录到各个系统中。
现在需要提供一个独立的统一登录页面,登录页面要求输入:用户名,密码,验证码(随机),成功登录后页面提供上面4个Web系统的连接,点击连接,则自动跳过各个系统的登录页面,直接登录到系统内部。
要求:1)4个Web应用程序不能修改;
      2)统一登录的用户名,密码与上面4个Web系统的密码相同。
      3)各个应用程序之间,与统一登录之间分别部署不同机器。我的实现思路: 
     通过xml文件配置各个应用程序的ip和port;
     将登录页面隐藏,自动填写用户名、密码,验证码(不知道能否实现?如何实现?)
     统一登录控制自动提交(不知道能否实现?如何实现?)
   
请各位大侠帮忙看看这个功能可以实现吗?实现思路可取吗?如果能实现的话采用哪些相关技术呢?

解决方案 »

  1.   

    web应用程序完全不改不可能的~`
      

  2.   

    因为是各自不同的系统,前提就是各个Web应用不能修改。
    如果不需要输入验证码,可以实现吗?
      

  3.   

    因为如果用户通过浏览器上去的话,按原本是每个系统都会有一个session才不需要每次请求一个页面都要身份验证~`
    所以至少你得把原来系统的身份验证修改才行~`
      

  4.   

    其实应用程序的登录方式还有些不同,有的是通过认证中心,有的是自己在数据库校验的。
    我可以直接调用Web应用程序的Login.do(确定按钮),然后帮他把Session保存起来吗?
    Web应用的Session是保存在哪里的?
      

  5.   

    让其它4个系统提供个接口,session也可以啊
    我想应该改动不大吧
      

  6.   

    首先要确定4个系统中都会在session中做了什么数据保存。
    然后做一个统一的登录转发模块,单独部署在一台应用上,然后所有的请求都通过该模块转发,就类似集群中的前端代理。当然还包括各应用的session同步,这应该可以通过系统设置解决。
    只是个想法,不知道行不行,可不可实现。
      

  7.   

    如果Web系统配合修改,那需要怎么实现?
    各个系统直接提供一个统一登录的API还是修改各自的Session?哪个方法更简单一些,对Web应用的改动最小?
      

  8.   

    有没有人使用过SSO技术,那里有学习的资料?
      

  9.   

    所谓登陆不就是向指定的URL发送指定的参数
    第一个页面获取登陆必须的参数 保存在SESSION 或者下个页面中
    第2个页面 提供4个登陆选择 处理就是 POST或者  GET 那4个登陆页面的
      

  10.   

    SSO单点登录~`一样要改代码的
      

  11.   

    貌似采用SSO也需要4个系统的登录模块也需要响应的修改吧
      

  12.   

    代码肯定要改的,不然没有办法实现,用cookie也可以,让人家提供一个接口给你用
      

  13.   

    各系统代码可以不用改,第一次登录时可以通过下面的方法同时登录各系统:URL url = new URL("http://111.111.111.111:8080/login.jsp?userid=xxx&password=xxx&code=xxx");//code指验证码
    URLConnection connection = url.openConnection();使用URL.openConnection()的方式等同于通过页面访问,问题在于验证码是服务器端生成的,在系统之外你无法获得验证码,因此需要上面的登录之前获得各系统的验证码,通过抓取页面html代码来解析出验证码,抓取html大致如下:      URL url = new URL(urlStr);
          HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
          InputStreamReader isr = new InputStreamReader(httpConn.getInputStream());
          BufferedReader br = new BufferedReader(isr);
          StringBuffer html = new StringBuffer();
          String temp;
          while ((temp = br.readLine()) != null) {
            html.append(temp);
          }
          br.close();
          isr.close();
      

  14.   

    登录口不用做修改,但是要做扩展
    Finance         //财务系统
    Administration  //行政系统
    Personnel       //人事系统
    ACL             //验证模块建立用户映射表
    ACLLoginID,FinanceLoginID,AdministrationLoginID,PersonnelLoginID,AuthoritySessionCode进入子系统采用
    http://Finance.company.com/AutoAuthority.do?LoginID=<%=ACL.getFinanceLoginID() %>&sess=<%=ACL.getAutoritySessionCode() %>或者将AuthoritySessionCode存储到cookie中,且expires设为浏览器进程