我的项目要集成一些已经在运行的应用,希望实现以下目标: 1:单点登陆,在我的项目中登录后,就可直接使用其它应用中的页面,不用再登录 2:不登录的话,不允许直接访问应用中的地址 3:暂不考虑在其它应用中的角色权限问题,只要登录都可访问 目前的思路: 1:在我应用中登录后,会产生一个加密字符串,通过我应用访问其它应用的页面,这个加密字符串会自动作为参数加到url后面 2:在其它应用中加filter,在其中解析到这个加密字符串,使用我提供的jar中方法解密字符串,看是否与约定相同,若相同,则认为已登录,若不相同,则认为未登录 这种方法有很多问题,比如说如果别人解析到这个加密字符串,就可以通过url直接访问各应用了。 有没有更好的方法啊?

解决方案 »

  1.   

    http://blog.csdn.net/HuDon/archive/2007/02/09/1506042.aspx
      

  2.   

    将这个加密字符串放入Session变量中,而不是放在URL中,在每个页面得头部,定义安全页面,判断session是否有这个安全字符串,没有就自动跳转到登陆界面,在JSP中,为了方便,你可以专门定义一个security.jsp,用于安全判断,然后使用JSP:INCLUDE使用他,就可以一劳永逸了
      

  3.   

    1 用session
    2 检查cookies是否为空
      

  4.   


    问题是,我要访问的其它应用可能根本不是这台服务器上的,它们也不可以直接访问我登录的应用的session啊
      

  5.   


    cookie也不成,因为要集成的应用可能根本不是同一个域名
      

  6.   

    如果要自己实现这样的单点登录,lz的方案貌似是唯一的方法了.
    考虑到安全问题,这里的token生成方法要做的严密一些, 除了选择合适的加密算法, 也至少把密码和时间戳混合加密成一个token. 在filter中解密出密码和时间戳,不仅判断密码是否正确,也看时间戳是否过期.
      

  7.   


    恐怕不能在所有的应用上部署我的filter
      

  8.   


    可是这样作只能知道用户是否登录,而无法获取用户权限。而且,这个token如果被人获取了怎么办?