diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs
index 6fd5c9be75..1de1a4de15 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDbProperties.cs
@@ -2,9 +2,9 @@
public static class AbpOpenIddictDbProperties
{
- public static string DbTablePrefix { get; set; } = "AbpOpenIddict";
+ public static string DbTablePrefix { get; set; } = "AbpOpenIddict"; //TODO: Rename to "OpenIddict"
public static string DbSchema { get; set; } = null;
- public const string ConnectionStringName = "AbpOpenIddict";
+ public const string ConnectionStringName = "AbpOpenIddict"; //TODO: Rename to "OpenIddict"
}
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs
index 345392fffa..0812a45d5b 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictDomainModule.cs
@@ -75,7 +75,7 @@ public class AbpOpenIddictDomainModule : AbpModule
.AddServer(builder =>
{
// Access token encryption can only be disabled when using JWT tokens.
- builder.DisableAccessTokenEncryption();
+ builder.DisableAccessTokenEncryption(); //TODO: Should we always disable this?
builder
.SetAuthorizationEndpointUris("/connect/authorize")
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs
index c194b19de5..55121ba566 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/AbpOpenIddictOptions.cs
@@ -12,6 +12,7 @@ public class AbpOpenIddictOptions
///
/// Set false to suppress AddDeveloperSigningCredential() call on the OpenIddictBuilder.
+ /// Default: true.
///
public bool AddDevelopmentEncryptionAndSigningCertificate { get; set; } = true;
}
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs
index d80b84ea68..a96f109d13 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs
@@ -16,7 +16,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Authorizations;
-//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictAuthorizationStore),
typeof(AbpOpenIddictAuthorizationStore)
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs
index 6787226195..56c3b20375 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Scopes/AbpOpenIddictScopeStore.cs
@@ -14,7 +14,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Scopes;
-//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictScopeStore),
typeof(AbpOpenIddictScopeStore)
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs
index b17c1a79ad..71345e4087 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs
@@ -16,7 +16,6 @@ using Volo.Abp.Uow;
namespace Volo.Abp.OpenIddict.Tokens;
-//https://github.com/abpframework/abp/pull/12094
[ExposeServices(
typeof(IOpenIddictTokenStore),
typeof(AbpOpenIddictTokenStore)
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs
index 656ab724f5..3dd7da3233 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/OpenIddictToken.cs
@@ -8,6 +8,15 @@ using Volo.Abp.OpenIddict.Authorizations;
namespace Volo.Abp.OpenIddict.Tokens;
+/* TODO: Reconsider the entity designs
+ *
+ * Entity structure seems incorrectly designed:
+ * `OpenIddictToken` is an entity (not aggregate root) but have its own repository.
+ * `OpenIddictAuthorization` is also same.
+ * If they have repositories, they should be aggregate roots and should not be used as navigation properties in other entities (e.g. `OpenIddictApplication`).
+ * I think this will be the correct way since they are independently queried from database.
+ */
+
public class OpenIddictToken : FullAuditedEntity, IHasConcurrencyStamp
{
[DisableAuditing]
diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs
index c89ac256d0..440ad60896 100644
--- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs
+++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/TokenCleanupBackgroundWorker.cs
@@ -19,6 +19,12 @@ public class TokenCleanupBackgroundWorker : AsyncPeriodicBackgroundWorkerBase
protected async override Task DoWorkAsync(PeriodicBackgroundWorkerContext workerContext)
{
+ /* TODO: Should we use distributed locking here?
+ * Because, multiple instances of the application may work in parallel, and only one
+ * of them should work in a time. If you can't obtain the lock, it is good to wait for a longer time.
+ * I suggest to check https://github.com/abpframework/abp/blob/dev/framework/src/Volo.Abp.EventBus/Volo/Abp/EventBus/Distributed/InboxProcessor.cs
+ * for a good implementation, then apply a similar principle here.
+ */
await workerContext
.ServiceProvider
.GetRequiredService()