Symfony controller that registers a user via HTTP-POST
I feel like my controller is too big and the function does too much.


I think you're right there. Your validation rules shouldn't be in the controller, but in separate classes. That makes re-using them much easier. I


  My initial hunch is that I should put this into a service and break it
  up. But it seems like I would just be copying and pasting this code
  into class.


You're right here. Just moving code from your controller to a service makes no sense. 

Why aren't you using Symfony Forms? It does exactly the job you're doing here: take the Request and some rules and tell you if the request matches your validation rules.

You can create an object (a Doctrine entity or a Data Transfer Object, DTO), add the constraints to it by using annotations.

See this to examples from https://stovepipe.systems/post/avoiding-entities-in-forms:

Your DTO:

class ChangeUsernameData
{
    /** 
     * @Some\Custom\Assert\Unique(entity="App\Entity\Authentication", field="username")
     * @Assert\Length(5, 16)
     **/
    public $newUsername;
}


Your controller:

$changeUsername = new ChangeUsernameData();
    $form = $this-&gt;formFactory-&gt;create(ChangeUsernameType::class, $changeUsername);
    $form-&gt;handleRequest($request);

    if ($form-&gt;isSubmitted() &amp;&amp; $form-&gt;isValid()) {
        $authentication-&gt;setUsername($changeUsername-&gt;newUsername);
        $this-&gt;em-&gt;flush($authentication);

        // redirect
    }