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()