FileDocCategorySizeDatePackage
AuthCreditAgent.javaAPI DocExample2358Sun Feb 01 15:01:08 GMT 1998dcj.examples.security

AuthCreditAgent

public class AuthCreditAgent extends AuthAgent
Source code from "Java Distributed Computing", by Jim Farley. Class: AuthCreditAgent Example: 5-4 Description: The CreditAgent reimplemented to inherit the signature authentication from AuthAgent, and uses an ACL to control access to account information. NOTE: This file contains incomplete example code only, which will not compile without additions and modifications. At the time of this writing, a concrete implementations of the Acl and Permission interfaces are not available in the standard JDK.

Fields Summary
protected Acl
creditACL
Constructors Summary
public AuthCreditAgent(String host, int port)

    super(host, port);
    // Initialize our access control lists
    initACL();
  
Methods Summary
protected java.lang.StringgetCreditData(java.lang.String acctName)

    // Real method would use account name to
    // initiate a database query...
    return "No info available.";
  
protected voidinitACL()

    creditACL = new Acl();
    // Read resources and access permissions
    // from a database, initialize the ACL object
    //     .
    //     .
    //     .
  
protected booleanisAuthorized(java.security.Identity agent, java.lang.String acctName, java.lang.String access)

    boolean auth;
    java.security.acl.Permission p = new PermissionImpl(access);
    auth = creditACL.checkPermission(agent, p);
    return auth;
  
protected voidprocessMsg(java.lang.String msg)

    String name = null;
    String cmd = null;
    String retMsg = new String();

    // Parse the command and account name from the input stream.
    StreamTokenizer stok = new StreamTokenizer(new StringReader(msg));
    try {
      stok.nextToken();
      cmd = stok.sval;
      name = stok.sval;
    }
    catch (IOException e) {}

    if (cmd.compareTo("GET") == 0) {
      if (isAuthorized(remoteAgent, name, "READ")) {
        String cData = getCreditData(name);
        retMsg = name + " " + cData;
      }
      else {
        retMsg = "UNAUTHORIZED";
      }
    }
    else {
      retMsg = "UNKNOWN_CMD";
    }

    // Add return message with results to the message queue.
    addMsg(retMsg);