How do I implement the login, register and "Forgotten password" forms?
Here is what I ended up doing in my controllers :

# Login form
public function content() {
  $formBuilder = $this-&gt;formBuilder();
  $form = $formBuilder-&gt;getForm("Drupal\user\Form\UserLoginForm");
  return [
  '#theme' =&gt; 'weber_login_form',
  '#login_form' =&gt; $form,
  ];
}

# Forgotten password form
public function content() {
  $formBuilder = $this-&gt;formBuilder();
  $form = $formBuilder-&gt;getForm("Drupal\user\Form\UserPasswordForm");
  return [
    '#theme' =&gt; 'weber_password_form',
    '#password_form' =&gt; $form,
  ];
}

# Register form
public function content() {
  $entity = \Drupal::entityManager()
  -&gt;getStorage('user')
  -&gt;create(array());

  $formObject = \Drupal::entityManager()
  -&gt;getFormObject('user', 'register')
  -&gt;setEntity($entity);

  $form = \Drupal::formBuilder()-&gt;getForm($formObject);
  return [
    '#theme' =&gt; 'weber_register_form',
    '#register_form' =&gt; $form,
    '#link' =&gt; NULL,
  ];
}