From 0a8423d0b07cd7d7a325423e7eb143d6c7a5c82a Mon Sep 17 00:00:00 2001
From: maliming <6908465+maliming@users.noreply.github.com>
Date: Tue, 7 Jul 2020 11:23:54 +0800
Subject: [PATCH] Identity Server is done.
---
.../ApiResources/ApiResourceConsts.cs | 12 +-
.../ApiResources/ApiResourceEto.cs | 4 +-
.../ApiResources/ApiResourcePropertyConsts.cs | 9 ++
.../ApiResources/ApiResourceScopeConsts.cs | 4 +-
.../ApiResources/ApiResourceSecretConsts.cs | 6 +-
.../ApiScopes/ApiResourceConsts.cs | 8 +-
.../ApiScopes/ApiScopeClaimConsts.cs | 7 --
.../ApiScopes/ApiScopePropertyConsts.cs | 6 +-
.../Clients/ClientClaimConsts.cs | 7 +-
.../IdentityServer/Clients/ClientConsts.cs | 24 ++--
.../Clients/ClientCorsOriginConsts.cs | 4 +-
.../Clients/ClientGrantTypeConsts.cs | 4 +-
.../Devices/DeviceFlowCodesConsts.cs | 19 ++-
.../Grants/PersistedGrantConsts.cs | 22 +++-
.../IdentityResourceConsts.cs | 8 +-
.../IdentityResourcePropertyConsts.cs | 6 +-
...ntityServerModuleExtensionConfiguration.cs | 9 ++
.../IdentityServerModuleExtensionConsts.cs | 4 +-
.../AbpIdentityServerDomainModule.cs | 1 +
.../ApiResources/ApiResource.cs | 25 +++-
.../ApiResources/ApiResourceProperty.cs | 39 ++++++
.../ApiResources/IApiResourceRepository.cs | 5 -
.../Abp/IdentityServer/ApiScopes/ApiScope.cs | 4 +-
.../IdentityServer/ApiScopes/ApiScopeClaim.cs | 14 +--
.../IdentityResourceProperty.cs | 4 +-
.../IdentityServerAutoMapperProfile.cs | 117 +++++++++++-------
...IdentityServerEfCoreQueryableExtensions.cs | 3 +-
.../ApiResources/ApiResourceRepository.cs | 9 --
...IdentityServerEntityFrameworkCoreModule.cs | 1 +
.../IIdentityServerDbContext.cs | 1 -
.../IdentityServerDbContext.cs | 1 -
...yServerDbContextModelCreatingExtensions.cs | 111 ++++++++++-------
.../IdentityServerDataSeedContributor.cs | 2 +-
33 files changed, 313 insertions(+), 187 deletions(-)
create mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourcePropertyConsts.cs
delete mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaimConsts.cs
create mode 100644 modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResourceProperty.cs
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceConsts.cs
index b20b743b50..9a023c435b 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceConsts.cs
@@ -1,9 +1,11 @@
-namespace Volo.Abp.IdentityServer.ApiScopes
+namespace Volo.Abp.IdentityServer.ApiResources
{
public class ApiResourceConsts
{
- public const int NameMaxLength = 200;
- public const int DisplayNameMaxLength = 200;
- public const int DescriptionMaxLength = 1000;
+ public static int NameMaxLength { get; set; } = 200;
+
+ public static int DisplayNameMaxLength { get; set; } = 200;
+
+ public static int DescriptionMaxLength { get; set; } = 1000;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceEto.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceEto.cs
index 1aeb83727f..333201d284 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceEto.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceEto.cs
@@ -1,7 +1,7 @@
using System;
using JetBrains.Annotations;
-namespace Volo.Abp.IdentityServer.ApiScopes
+namespace Volo.Abp.IdentityServer.ApiResources
{
[Serializable]
public class ApiResourceEto
@@ -17,4 +17,4 @@ namespace Volo.Abp.IdentityServer.ApiScopes
public bool Enabled { get; set; }
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourcePropertyConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourcePropertyConsts.cs
new file mode 100644
index 0000000000..2bcf8643d1
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourcePropertyConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.IdentityServer.ApiResources
+{
+ public class ApiResourcePropertyConsts
+ {
+ public static int KeyMaxLength { get; set; } = 250;
+
+ public static int ValueMaxLength { get; set; } = 2000;
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceScopeConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceScopeConsts.cs
index c9b874b12c..f64c8d79cf 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceScopeConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceScopeConsts.cs
@@ -1,7 +1,7 @@
-namespace Volo.Abp.IdentityServer.ApiScopes
+namespace Volo.Abp.IdentityServer.ApiResources
{
public class ApiResourceScopeConsts
{
- public const int ScopeMaxLength = 200;
+ public static int ScopeMaxLength { get; set; } = 200;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
index dce950d30c..f2692d1653 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
@@ -1,4 +1,4 @@
-namespace Volo.Abp.IdentityServer.ApiScopes
+namespace Volo.Abp.IdentityServer.ApiResources
{
public class ApiResourceSecretConsts
{
@@ -15,8 +15,8 @@
public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
///
- /// Default value: 2000
+ /// Default value: 1000
///
- public static int DescriptionMaxLength { get; set; } = 2000;
+ public static int DescriptionMaxLength { get; set; } = 1000;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiResourceConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiResourceConsts.cs
index ab268690be..78f59a1eff 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiResourceConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiResourceConsts.cs
@@ -2,8 +2,10 @@
{
public class ApiScopeConsts
{
- public const int NameMaxLength = 200;
- public const int DisplayNameMaxLength = 200;
- public const int DescriptionMaxLength = 1000;
+ public static int NameMaxLength { get; set; } = 200;
+
+ public static int DisplayNameMaxLength { get; set; } = 200;
+
+ public static int DescriptionMaxLength { get; set; } = 1000;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaimConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaimConsts.cs
deleted file mode 100644
index f3175e8774..0000000000
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaimConsts.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Volo.Abp.IdentityServer.ApiScopes
-{
- public class ApiScopeClaimConsts
- {
- public const int NameMaxLength = 200;
- }
-}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopePropertyConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopePropertyConsts.cs
index 5450e67030..ef4f83af07 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopePropertyConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopePropertyConsts.cs
@@ -2,8 +2,8 @@
{
public class ApiScopePropertyConsts
{
- public const int KeyMaxLength = 250;
- public const int ValueMaxLength = 2000;
- public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
+ public static int KeyMaxLength { get; set; } = 250;
+
+ public static int ValueMaxLength { get; set; } = 2000;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientClaimConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientClaimConsts.cs
index 3a5d1fe907..e6a8cc5c5f 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientClaimConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientClaimConsts.cs
@@ -2,7 +2,8 @@
{
public class ClientClaimConsts
{
- public const int TypeMaxLength = 250;
- public const int ValueMaxLength = 250;
+ public static int TypeMaxLength { get; set; } = 250;
+
+ public static int ValueMaxLength { get; set; } = 250;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientConsts.cs
index ca69c51eef..4331ab7064 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientConsts.cs
@@ -2,26 +2,26 @@
{
public class ClientConsts
{
- public const int ClientIdMaxLength = 200;
+ public static int ClientIdMaxLength { get; set; } = 200;
- public const int ProtocolTypeMaxLength = 200;
+ public static int ProtocolTypeMaxLength { get; set; } = 200;
- public const int ClientNameMaxLength = 200;
+ public static int ClientNameMaxLength { get; set; } = 200;
- public const int ClientUriMaxLength = 2000;
+ public static int ClientUriMaxLength { get; set; } = 2000;
- public const int LogoUriMaxLength = 2000;
+ public static int LogoUriMaxLength { get; set; } = 2000;
- public const int DescriptionMaxLength = 1000;
+ public static int DescriptionMaxLength { get; set; } = 1000;
- public const int FrontChannelLogoutUriMaxLength = 2000;
+ public static int FrontChannelLogoutUriMaxLength { get; set; } = 2000;
- public const int BackChannelLogoutUriMaxLength = 2000;
+ public static int BackChannelLogoutUriMaxLength { get; set; } = 2000;
- public const int ClientClaimsPrefixMaxLength = 200;
+ public static int ClientClaimsPrefixMaxLength { get; set; } = 200;
- public const int PairWiseSubjectSaltMaxLength = 200;
+ public static int PairWiseSubjectSaltMaxLength { get; set; } = 200;
- public const int UserCodeTypeMaxLength = 100;
+ public static int UserCodeTypeMaxLength { get; set; } = 100;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientCorsOriginConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientCorsOriginConsts.cs
index 07ba598d6c..2ec28df4a2 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientCorsOriginConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientCorsOriginConsts.cs
@@ -2,6 +2,6 @@
{
public class ClientCorsOriginConsts
{
- public const int OriginMaxLength = 150;
+ public static int OriginMaxLength { get; set; } = 150;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientGrantTypeConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientGrantTypeConsts.cs
index 5f94c51f97..2407f83cc0 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientGrantTypeConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Clients/ClientGrantTypeConsts.cs
@@ -2,6 +2,6 @@
{
public class ClientGrantTypeConsts
{
- public const int GrantTypeMaxLength = 250;
+ public static int GrantTypeMaxLength { get; set; } = 250;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Devices/DeviceFlowCodesConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Devices/DeviceFlowCodesConsts.cs
index b0c87fe89d..80d82bbfa8 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Devices/DeviceFlowCodesConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Devices/DeviceFlowCodesConsts.cs
@@ -2,11 +2,18 @@
{
public class DeviceFlowCodesConsts
{
- public const int DeviceCodeMaxLength = 200;
- public const int UserCodeMaxLength = 200;
- public const int SubjectIdMaxLength = 200;
- public const int ClientIdMaxLength = 200;
- public const int DataMaxLength = 50000;
- public static int DataMaxLengthValue { get; set; } = DataMaxLength;
+ public static int DeviceCodeMaxLength { get; set; } = 200;
+
+ public static int UserCodeMaxLength { get; set; } = 200;
+
+ public static int SubjectIdMaxLength { get; set; } = 200;
+
+ public static int SessionIdMaxLength { get; set; } = 100;
+
+ public static int DescriptionMaxLength { get; set; } = 200;
+
+ public static int ClientIdMaxLength { get; set; } = 200;
+
+ public static int DataMaxLength { get; set; } = 50000;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs
index b1dd21d6f8..e0e753637a 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Grants/PersistedGrantConsts.cs
@@ -6,30 +6,40 @@
/// Default value: 200
///
public static int KeyMaxLength { get; set; } = 200;
-
+
///
/// Default value: 50
///
public static int TypeMaxLength { get; set; } = 50;
-
+
///
/// Default value: 200
///
public static int SubjectIdMaxLength { get; set; } = 200;
-
+
+ ///
+ /// Default value: 100
+ ///
+ public static int SessionIdMaxLength { get; set; } = 100;
+
///
/// Default value: 200
///
public static int ClientIdMaxLength { get; set; } = 200;
-
+
+ ///
+ /// Default value: 200
+ ///
+ public static int DescriptionMaxLength { get; set; } = 200;
+
///
/// Default value: 50000
///
public static int DataMaxLength { get; set; } = 50000;
-
+
///
/// Default value: 50000
///
public static int DataMaxLengthValue { get; set; } = 50000;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs
index a7c713e161..66f8120b6a 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceConsts.cs
@@ -6,15 +6,15 @@
/// Default value: 200
///
public static int NameMaxLength { get; set; } = 200;
-
+
///
/// Default value: 200
///
public static int DisplayNameMaxLength { get; set; } = 200;
-
+
///
- /// Default value: 200
+ /// Default value: 1000
///
public static int DescriptionMaxLength { get; set; } = 1000;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourcePropertyConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourcePropertyConsts.cs
index 2c9ccbb0c4..98a5a93941 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourcePropertyConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourcePropertyConsts.cs
@@ -2,8 +2,8 @@
{
public class IdentityResourcePropertyConsts
{
- public const int KeyMaxLength = 250;
- public const int ValueMaxLength = 2000;
- public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
+ public static int KeyMaxLength { get; set; } = 250;
+
+ public static int ValueMaxLength { get; set; } = 2000;
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConfiguration.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConfiguration.cs
index 78a26900c9..fe89b7400a 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConfiguration.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConfiguration.cs
@@ -23,6 +23,15 @@ namespace Volo.Abp.ObjectExtending
);
}
+ public IdentityServerModuleExtensionConfiguration ConfigureApiScope(
+ Action configureAction)
+ {
+ return this.ConfigureEntity(
+ IdentityServerModuleExtensionConsts.EntityNames.ApiScope,
+ configureAction
+ );
+ }
+
public IdentityServerModuleExtensionConfiguration ConfigureIdentityResource(
Action configureAction)
{
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConsts.cs
index 8623b8830a..a9396ff95a 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/ObjectExtending/IdentityServerModuleExtensionConsts.cs
@@ -11,6 +11,8 @@
public const string IdentityResource = "IdentityResource";
public const string ApiResource = "ApiResource";
+
+ public const string ApiScope = "ApiScope";
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs
index bd03a3f34e..d07132e094 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/AbpIdentityServerDomainModule.cs
@@ -8,6 +8,7 @@ using Volo.Abp.BackgroundWorkers;
using Volo.Abp.Caching;
using Volo.Abp.Domain.Entities.Events.Distributed;
using Volo.Abp.Identity;
+using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResource.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResource.cs
index 9d81b95def..e6fe3b9318 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResource.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResource.cs
@@ -4,6 +4,7 @@ using System.Linq;
using IdentityServer4;
using JetBrains.Annotations;
using Volo.Abp.Domain.Entities.Auditing;
+using Volo.Abp.IdentityServer.ApiResources;
namespace Volo.Abp.IdentityServer.ApiScopes
{
@@ -28,7 +29,7 @@ namespace Volo.Abp.IdentityServer.ApiScopes
public virtual List UserClaims { get; protected set; }
- public virtual Dictionary Properties { get; protected set; }
+ public virtual List Properties { get; protected set; }
protected ApiResource()
{
@@ -51,7 +52,7 @@ namespace Volo.Abp.IdentityServer.ApiScopes
Secrets = new List();
Scopes = new List();
UserClaims = new List();
- Properties = new Dictionary();
+ Properties = new List();
Scopes.Add(new ApiResourceScope(id, name));
}
@@ -121,5 +122,25 @@ namespace Volo.Abp.IdentityServer.ApiScopes
{
return Scopes.FirstOrDefault(r => r.Scope == scope);
}
+
+ public virtual void AddProperty([NotNull] string key, string value)
+ {
+ Properties.Add(new ApiResourceProperty(Id, key, value));
+ }
+
+ public virtual void RemoveAllProperties()
+ {
+ Properties.Clear();
+ }
+
+ public virtual void RemoveProperty(string key)
+ {
+ Properties.RemoveAll(r => r.Key == key);
+ }
+
+ public virtual ApiResourceProperty FindProperty(string key)
+ {
+ return Properties.FirstOrDefault(r => r.Key == key);
+ }
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResourceProperty.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResourceProperty.cs
new file mode 100644
index 0000000000..7b6257c771
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiResourceProperty.cs
@@ -0,0 +1,39 @@
+using System;
+using JetBrains.Annotations;
+using Volo.Abp.Domain.Entities;
+
+namespace Volo.Abp.IdentityServer.ApiResources
+{
+ public class ApiResourceProperty : Entity
+ {
+ public virtual Guid ApiResourceId { get; protected set; }
+
+ public virtual string Key { get; set; }
+
+ public virtual string Value { get; set; }
+
+ protected ApiResourceProperty()
+ {
+
+ }
+
+ public virtual bool Equals(Guid aiResourceId, [NotNull] string key, string value)
+ {
+ return ApiResourceId == aiResourceId && Key == key && Value == value;
+ }
+
+ protected internal ApiResourceProperty(Guid aiResourceId, [NotNull] string key, [NotNull] string value)
+ {
+ Check.NotNull(key, nameof(key));
+
+ ApiResourceId = aiResourceId;
+ Key = key;
+ Value = value;
+ }
+
+ public override object[] GetKeys()
+ {
+ return new object[] { ApiResourceId, Key };
+ }
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs
index 4f2abd3aed..f2feff8917 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiResourceRepository.cs
@@ -35,11 +35,6 @@ namespace Volo.Abp.IdentityServer.ApiScopes
CancellationToken cancellationToken = default
);
- Task> GetListAsync(
- bool includeDetails = false,
- CancellationToken cancellationToken = default
- );
-
Task CheckNameExistAsync(
string name,
Guid? expectedId = null,
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
index 2f183b8b7e..27f8ad1d58 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
@@ -59,7 +59,7 @@ namespace Volo.Abp.IdentityServer.ApiScopes
public virtual void AddUserClaim([NotNull] string type)
{
- UserClaims.Add(new ApiScopeClaim(Id, Name, type));
+ UserClaims.Add(new ApiScopeClaim(Id, type));
}
public virtual void RemoveAllUserClaims()
@@ -74,7 +74,7 @@ namespace Volo.Abp.IdentityServer.ApiScopes
public virtual ApiScopeClaim FindClaim(string type)
{
- return UserClaims.FirstOrDefault(r => r.Name == Name && r.Type == type);
+ return UserClaims.FirstOrDefault(r => r.Type == type);
}
public virtual void AddProperty([NotNull] string key, string value)
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
index 0bb6704a22..95519195e7 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
@@ -7,31 +7,25 @@ namespace Volo.Abp.IdentityServer.ApiScopes
{
public Guid ApiScopeId { get; protected set; }
- [NotNull]
- public string Name { get; protected set; }
-
protected ApiScopeClaim()
{
}
- public virtual bool Equals(Guid apiScopeId, [NotNull] string name, [NotNull] string type)
+ public virtual bool Equals(Guid apiScopeId, [NotNull] string type)
{
- return ApiScopeId == apiScopeId && Name == name && Type == type;
+ return ApiScopeId == apiScopeId && Type == type;
}
- protected internal ApiScopeClaim(Guid apiScopeId, [NotNull] string name, [NotNull] string type)
+ protected internal ApiScopeClaim(Guid apiScopeId, [NotNull] string type)
: base(type)
{
- Check.NotNull(name, nameof(name));
-
ApiScopeId = apiScopeId;
- Name = name;
}
public override object[] GetKeys()
{
- return new object[] { ApiScopeId, Name, Type };
+ return new object[] { ApiScopeId, Type };
}
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceProperty.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceProperty.cs
index d351addfc2..4480fdab5a 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceProperty.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityResources/IdentityResourceProperty.cs
@@ -17,9 +17,9 @@ namespace Volo.Abp.IdentityServer.IdentityResources
}
- public virtual bool Equals(Guid identityResourceId, [NotNull] string key)
+ public virtual bool Equals(Guid identityResourceId, [NotNull] string key, string value)
{
- return IdentityResourceId == identityResourceId && Key == key;
+ return IdentityResourceId == identityResourceId && Key == key && Value == value;
}
protected internal IdentityResourceProperty(Guid identityResourceId, [NotNull] string key, [NotNull] string value)
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityServerAutoMapperProfile.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityServerAutoMapperProfile.cs
index 34a831ca38..af155190f3 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityServerAutoMapperProfile.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/IdentityServerAutoMapperProfile.cs
@@ -1,6 +1,7 @@
using System.Collections.Generic;
using System.Security.Claims;
using AutoMapper;
+using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
@@ -11,58 +12,32 @@ namespace Volo.Abp.IdentityServer
{
public class IdentityServerAutoMapperProfile : Profile
{
+ ///
+ /// TODO: Reverse maps will not used probably. Remove those will not used
+ ///
public IdentityServerAutoMapperProfile()
{
- //TODO: Reverse maps will not used probably. Remove those will not used
-
- CreateMap()
- .ConstructUsing(src => src.Origin)
- .ReverseMap()
- .ForMember(dest => dest.Origin, opt => opt.MapFrom(src => src));
-
- CreateMap()
- .ForMember(dest => dest.ApiSecrets, opt => opt.MapFrom(src => src.Secrets));
-
- CreateMap();
-
-
- //TODO: Why PersistedGrant mapping is in this profile?
- CreateMap().ReverseMap();
-
- CreateMap()
- .ConstructUsing(src => new IdentityServer4.Models.IdentityResource());
-
- CreateMap()
- .ConstructUsing(x => x.Type)
- .ReverseMap()
- .ForMember(dest => dest.Type, opt => opt.MapFrom(src => src));
-
- CreateMap>()
- .ReverseMap();
-
CreateMap()
.ConstructUsing(src => src.Type)
.ReverseMap()
.ForMember(dest => dest.Type, opt => opt.MapFrom(src => src));
- CreateMap()
- .ConstructUsing(x => x.Scope)
- .ReverseMap()
- .ForMember(dest => dest.Scope, opt => opt.MapFrom(src => src));
-
- CreateMap>()
- .ReverseMap();
+ CreateClientMap();
+ CreateApiResourceMap();
+ CreateApiScopeMap();
+ CreateIdentityResourceMap();
+ CreatePersistedGrantMap();
+ CreateDeviceFlowCodesMap();
+ }
- CreateMap()
- .ConstructUsing(x => x.Type)
+ private void CreateClientMap()
+ {
+ CreateMap()
+ .ConstructUsing(src => src.Origin)
.ReverseMap()
- .ForMember(dest => dest.Type, opt => opt.MapFrom(src => src));
-
- CreateMap(MemberList.Destination)
- .ConstructUsing(src => new IdentityServer4.Models.ApiScope())
- .ReverseMap();
+ .ForMember(dest => dest.Origin, opt => opt.MapFrom(src => src));
- CreateMap>()
+ CreateMap>()
.ReverseMap();
CreateMap()
@@ -115,10 +90,64 @@ namespace Volo.Abp.IdentityServer
CreateMap();
CreateMap();
- CreateMap();
- CreateMap();
+ }
+
+ private void CreateApiResourceMap()
+ {
+ CreateMap()
+ .ForMember(dest => dest.ApiSecrets, opt => opt.MapFrom(src => src.Secrets));
+
+ CreateMap();
+
+ CreateMap()
+ .ConstructUsing(x => x.Scope)
+ .ReverseMap()
+ .ForMember(dest => dest.Scope, opt => opt.MapFrom(src => src));
+
+ CreateMap();
+ }
+
+ private void CreateApiScopeMap()
+ {
+ CreateMap>()
+ .ReverseMap();
+
+ CreateMap()
+ .ConstructUsing(x => x.Type)
+ .ReverseMap()
+ .ForMember(dest => dest.Type, opt => opt.MapFrom(src => src));
+
+ CreateMap(MemberList.Destination)
+ .ConstructUsing(src => new IdentityServer4.Models.ApiScope())
+ .ReverseMap();
+ }
+
+ private void CreateIdentityResourceMap()
+ {
+ CreateMap()
+ .ConstructUsing(src => new IdentityServer4.Models.IdentityResource());
+
+ CreateMap()
+ .ConstructUsing(x => x.Type)
+ .ReverseMap()
+ .ForMember(dest => dest.Type, opt => opt.MapFrom(src => src));
+
+ CreateMap>()
+ .ReverseMap();
+
CreateMap();
+ }
+
+ private void CreatePersistedGrantMap()
+ {
+ //TODO: Why PersistedGrant mapping is in this profile?
+ CreateMap().ReverseMap();
+ CreateMap();
+ }
+ private void CreateDeviceFlowCodesMap()
+ {
+ CreateMap();
}
}
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/AbpIdentityServerEfCoreQueryableExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/AbpIdentityServerEfCoreQueryableExtensions.cs
index 347b3c4d22..d830da07e0 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/AbpIdentityServerEfCoreQueryableExtensions.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/AbpIdentityServerEfCoreQueryableExtensions.cs
@@ -18,7 +18,8 @@ namespace Volo.Abp.IdentityServer
return queryable
.Include(x => x.Secrets)
.Include(x => x.UserClaims)
- .Include(x => x.Scopes);
+ .Include(x => x.Scopes)
+ .Include(x => x.Properties);
}
public static IQueryable IncludeDetails(this IQueryable queryable, bool include = true)
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiResourceRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiResourceRepository.cs
index bf8a8c2df2..53644a1e1c 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiResourceRepository.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiResourceRepository.cs
@@ -67,15 +67,6 @@ namespace Volo.Abp.IdentityServer.ApiScopes
.ToListAsync(GetCancellationToken(cancellationToken));
}
- public virtual async Task> GetListAsync(
- bool includeDetails = false,
- CancellationToken cancellationToken = default)
- {
- return await DbSet
- .IncludeDetails(includeDetails)
- .ToListAsync(GetCancellationToken(cancellationToken));
- }
-
public virtual async Task CheckNameExistAsync(string name, Guid? expectedId = null, CancellationToken cancellationToken = default)
{
return await DbSet.AnyAsync(ar => ar.Id != expectedId && ar.Name == name, cancellationToken: cancellationToken);
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/AbpIdentityServerEntityFrameworkCoreModule.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/AbpIdentityServerEntityFrameworkCoreModule.cs
index 4d89745874..fd22e97fe4 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/AbpIdentityServerEntityFrameworkCoreModule.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/AbpIdentityServerEntityFrameworkCoreModule.cs
@@ -33,6 +33,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
options.AddRepository();
options.AddRepository();
+ options.AddRepository();
options.AddRepository();
options.AddRepository();
options.AddRepository();
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IIdentityServerDbContext.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IIdentityServerDbContext.cs
index db1017b9ab..3178fa02f2 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IIdentityServerDbContext.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IIdentityServerDbContext.cs
@@ -34,7 +34,6 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
#endregion
-
#region IdentityResource
DbSet IdentityResources { get; set; }
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs
index f7ccb1d309..c8dc32b183 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContext.cs
@@ -34,7 +34,6 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
#endregion
-
#region IdentityResource
public DbSet IdentityResources { get; set; }
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs
index 8d96f2c442..b2dba48e15 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/EntityFrameworkCore/IdentityServerDbContextModelCreatingExtensions.cs
@@ -1,10 +1,8 @@
using System;
-using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore.Modeling;
-using Volo.Abp.EntityFrameworkCore.ValueComparers;
-using Volo.Abp.EntityFrameworkCore.ValueConverters;
+using Volo.Abp.IdentityServer.ApiResources;
using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
@@ -188,31 +186,6 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.Value).HasMaxLength(ClientPropertyConsts.ValueMaxLength).IsRequired();
});
- builder.Entity(b =>
- {
- b.ToTable(options.TablePrefix + "PersistedGrants", options.Schema);
-
- b.ConfigureByConvention();
-
- b.Property(x => x.Key).HasMaxLength(PersistedGrantConsts.KeyMaxLength).ValueGeneratedNever();
- b.Property(x => x.Type).HasMaxLength(PersistedGrantConsts.TypeMaxLength).IsRequired();
- b.Property(x => x.SubjectId).HasMaxLength(PersistedGrantConsts.SubjectIdMaxLength);
- b.Property(x => x.ClientId).HasMaxLength(PersistedGrantConsts.ClientIdMaxLength).IsRequired();
- b.Property(x => x.CreationTime).IsRequired();
-
- if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql))
- {
- PersistedGrantConsts.DataMaxLengthValue = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0.
- }
-
- b.Property(x => x.Data).HasMaxLength(PersistedGrantConsts.DataMaxLengthValue).IsRequired();
-
- b.HasKey(x => x.Key); //TODO: What about Id!!!
-
- b.HasIndex(x => new {x.SubjectId, x.ClientId, x.Type});
- b.HasIndex(x => x.Expiration);
- });
-
#endregion
#region IdentityResource
@@ -255,9 +228,9 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.Key).HasMaxLength(IdentityResourcePropertyConsts.KeyMaxLength).IsRequired();
if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
{
- IdentityResourcePropertyConsts.ValueMaxLengthValue = 300;
+ IdentityResourcePropertyConsts.ValueMaxLength = 300;
}
- b.Property(x => x.Value).HasMaxLength(IdentityResourcePropertyConsts.ValueMaxLengthValue).IsRequired();
+ b.Property(x => x.Value).HasMaxLength(IdentityResourcePropertyConsts.ValueMaxLength).IsRequired();
});
#endregion
@@ -270,16 +243,16 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.ConfigureByConvention();
+ b.HasIndex(x => x.Name).IsUnique();
+
b.Property(x => x.Name).HasMaxLength(ApiResourceConsts.NameMaxLength).IsRequired();
b.Property(x => x.DisplayName).HasMaxLength(ApiResourceConsts.DisplayNameMaxLength);
b.Property(x => x.Description).HasMaxLength(ApiResourceConsts.DescriptionMaxLength);
- b.Property(x => x.Properties)
- .HasConversion(new AbpJsonValueConverter>())
- .Metadata.SetValueComparer(new AbpDictionaryValueComparer());
b.HasMany(x => x.Secrets).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();
b.HasMany(x => x.Scopes).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();
b.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();
+ b.HasMany(x => x.Properties).WithOne().HasForeignKey(x => x.ApiResourceId).IsRequired();
});
builder.Entity(b =>
@@ -291,14 +264,14 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ApiResourceId, x.Type, x.Value});
b.Property(x => x.Type).HasMaxLength(ApiResourceSecretConsts.TypeMaxLength).IsRequired();
- b.Property(x => x.Description).HasMaxLength(ApiResourceSecretConsts.DescriptionMaxLength);
if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
{
ApiResourceSecretConsts.ValueMaxLengthValue = 300;
}
-
b.Property(x => x.Value).HasMaxLength(ApiResourceSecretConsts.ValueMaxLengthValue).IsRequired();
+
+ b.Property(x => x.Description).HasMaxLength(ApiResourceSecretConsts.DescriptionMaxLength);
});
builder.Entity(b =>
@@ -323,6 +296,22 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.Scope).HasMaxLength(ApiResourceScopeConsts.ScopeMaxLength).IsRequired();
});
+ builder.Entity(b =>
+ {
+ b.ToTable(options.TablePrefix + "ApiResourceProperties", options.Schema);
+
+ b.ConfigureByConvention();
+
+ b.HasKey(x => new {x.ApiResourceId, x.Key});
+
+ b.Property(x => x.Key).HasMaxLength(ApiResourcePropertyConsts.KeyMaxLength).IsRequired();
+ if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
+ {
+ ApiResourcePropertyConsts.ValueMaxLength = 300;
+ }
+ b.Property(x => x.Value).HasMaxLength(ApiResourcePropertyConsts.ValueMaxLength).IsRequired();
+ });
+
#endregion
#region ApiScope
@@ -340,9 +329,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasIndex(x => x.Name).IsUnique();
b.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired();
-
- //TODO: Identity Server does not configure the relationship of Properties
- //b.HasMany(x => x.Properties).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired();
+ b.HasMany(x => x.Properties).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired();
});
builder.Entity(b =>
@@ -351,10 +338,9 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.ConfigureByConvention();
- b.HasKey(x => new {x.ApiScopeId, x.Name, x.Type});
+ b.HasKey(x => new {x.ApiScopeId, x.Type});
b.Property(x => x.Type).HasMaxLength(UserClaimConsts.TypeMaxLength).IsRequired();
- b.Property(x => x.Name).HasMaxLength(ApiScopeClaimConsts.NameMaxLength).IsRequired();
});
builder.Entity(b =>
@@ -368,9 +354,41 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.Key).HasMaxLength(ApiScopePropertyConsts.KeyMaxLength).IsRequired();
if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
{
- ApiScopePropertyConsts.ValueMaxLengthValue = 300;
+ ApiScopePropertyConsts.ValueMaxLength = 300;
}
- b.Property(x => x.Value).HasMaxLength(ApiScopePropertyConsts.ValueMaxLengthValue).IsRequired();
+ b.Property(x => x.Value).HasMaxLength(ApiScopePropertyConsts.ValueMaxLength).IsRequired();
+ });
+
+ #endregion
+
+ #region PersistedGrant
+
+ builder.Entity(b =>
+ {
+ b.ToTable(options.TablePrefix + "PersistedGrants", options.Schema);
+
+ b.ConfigureByConvention();
+
+ b.Property(x => x.Key).HasMaxLength(PersistedGrantConsts.KeyMaxLength).ValueGeneratedNever();
+ b.Property(x => x.Type).HasMaxLength(PersistedGrantConsts.TypeMaxLength).IsRequired();
+ b.Property(x => x.SubjectId).HasMaxLength(PersistedGrantConsts.SubjectIdMaxLength);
+ b.Property(x => x.SessionId).HasMaxLength(PersistedGrantConsts.SessionIdMaxLength);
+ b.Property(x => x.ClientId).HasMaxLength(PersistedGrantConsts.ClientIdMaxLength).IsRequired();
+ b.Property(x => x.Description).HasMaxLength(PersistedGrantConsts.DescriptionMaxLength);
+ b.Property(x => x.CreationTime).IsRequired();
+
+ if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql))
+ {
+ PersistedGrantConsts.DataMaxLengthValue = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0.
+ }
+
+ b.Property(x => x.Data).HasMaxLength(PersistedGrantConsts.DataMaxLengthValue).IsRequired();
+
+ b.HasKey(x => x.Key); //TODO: What about Id!!!
+
+ b.HasIndex(x => new {x.SubjectId, x.ClientId, x.Type});
+ b.HasIndex(x => new {x.SubjectId, x.SessionId, x.Type});
+ b.HasIndex(x => x.Expiration);
});
#endregion
@@ -386,16 +404,19 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.DeviceCode).HasMaxLength(DeviceFlowCodesConsts.DeviceCodeMaxLength).IsRequired();
b.Property(x => x.UserCode).HasMaxLength(DeviceFlowCodesConsts.UserCodeMaxLength).IsRequired();
b.Property(x => x.SubjectId).HasMaxLength(DeviceFlowCodesConsts.SubjectIdMaxLength);
+ b.Property(x => x.SessionId).HasMaxLength(DeviceFlowCodesConsts.SessionIdMaxLength);
b.Property(x => x.ClientId).HasMaxLength(DeviceFlowCodesConsts.ClientIdMaxLength).IsRequired();
+ b.Property(x => x.Description).HasMaxLength(DeviceFlowCodesConsts.DescriptionMaxLength);
+ b.Property(x => x.CreationTime).IsRequired();
b.Property(x => x.Expiration).IsRequired();
if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql))
{
- DeviceFlowCodesConsts.DataMaxLengthValue = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0.
+ DeviceFlowCodesConsts.DataMaxLength = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0.
}
- b.Property(x => x.Data).HasMaxLength(DeviceFlowCodesConsts.DataMaxLengthValue).IsRequired();
+ b.Property(x => x.Data).HasMaxLength(DeviceFlowCodesConsts.DataMaxLength).IsRequired();
- b.HasIndex(x => new {x.UserCode}).IsUnique();
+ b.HasIndex(x => new {x.UserCode});
b.HasIndex(x => x.DeviceCode).IsUnique();
b.HasIndex(x => x.Expiration);
});
diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs
index 0662482b65..5190687342 100644
--- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs
+++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/IdentityServer/IdentityServerDataSeedContributor.cs
@@ -182,7 +182,7 @@ namespace MyCompanyName.MyProjectName.IdentityServer
AccessTokenLifetime = 31536000, //365 days
AuthorizationCodeLifetime = 300,
IdentityTokenLifetime = 300,
- RequireConsent = false,
+ RequireConsent = true,
RequirePkce = false,
FrontChannelLogoutUri = frontChannelLogoutUri
},