diff --git a/src/OpenIDConnect.php b/src/OpenIDConnect.php
index f80c4a98e0ab3a283bdd98553c7996e0598662fd..9c2b0fb0eabf364fece45150b6a54a29bbbae827 100644
--- a/src/OpenIDConnect.php
+++ b/src/OpenIDConnect.php
@@ -560,7 +560,7 @@ class OpenIDConnect {
    *   A unique username.
    */
   public function generateUsername(string $sub, array $userinfo, string $client_name): string {
-    $name = 'oidc_' . $client_name . '_' . md5($sub);
+    $name = $userinfo['email'];
     $candidates = ['preferred_username', 'name'];
     foreach ($candidates as $candidate) {
       if (!empty($userinfo[$candidate])) {
diff --git a/tests/src/Unit/OpenIDConnectTest.php b/tests/src/Unit/OpenIDConnectTest.php
index bc6bc7b3245ac8bf2ac9dd0a5861ed7aa6b7bda4..016296f0cb135f63c2309ef84901ff142b34e58a 100644
--- a/tests/src/Unit/OpenIDConnectTest.php
+++ b/tests/src/Unit/OpenIDConnectTest.php
@@ -382,8 +382,7 @@ class OpenIDConnectTest extends UnitTestCase {
     int $status,
     bool $duplicate,
   ): void {
-    // Mock the expected username.
-    $expectedUserName = 'oidc_' . $client_name . '_' . md5($sub);
+    $expectedUserName = $userinfo['email'];
 
     // If the preferred username is defined, use it instead.
     if (array_key_exists('preferred_username', $userinfo)) {