diff --git a/profile.install b/profile.install
index a53be1a..0ec8482 100644
--- a/profile.install
+++ b/profile.install
@@ -54,3 +54,17 @@ function profile_update_8002() {
 
   return t('Permission name updated.');
 }
+
+/**
+ * Add uid to profile entity_keys.
+ */
+function profile_update_8003() {
+  // This is borrows significantly from node_update_8003()
+  $manager = \Drupal::entityDefinitionUpdateManager();
+  $entity_type = $manager->getEntityType('profile');
+  $entity_keys = $entity_type->getKeys();
+  $entity_keys['uid'] = 'uid';
+  $entity_type->set('entity_keys', $entity_keys);
+  $manager->updateEntityType($entity_type);
+  $manager->updateFieldStorageDefinition($manager->getFieldStorageDefinition('uid', 'profile'));
+}
diff --git a/src/Entity/Profile.php b/src/Entity/Profile.php
index 94e33d1..1fc81ea 100644
--- a/src/Entity/Profile.php
+++ b/src/Entity/Profile.php
@@ -48,6 +48,7 @@ use Drupal\user\UserInterface;
  *     "id" = "profile_id",
  *     "revision" = "revision_id",
  *     "bundle" = "type",
+ *     "uid" = "uid",
  *     "uuid" = "uuid"
  *   },
  *  links = {
@@ -264,7 +265,7 @@ class Profile extends ContentEntityBase implements ProfileInterface {
       ->setDescription(t('The user that owns this profile.'))
       ->setRevisionable(TRUE)
       ->setSetting('target_type', 'user')
-      ->setSetting('handler', 'default');
+      ->setDefaultValueCallback('Drupal\profile\Entity\Profile::getCurrentUserId');
 
     $fields['status'] = BaseFieldDefinition::create('boolean')
       ->setLabel(t('Active'))
@@ -290,4 +291,16 @@ class Profile extends ContentEntityBase implements ProfileInterface {
     return $fields;
   }
 
+  /**
+   * Default value callback for 'uid' base field definition.
+   *
+   * @see ::baseFieldDefinitions()
+   *
+   * @return array
+   *   An array of default values.
+   */
+  public static function getCurrentUserId() {
+    return [\Drupal::currentUser()->id()];
+  }
+
 }
