从嵌入式Applet进行HTTP调用时绕过内置浏览器身份验证

时间:2010-03-02 19:46:50

标签: java security browser applet camera

  • 我有一个简单的网页 嵌入式Java小程序。
  • 小程序 对不同的Axis进行HTTP调用 所有相同的相机 验证(例如用户名, 密码)。
  • 我在启动applet时将用户名和密码传递给Java代码 - 没问题。
  • 当我使用applet viewer在NetBeans中运行时,我可以完全访问摄像头并看到流媒体视频 - 与广告完全一样。
  • 当我在网络浏览器(Firefox)中打开HTML页面时,问题就开始了。
  • 即使我的代码处理身份验证:

    URL u = new URL(useMJPGStream ? mjpgURL : jpgURL);
    huc = (HttpURLConnection) u.openConnection();
    
    
    String base64authorization = 
        securityMan.getAlias(this.securityAlias).getBase64authorization();
    // if authorization is required set up the connection with the encoded 
    // authorization-information
    if(base64authorization != null)
    {
        huc.setDoInput(true);
        huc.setRequestProperty("Authorization",base64authorization);
        huc.connect();
    }
    
    InputStream is = huc.getInputStream();
    connected = true;
    BufferedInputStream bis = new BufferedInputStream(is);
    dis= new DataInputStream(bis);
    
  • 浏览器仍会显示身份验证弹出窗口,并分别请求每个摄像头的用户名和密码!
  • 更糟糕的是,相机显示的图像已经过时(从昨晚开始)。
  • 如何绕过浏览器的身份验证?

2 个答案:

答案 0 :(得分:0)

<强> 固定

我添加了以下几行:

huc.setDoOuput(true);
huc.setUseCaches(false);

之后

huc.setDoInput(true);

线。

答案 1 :(得分:0)

在浏览器base64authorization中运行时,不是null,是吗?

我不确定getBase64authorization应该返回什么,但我很确定当你调用huc.setRequestProperty("Authorization", **autorization value**)时它正在寻找HTTP基本身份验证值。含义**authorization value**必须采用here所述格式Basic **base 64 encoding of username:password**

也许您只需要将Basic(注意尾随空格)字符串添加到您的媒体资源中。