1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Image;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.ObjectInputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import netscape.javascript.*;
public class Security extends Applet {
protected String error = null;
protected String userId = null;
/**
* This is the default constructor
*/
public Security() {
super();
}
/**
* This method initializes this
*/
@Override
public void init()
{
setSize(1, 1);
try
{
String login = System.getProperty("user.name");
String keyFileName = getParameter("keyfile.name");
String keyFilePath = getParameter("keyfile.path");
String servlet = getParameter("servlet");
int arrlen = 10000;
byte[] infile = new byte[arrlen];
File keyFile = new File(keyFilePath, keyFileName);
try {
FileInputStream fis = new FileInputStream(keyFile);
BufferedInputStream bis = new BufferedInputStream(fis);
DataInputStream dis = new DataInputStream(bis);
try {
// Read the key file
int filelength = dis.read(infile);
String filestring = new String(infile, 0, filelength);
Object[] data = new String[2];
data[0] = login;
data[1] = filestring;
// Transmit the login/key file to the servlet
URL urlServlet=new URL(servlet);
URLConnection connexion = urlServlet.openConnection();
connexion.setDoOutput(true);
// Send data to the servlet
ObjectOutputStream sortieObjet= new ObjectOutputStream(connexion.getOutputStream());
sortieObjet.writeObject(data);
sortieObjet.flush();
// Get servlet response
ObjectInputStream entreeObjet= new ObjectInputStream(connexion.getInputStream());
try
{
Object[] results = (Object[])entreeObjet.readObject();
if(results.length!=2)
error = "Invalid servlet response length";
else
{
boolean isUserIdentified = ((Boolean)results[0]).booleanValue();
if(!isUserIdentified)
error = (String)results[1];
else
userId = (String)results[1];
}
}
catch(Exception e)
{
error = "Invalid servlet response: "+e.getMessage();
}
}
catch(IOException iox) {
error = "I/O Error: "+iox.getMessage();
}
finally
{
if(dis!=null)
dis.close();
if(bis!=null)
bis.close();
if(fis!=null)
fis.close();
}
}
catch (FileNotFoundException fnf) {
error = "Key file not found";
}
catch(Exception e)
{
error = "Error: "+e.getMessage();
}
}
catch(Exception e)
{
error = "Error: "+e.getMessage();
}
Object[] args = new String[1];
if(error!=null)
{
// If there is an error return the status to the jsp identification page
JSObject win = JSObject.getWindow ( this );
args[0] = error;
win.call("fail", args);
}
else if(userId!=null)
{
JSObject win = JSObject.getWindow ( this );
args[0] = userId;
win.call("success", args);
}
// else The servlet ensure the redirection in all the other cases
}
} |
Partager