diff --git a/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/DeviceFlowCodes.cs b/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/DeviceFlowCodes.cs
index 72c112383..34ebb029a 100644
--- a/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/DeviceFlowCodes.cs
+++ b/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/DeviceFlowCodes.cs
@@ -51,6 +51,14 @@ public class DeviceFlowCodes
///
public string? Description { get; private set; }
+ ///
+ /// Gets or sets the creation time.
+ ///
+ ///
+ /// The creation time.
+ ///
+ public DateTime CreationTime { get; private set; }
+
///
/// Gets or sets the expiration.
///
diff --git a/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/PersistedGrant.cs b/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/PersistedGrant.cs
index f92867608..b2f0ab944 100644
--- a/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/PersistedGrant.cs
+++ b/src/BuildingBlocks/Authentication/OpenIdConnect/Masa.BuildingBlocks.Authentication.OpenIdConnect.Domain/Entities/PersistedGrant.cs
@@ -15,6 +15,8 @@ public class PersistedGrant
public string? Description { get; private set; }
+ public DateTime CreationTime { get; private set; }
+
public DateTime? Expiration { get; private set; }
public DateTime? ConsumedTime { get; private set; }
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
index e535281d2..ae9593826 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100).IsRequired(false);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200).IsRequired(false);
+ builder.Property(x => x.CreationTime).IsRequired();
builder.Property(x => x.Expiration).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
index 0a6f79975..5aeb657fb 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.Oracle/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100).IsRequired(false);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200).IsRequired(false);
+ builder.Property(x => x.CreationTime).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
builder.Property(x => x.Data).HasMaxLength(50000).IsRequired();
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
index 9842e0ecd..14ec6612e 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200);
+ builder.Property(x => x.CreationTime).IsRequired();
builder.Property(x => x.Expiration).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
index 8c9e41d56..cb923d693 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore.PostgreSql/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200);
+ builder.Property(x => x.CreationTime).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
builder.Property(x => x.Data).HasMaxLength(50000).IsRequired();
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
index b31c9c59c..a5492686e 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/DeviceFlowCodesEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200);
+ builder.Property(x => x.CreationTime).IsRequired();
builder.Property(x => x.Expiration).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
diff --git a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
index 003eda772..e56e5cbe2 100644
--- a/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
+++ b/src/Contrib/Authentication/OpenIdConnect/Masa.Contrib.Authentication.OpenIdConnect.EFCore/EntityConfigurations/PersistedGrantEntityTypeConfiguration.cs
@@ -13,6 +13,7 @@ public void Configure(EntityTypeBuilder builder)
builder.Property(x => x.SessionId).HasMaxLength(100);
builder.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
builder.Property(x => x.Description).HasMaxLength(200);
+ builder.Property(x => x.CreationTime).IsRequired();
// 50000 chosen to be explicit to allow enough size to avoid truncation, yet stay beneath the MySql row size limit of ~65K
// apparently anything over 4K converts to nvarchar(max) on SqlServer
builder.Property(x => x.Data).HasMaxLength(50000).IsRequired();