docs: @Override
      public boolean login() throws LoginException {
          try{
              Object[] userPass= getCallBackAuth();
              if (null == userPass || userPass.length < 2) {
                  setAuthenticated(false);
                  throw new FailedLoginException();
              }
              String name = (String) userPass[0];
              Object pass = userPass[1];
              boolean authenticated = authenticate(name, pass);
              setAuthenticated(authenticated);
  
              if (!isAuthenticated()) {
                  throw new FailedLoginException();
              }
              return isAuthenticated();
          } catch (UnsupportedCallbackException e) {
              throw new LoginException("Error obtaining callback information.");
          } catch (IOException e) {
              if (_debug) {
                  e.printStackTrace();
              }
              throw new LoginException("IO Error performing login.");
          }
      }