1 访问时取得对方的ip或用户名, 然后存在你的网站session中, 如果没有认证则调用认证服务器的服务.
2 如果第一次上来则要求去认证服务器登录.注: 认证可以用webserivce做个服务就行了, 所有系统,不管你有多少系统都可以调.

解决方案 »

  1.   

    可能我没说清楚,客户访问的不是我服务器的页面,而是任意外部网站。
    当客户浏览器输入网址访问,通过服务器NAT转发,这时我的java程序要如何获取到客户信息。
    我用ip抓包工具侦听网卡的tcp数据,可以获取到客户端请求信息的
      

  2.   

    这个比较新颖,没见过拿java干这个的,关注一下
      

  3.   

    网络侦听工具都能做到,
    不过如果你自己想做,java也能侦听电脑某个端口的数据, 如果有数据来就解释tcp报文拿到别的网络回复数据的ip地址.
      

  4.   

    那么java要侦听哪个端口呢,看win2003的nat设置里面,有侦听端口139 138这些的
    用java的socket来做吗
      

  5.   


    全方位拦截不是不可以,但是比较浪费性能。作为网关(路由)来说,可以拦截到所有发给它的请求(毕竟就是要请求它帮忙转发),然后解析数据流的头信息,如果最开头的数据流发现; GET www.xxoo.com/xxoo/xxoo HTTP/1.0 这类信息,就说明这是个HTTP请求。不过如果楼主打算用Java来开发这种程序,恐怕是相当不适合的。因为Java对于网络底层的操作缺乏支持。
    如果打算用Java开发个HTTP代理服务(也就是浏览器里面需要配置代理上网的),可行性还是较高的。
      

  6.   

    JAVA 能支持的最底层的协议是传输层,像TCP和UDP,IP层是没有API访问的,要做只能通过JNI。像你这个应用Java实现不了。虽然看上去是http协议层面,但其实你需要在IP层做些事情。比如用户开浏览器打了一个IP,那这个TCP包就是去那个IP地址的。你得让没有认证过的客户把这个包丢给你的服务器,再把服务器返回的东西丢给正确的客户,而认证过的客户把这个包丢出去。这个动作需要在网关完成,Java是不行的。
      

  7.   

    解决问题了,可以用jbcap配合wincap来做,可以实现监听和转发。
    但考虑到性能问题采用其他方式做了。。