パスワード認証とURLリンク

  1. 目的

     特定のグループにだけ見て貰いたいページがあった場合、パスワード認証を行い合致したらリンクをする方法があります。パスワードをCGIで認証すると「ネットワークをパスワードが流れる」などの問題があります。
     ここでは、アプレットを用いて、ローカルに認証を行う方法を紹介します。

  2. アプレットによるリンク

    1. URLへのリンク
       アプレットからURLにリンクするには、まず、urlにリンク先のURLを設定し、
       linkURL = new URL(getCodeBase(), url);
      で、linkURLを作成します。このlinkURLを
       getAppletContext().showDocument(linkURL);
      でアプレットのページを置き換えて表示します。
       別のページ(フレーム)に表示するには、
       getAppletContext().showDocument(linkURL,target);
      を利用します。

    2. ソース
       プログラムでは、1行入力と、ボタンを用意します。アプレットを起動し、パスワード "what" を入力し、Linkボタンを押すと、pass.htm にリンクします。

      package URL;
      
      import java.applet.Applet;
      import java.awt.*;
      import java.net.*;
      import java.awt.event.*;
      
      public class URLpassLink extends Applet {
      
        TextField passField;
        Button linkbutton;
        URL linkURL;
        String url = "pass.htm";
        String password="what";
      
      
        public void init() {
          passField = new TextField(15);
          linkbutton = new Button("Link");
          add(passField);
          add(linkbutton);
          linkbutton.addActionListener(new java.awt.event.ActionListener() {
              public void actionPerformed(ActionEvent e) {
            pass_action(e); } 
            });
        }
      
      
        public boolean pass_action(ActionEvent e) {
          if (passField.getText().equals(password)) {
            try {
              System.out.println("goto URL");
              linkURL = new URL(getCodeBase(), url);
              //getAppletContext().showDocument(newURL, "_self");
              getAppletContext().showDocument(linkURL);
            } catch (MalformedURLException err) {
              showStatus("URL error");
            }
          } else {
            System.out.println("no");
          }
          return true;
        }
      
      }

  3. 実行

    プログラムの先頭で Package を指定していますから、クラスファイルはURLファルダに保存します。
    リンクする側の記述は次のようになります。
    <html>
    <head><TITLE>passwordLink</TITLE></head>
    <body >
    
    パスワードを入力してください<BR>
    
    <applet code="URL.URLpassLink.class" width=200 height=30 >
    </applet>
    
    </body>
    </html>
    リンク先の URL は pass.htm になっていますから、適当な htm ファイルを作成しておいて下さい。
     下のアプレットで what を入力すると、pass.htm にリンクします。



    1. 注意
       このプログラムは、考え方のみを示しています。このままでは、検索サイトのロボットエンジンが、リンク先のURLをつくってしまいます。
       また、、パスワードの入力にtextFieldを利用しているため、入力が見えてしまいます。このパスワードはクラスファイルを(16進ダンプなどで)表示すると、見えてしまいます。