QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1544|回复: 3

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

[复制链接]
发表于 2006-4-17 15:51:10 | 显示全部楼层 |阅读模式
看了一些也是有关网络认证的软件或者文章,但是不知道是否适用于我的情况,所以还是新开一贴,忘斑竹不要怪罪。

具体情况是这样的:

公寓的网络环境特殊。属于一条网线既传输电视,又连接互联网。虽然我很想转到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程序,用于实现向认证服务器主动发送一个登录消息,来实现自动登陆认证。不过效果还没有试,不知道可不可用。

代码如下:
[code:1]
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());
    }
}
[/code:1]
现在就是不知道Linux下该怎么办。有没有可能让Linux在启动过程中就完成http认证?

请教了
 楼主| 发表于 2006-4-18 08:45:13 | 显示全部楼层
没人理我啊,可能是问题不够清楚。

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

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

使用道具 举报

 楼主| 发表于 2006-4-18 20:38:37 | 显示全部楼层
开始怀疑发错地方了,版主帮忙移到合适的版面去吧
回复

使用道具 举报

 楼主| 发表于 2006-4-22 22:08:33 | 显示全部楼层
问题已解决,原本以为这种网络环境会很复杂。上次装的Magicinux,无法从DHCP获得IP。

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

目前已经把原来的三个Windows分区消灭了两个,剩余一个由于都是数据,暂时无法转移,只好作罢。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-2 12:21 , Processed in 0.045835 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表