A command-line SSO (Single Sign-On) system demonstrating object-oriented design patterns and secure user authentication in Java. Built as a sophomore-year project to explore advanced Java concepts including lambda expressions, design patterns, and modular architecture.
Advanced Architecture
- Command Processor Pattern: Custom processor using lambda expressions and HashMaps to execute Runnable objects dynamically
- Separation of Concerns: Modular design across
User,UserList,InformationHandler, andSystemTimeclasses - Security-First Design: Account security through challenge questions with validation system
Engineering Practices
- Complete Javadoc documentation for all methods
- Encapsulation through private helper methods
- Bug tracking documented in class headers
- Real-time session tracking with millisecond precision
User Management
- Account creation with username/password validation
- Secure login with fallback security question challenges
- Session time tracking
Security System
- Multi-question security challenge system
- Password protection (with noted security considerations for future improvement)
- Account-specific security question storage
Core Technologies
- Java (OOP, Lambda Expressions, Functional Interfaces)
- HashMap data structures for user storage and command routing
- Runnable objects for dynamic method execution
Design Patterns
- Command Pattern (via lambda-based processor)
- Observer Pattern (via security question challenges)
- Factory Pattern (user object creation)
The Processor subclass demonstrates functional programming concepts in Java:
private final Runnable ADD_SECURITY_QUESTIONS = () -> { addSecurityQuestions(); };
// Mapped to HashMap for dynamic command execution