diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs
similarity index 99%
rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.Designer.cs
rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs
index bc14c07aec..34487a75a8 100644
--- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.Designer.cs
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.Designer.cs
@@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore;
 namespace OpenIddict.Demo.Server.Migrations
 {
     [DbContext(typeof(ServerDbContext))]
-    [Migration("20230307054116_Initial")]
+    [Migration("20230404033745_Initial")]
     partial class Initial
     {
         /// 
@@ -455,6 +455,9 @@ namespace OpenIddict.Demo.Server.Migrations
                         .HasColumnType("uniqueidentifier")
                         .HasColumnName("LastModifierId");
 
+                    b.Property("LastPasswordChangeTime")
+                        .HasColumnType("datetimeoffset");
+
                     b.Property("LockoutEnabled")
                         .ValueGeneratedOnAdd()
                         .HasColumnType("bit")
diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs
similarity index 99%
rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.cs
rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs
index ab3646a62c..611109065a 100644
--- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230307054116_Initial.cs
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20230404033745_Initial.cs
@@ -283,6 +283,7 @@ namespace OpenIddict.Demo.Server.Migrations
                     AccessFailedCount = table.Column(type: "int", nullable: false, defaultValue: 0),
                     ShouldChangePasswordOnNextLogin = table.Column(type: "bit", nullable: false),
                     EntityVersion = table.Column(type: "int", nullable: false),
+                    LastPasswordChangeTime = table.Column(type: "datetimeoffset", nullable: true),
                     ExtraProperties = table.Column(type: "nvarchar(max)", nullable: true),
                     ConcurrencyStamp = table.Column(type: "nvarchar(40)", maxLength: 40, nullable: true),
                     CreationTime = table.Column(type: "datetime2", nullable: false),
diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs
index f5e599fe73..6dcdccdd99 100644
--- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs
+++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs
@@ -452,6 +452,9 @@ namespace OpenIddict.Demo.Server.Migrations
                         .HasColumnType("uniqueidentifier")
                         .HasColumnName("LastModifierId");
 
+                    b.Property("LastPasswordChangeTime")
+                        .HasColumnType("datetimeoffset");
+
                     b.Property("LockoutEnabled")
                         .ValueGeneratedOnAdd()
                         .HasColumnType("bit")
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs
index 8a664da5c1..3ee5dbf126 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/AbpOpenIddictAspNetCoreModule.cs
@@ -5,6 +5,7 @@ using OpenIddict.Server;
 using Volo.Abp.AspNetCore.MultiTenancy;
 using Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared;
 using Volo.Abp.Modularity;
+using Volo.Abp.OpenIddict.Scopes;
 using Volo.Abp.OpenIddict.WildcardDomains;
 using Volo.Abp.Security.Claims;
 
@@ -133,6 +134,7 @@ public class AbpOpenIddictAspNetCoreModule : AbpModule
                 }
 
                 builder.AddEventHandler(RemoveClaimsFromClientCredentialsGrantType.Descriptor);
+                builder.AddEventHandler(AttachScopes.Descriptor);
 
                 services.ExecutePreConfiguredActions(builder);
             });
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs
new file mode 100644
index 0000000000..75401ada2b
--- /dev/null
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs
@@ -0,0 +1,34 @@
+using System;
+using System.Linq;
+using System.Threading.Tasks;
+using OpenIddict.Server;
+
+namespace Volo.Abp.OpenIddict.Scopes;
+
+public class AttachScopes : IOpenIddictServerHandler
+{
+    public static OpenIddictServerHandlerDescriptor Descriptor { get; }
+        = OpenIddictServerHandlerDescriptor.CreateBuilder()
+            .UseSingletonHandler()
+            .SetOrder(OpenIddictServerHandlers.Discovery.AttachScopes.Descriptor.Order + 1)
+            .SetType(OpenIddictServerHandlerType.Custom)
+            .Build();
+
+    private readonly IOpenIddictScopeRepository _scopeRepository;
+
+    public AttachScopes(IOpenIddictScopeRepository scopeRepository)
+    {
+        _scopeRepository = scopeRepository;
+    }
+
+    public async ValueTask HandleAsync(OpenIddictServerEvents.HandleConfigurationRequestContext context)
+    {
+        if (context is null)
+        {
+            throw new ArgumentNullException(nameof(context));
+        }
+
+        var scopes = await _scopeRepository.GetListAsync();
+        context.Scopes.UnionWith(scopes.Select(x => x.Name));
+    }
+}