Booker 发表于 2006-4-17 15:51:10

关于基于http basic认证的网络连接的问题,请教

看了一些也是有关网络认证的软件或者文章,但是不知道是否适用于我的情况,所以还是新开一贴,忘斑竹不要怪罪。

具体情况是这样的:

公寓的网络环境特殊。属于一条网线既传输电视,又连接互联网。虽然我很想转到Linux系统,可惜网络连接的认证不知道该怎么办。只好求助各位高手。

认证是基于HTTP的基本认证(Basic)。

在winXP下的情况是:

网卡的IP地址设置为由DHCP自动分配。

每天开机,打开浏览器,访问网页时,会弹出登录框,输入用户名密码后,即可上网。从早到晚,基本不间断。只是长时间无数据传输的情况下,会被切断连接,下次使用仍然需要输入用户名和密码。

以下为未认证时访问google的应答

HTTP/1.1 302 Moved Temporarily
Server: PIX Firewall HTTP/1.1
Location: http://XXX.XXX.XXX.XXX/66.102.7.104/www.google.com/
Connection: close

然后,开始要求认证:

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="LEO-NET User Authentication"
Connection: close

正确登录后,再次访问:

HTTP/1.1 302 Moved Temporarily
Server: PIX Firewall HTTP/1.1
Location: http://www.google.com/
Connection: close

在Linux下的情况:

网卡的IP地址也是设置为DHCP自动分配。不过由于网络必须通过这个http的认证才能使用,因此在开机启动的时候,网卡无法初始化。启动之后的系统中,也无法使用。访问任何网页都无法打开。


windows 下,每次输用户名密码也还能够接受,至少可以上网。后来在网上发现了一段Java程序,用于实现向认证服务器主动发送一个登录消息,来实现自动登陆认证。不过效果还没有试,不知道可不可用。

代码如下:

import java.net.HttpURLConnection;
import java.net.URL;
import sun.misc.BASE64Encoder;

public class LeonetAuth {
    private static final String PASSCODE = "123456:654321";
    private static final String HOMEPAGE = "http://www.google.com/";

    public static void main(String[] args) throws Exception {
      String encpass = new String((new BASE64Encoder()).encode(PASSCODE.getBytes()));

      URL url = new URL(HOMEPAGE);
      HttpURLConnection con = (HttpURLConnection) url.openConnection();
      con.setRequestProperty("Authorization", "Basic " + encpass);
      con.connect();
      System.out.println
            (con.getResponseCode() + " " + con.getResponseMessage());
    }
}

现在就是不知道Linux下该怎么办。有没有可能让Linux在启动过程中就完成http认证?

请教了

Booker 发表于 2006-4-18 08:45:13

没人理我啊,可能是问题不够清楚。

不过,据我估计,同样的Java代码,在Linux下自然可以使用。

关键问题就是,如果Linux的网卡设置成DHCP分配地址,并且启动时激活,在启动过程中就会因为无法获取IP地址而无法激活。不知道网卡未激活的情况下,启动完成后,是否可以通过上边的程序向服务器发送登录请求。

Booker 发表于 2006-4-18 20:38:37

开始怀疑发错地方了,版主帮忙移到合适的版面去吧

Booker 发表于 2006-4-22 22:08:33

问题已解决,原本以为这种网络环境会很复杂。上次装的Magicinux,无法从DHCP获得IP。

可这次装了Ubuntu,没问题,用起来和在XP下一样。Java那段代码用不用都行。

目前已经把原来的三个Windows分区消灭了两个,剩余一个由于都是数据,暂时无法转移,只好作罢。
页: [1]
查看完整版本: 关于基于http basic认证的网络连接的问题,请教