challenge() public abstract method Generates challenges
authenticate() public abstract method Authenticates the
handleFailure() public abstract method Handles authentication