Figure 1: Execution sequence. 1. The LogonUser service calls the Java class that handles user authentication requests. 2. The Java code registers an instance of itself with the RMI registry, so any machine can try to log a user onto a site using the network. 3. A client application needs to use the LogonUser object. 4. The registry returns the object. 5. Now, the client can conceptually talk directly to the Java code on the server. It sends a username and password. 6. The Java code, through JNI, calls platform-dependent C++ code to authenticate the user. 7. The C++ code calls the LogonUserA Windows API function in Advapi32.dll. 8. LogonUserA returns True or False to the C++ code. 9. The C++ code returns True or False to the Java code. 10. The Java code returns True or False to the client.