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
new file mode 100644
index 0000000000..8b0d8f4769
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceScopeConsts.cs
@@ -0,0 +1,7 @@
+namespace Volo.Abp.IdentityServer.ApiResources
+{
+ public class ApiResourceScopeConsts
+ {
+ public const int ScopeMaxLength = 200;
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
similarity index 84%
rename from modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs
rename to modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
index 156088a97b..261f48ac2e 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/SecretConsts.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiResourceSecretConsts.cs
@@ -1,22 +1,22 @@
-namespace Volo.Abp.IdentityServer
+namespace Volo.Abp.IdentityServer.ApiResources
{
- public class SecretConsts
+ public class ApiResourceSecretConsts
{
///
/// Default value: 250
///
public static int TypeMaxLength { get; set; } = 250;
-
+
///
/// Default value: 4000
///
public static int ValueMaxLength { get; set; } = 4000;
-
+
public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
-
+
///
/// Default value: 2000
///
public static int DescriptionMaxLength { get; set; } = 2000;
}
-}
\ No newline at end of file
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiScopeConsts.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiScopeConsts.cs
deleted file mode 100644
index b61aa097f4..0000000000
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiResources/ApiScopeConsts.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace Volo.Abp.IdentityServer.ApiResources
-{
- public class ApiScopeConsts
- {
- public const int NameMaxLength = 200;
- }
-}
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
new file mode 100644
index 0000000000..ab268690be
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiResourceConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.IdentityServer.ApiScopes
+{
+ public class ApiScopeConsts
+ {
+ public const int NameMaxLength = 200;
+ public const int DisplayNameMaxLength = 200;
+ public const int DescriptionMaxLength = 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
new file mode 100644
index 0000000000..f3175e8774
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaimConsts.cs
@@ -0,0 +1,7 @@
+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
new file mode 100644
index 0000000000..5450e67030
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/ApiScopes/ApiScopePropertyConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.IdentityServer.ApiScopes
+{
+ public class ApiScopePropertyConsts
+ {
+ public const int KeyMaxLength = 250;
+ public const int ValueMaxLength = 2000;
+ public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
+ }
+}
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
new file mode 100644
index 0000000000..b0c87fe89d
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/Devices/DeviceFlowCodesConsts.cs
@@ -0,0 +1,12 @@
+namespace Volo.Abp.IdentityServer.Devices
+{
+ 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;
+ }
+}
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
new file mode 100644
index 0000000000..2c9ccbb0c4
--- /dev/null
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain.Shared/Volo/Abp/IdentityServer/IdentityResources/IdentityResourcePropertyConsts.cs
@@ -0,0 +1,9 @@
+namespace Volo.Abp.IdentityServer.IdentityResources
+{
+ public class IdentityResourcePropertyConsts
+ {
+ public const int KeyMaxLength = 250;
+ public const int ValueMaxLength = 2000;
+ public static int ValueMaxLengthValue { get; set; } = ValueMaxLength;
+ }
+}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScope.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
similarity index 97%
rename from modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScope.cs
rename to modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
index 8e8605afa1..d35294c27f 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScope.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScope.cs
@@ -4,7 +4,7 @@ using System.Linq;
using JetBrains.Annotations;
using Volo.Abp.Domain.Entities.Auditing;
-namespace Volo.Abp.IdentityServer.ApiResources
+namespace Volo.Abp.IdentityServer.ApiScopes
{
public class ApiScope : FullAuditedAggregateRoot
{
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeClaim.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
similarity index 94%
rename from modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeClaim.cs
rename to modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
index e4444cbc8c..0bb6704a22 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeClaim.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeClaim.cs
@@ -1,7 +1,7 @@
using System;
using JetBrains.Annotations;
-namespace Volo.Abp.IdentityServer.ApiResources
+namespace Volo.Abp.IdentityServer.ApiScopes
{
public class ApiScopeClaim : UserClaim
{
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeProperty.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeProperty.cs
similarity index 95%
rename from modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeProperty.cs
rename to modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeProperty.cs
index 38f34567a8..b6e5d7fbe8 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/ApiScopeProperty.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/ApiScopeProperty.cs
@@ -2,7 +2,7 @@
using JetBrains.Annotations;
using Volo.Abp.Domain.Entities;
-namespace Volo.Abp.IdentityServer.ApiResources
+namespace Volo.Abp.IdentityServer.ApiScopes
{
public class ApiScopeProperty : Entity
{
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiScopeeRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/IApiScopeeRepository.cs
similarity index 89%
rename from modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiScopeeRepository.cs
rename to modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/IApiScopeeRepository.cs
index 184b8d1b67..1cbc48499e 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiResources/IApiScopeeRepository.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ApiScopes/IApiScopeeRepository.cs
@@ -3,7 +3,7 @@ using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
-namespace Volo.Abp.IdentityServer.ApiResources
+namespace Volo.Abp.IdentityServer.ApiScopes
{
public interface IApiScopeRepository : IBasicRepository
{
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 17aae1b084..99d24e617d 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
@@ -2,6 +2,7 @@
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;
using Volo.Abp.IdentityServer.Grants;
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ResourceStore.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ResourceStore.cs
index 975fc7f801..5afaaf4400 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ResourceStore.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.Domain/Volo/Abp/IdentityServer/ResourceStore.cs
@@ -4,6 +4,7 @@ using System.Threading.Tasks;
using IdentityServer4.Models;
using IdentityServer4.Stores;
using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.IdentityResources;
using Volo.Abp.ObjectMapping;
@@ -43,7 +44,7 @@ namespace Volo.Abp.IdentityServer
public virtual async Task> FindApiScopesByNameAsync(IEnumerable scopeNames)
{
var scopes = await ApiScopeRepository.GetListByNameAsync(scopeNames.ToArray(), includeDetails: true);
- return ObjectMapper.Map, List>(scopes);
+ return ObjectMapper.Map, List>(scopes);
}
///
@@ -76,7 +77,7 @@ namespace Volo.Abp.IdentityServer
return new Resources(
ObjectMapper.Map, List>(identityResources),
ObjectMapper.Map, List>(apiResources),
- ObjectMapper.Map, List>(apiScopes));
+ ObjectMapper.Map, List>(apiScopes));
}
}
}
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 1949238a3b..74ea53d9e0 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
@@ -83,16 +83,14 @@ namespace Volo.Abp.IdentityServer.ApiResources
public override async Task DeleteAsync(Guid id, bool autoSave = false, CancellationToken cancellationToken = default)
{
- var scopeClaims = DbContext.Set().Where(sc => sc.ApiScopeId == id);
-
- foreach (var scopeClaim in scopeClaims)
+ var resourceClaims = DbContext.Set().Where(sc => sc.ApiResourceId == id);
+ foreach (var scopeClaim in resourceClaims)
{
- DbContext.Set().Remove(scopeClaim);
+ DbContext.Set().Remove(scopeClaim);
}
- var scopes = DbContext.Set().Where(s => s.ApiResourceId == id);
-
- foreach (var scope in scopes)
+ var resourceScopes = DbContext.Set().Where(s => s.ApiResourceId == id);
+ foreach (var scope in resourceScopes)
{
DbContext.Set().Remove(scope);
}
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiScopeRepository.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiScopeRepository.cs
index 6df9f5b90a..87f67ec330 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiScopeRepository.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.EntityFrameworkCore/Volo/Abp/IdentityServer/ApiResources/ApiScopeRepository.cs
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using Volo.Abp.Domain.Repositories.EntityFrameworkCore;
using Volo.Abp.EntityFrameworkCore;
+using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.EntityFrameworkCore;
namespace Volo.Abp.IdentityServer.ApiResources
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 93624174f9..7834db31fb 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
@@ -2,6 +2,7 @@
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
using Volo.Abp.IdentityServer.Grants;
@@ -12,20 +13,41 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
[ConnectionStringName(AbpIdentityServerDbProperties.ConnectionStringName)]
public interface IIdentityServerDbContext : IEfCoreDbContext
{
+ #region ApiResource
+
DbSet ApiResources { get; set; }
- DbSet ApiSecrets { get; set; }
+ DbSet ApiResourceSecrets { get; set; }
DbSet ApiResourceClaims { get; set; }
- DbSet ApiScopes { get; set; }
+ DbSet ApiResourceScopes { get; set; }
+
+ #endregion
+
+ #region ApiScope
+
+ DbSet ApiScopes { get; set; }
DbSet ApiScopeClaims { get; set; }
+ DbSet ApiScopeProperties { get; set; }
+
+ #endregion
+
+
+ #region IdentityResource
+
DbSet IdentityResources { get; set; }
DbSet IdentityClaims { get; set; }
+ DbSet IdentityResourceProperties { get; set; }
+
+ #endregion
+
+ #region Client
+
DbSet Clients { get; set; }
DbSet ClientGrantTypes { get; set; }
@@ -46,6 +68,8 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
DbSet ClientProperties { get; set; }
+ #endregion
+
DbSet PersistedGrants { get; set; }
DbSet DeviceFlowCodes { 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 84ec1f802a..686d2e0ac1 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
@@ -2,6 +2,7 @@
using Volo.Abp.Data;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
using Volo.Abp.IdentityServer.Grants;
@@ -12,20 +13,41 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
[ConnectionStringName(AbpIdentityServerDbProperties.ConnectionStringName)]
public class IdentityServerDbContext : AbpDbContext, IIdentityServerDbContext
{
+ #region ApiResource
+
public DbSet ApiResources { get; set; }
- public DbSet ApiSecrets { get; set; }
+ public DbSet ApiResourceSecrets { get; set; }
public DbSet ApiResourceClaims { get; set; }
- public DbSet ApiScopes { get; set; }
+ public DbSet ApiResourceScopes { get; set; }
+
+ #endregion
+
+ #region ApiScope
+
+ public DbSet ApiScopes { get; set; }
public DbSet ApiScopeClaims { get; set; }
+ public DbSet ApiScopeProperties { get; set; }
+
+ #endregion
+
+
+ #region IdentityResource
+
public DbSet IdentityResources { get; set; }
public DbSet IdentityClaims { get; set; }
+ public DbSet IdentityResourceProperties { get; set; }
+
+ #endregion
+
+ #region Client
+
public DbSet Clients { get; set; }
public DbSet ClientGrantTypes { get; set; }
@@ -46,6 +68,8 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
public DbSet ClientProperties { get; set; }
+ #endregion
+
public DbSet PersistedGrants { get; set; }
public DbSet DeviceFlowCodes { 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 54b91e9dcc..26b8036aba 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
@@ -6,10 +6,16 @@ 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;
using Volo.Abp.IdentityServer.Grants;
using Volo.Abp.IdentityServer.IdentityResources;
+using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource;
+using Client = Volo.Abp.IdentityServer.Clients.Client;
+using ClientClaim = Volo.Abp.IdentityServer.Clients.ClientClaim;
+using IdentityResource = Volo.Abp.IdentityServer.IdentityResources.IdentityResource;
+using PersistedGrant = Volo.Abp.IdentityServer.Grants.PersistedGrant;
namespace Volo.Abp.IdentityServer.EntityFrameworkCore
{
@@ -28,6 +34,8 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
optionsAction?.Invoke(options);
+ #region Client
+
builder.Entity(b =>
{
b.ToTable(options.TablePrefix + "Clients", options.Schema);
@@ -123,16 +131,16 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ClientId, x.Type, x.Value});
- b.Property(x => x.Type).HasMaxLength(SecretConsts.TypeMaxLength).IsRequired();
+ b.Property(x => x.Type).HasMaxLength(ApiResourceSecretConsts.TypeMaxLength).IsRequired();
if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
{
- SecretConsts.ValueMaxLengthValue = 300;
+ ApiResourceSecretConsts.ValueMaxLengthValue = 300;
}
- b.Property(x => x.Value).HasMaxLength(SecretConsts.ValueMaxLengthValue).IsRequired();
+ b.Property(x => x.Value).HasMaxLength(ApiResourceSecretConsts.ValueMaxLengthValue).IsRequired();
- b.Property(x => x.Description).HasMaxLength(SecretConsts.DescriptionMaxLength);
+ b.Property(x => x.Description).HasMaxLength(ApiResourceSecretConsts.DescriptionMaxLength);
});
builder.Entity(b =>
@@ -206,6 +214,10 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasIndex(x => x.Expiration);
});
+ #endregion
+
+ #region IdentityResource
+
builder.Entity(b =>
{
b.ToTable(options.TablePrefix + "IdentityResources", options.Schema);
@@ -216,6 +228,8 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.Property(x => x.DisplayName).HasMaxLength(IdentityResourceConsts.DisplayNameMaxLength);
b.Property(x => x.Description).HasMaxLength(IdentityResourceConsts.DescriptionMaxLength);
+ b.HasIndex(x => x.Name).IsUnique();
+
b.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.IdentityResourceId).IsRequired();
b.HasMany(x => x.Properties).WithOne().HasForeignKey(x => x.IdentityResourceId).IsRequired();
});
@@ -239,11 +253,19 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.IdentityResourceId, x.Key});
- b.Property(x => x.Key).HasMaxLength(250).IsRequired();
- b.Property(x => x.Value).HasMaxLength(2000).IsRequired();
+ b.Property(x => x.Key).HasMaxLength(IdentityResourcePropertyConsts.KeyMaxLength).IsRequired();
+ if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
+ {
+ IdentityResourcePropertyConsts.ValueMaxLengthValue = 300;
+ }
+ b.Property(x => x.Value).HasMaxLength(IdentityResourcePropertyConsts.ValueMaxLengthValue).IsRequired();
});
- builder.Entity(b =>
+ #endregion
+
+ #region ApiResource
+
+ builder.Entity(b =>
{
b.ToTable(options.TablePrefix + "ApiResources", options.Schema);
@@ -269,15 +291,15 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ApiResourceId, x.Type, x.Value});
- b.Property(x => x.Type).HasMaxLength(SecretConsts.TypeMaxLength).IsRequired();
- b.Property(x => x.Description).HasMaxLength(SecretConsts.DescriptionMaxLength);
+ 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))
{
- SecretConsts.ValueMaxLengthValue = 300;
+ ApiResourceSecretConsts.ValueMaxLengthValue = 300;
}
- b.Property(x => x.Value).HasMaxLength(SecretConsts.ValueMaxLengthValue).IsRequired();
+ b.Property(x => x.Value).HasMaxLength(ApiResourceSecretConsts.ValueMaxLengthValue).IsRequired();
});
builder.Entity(b =>
@@ -299,24 +321,28 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ApiResourceId, x.Scope});
- b.Property(x => x.Scope).HasMaxLength(ApiScopeConsts.NameMaxLength).IsRequired();
+ b.Property(x => x.Scope).HasMaxLength(ApiResourceScopeConsts.ScopeMaxLength).IsRequired();
});
+ #endregion
+
+ #region ApiScope
+
builder.Entity(b =>
{
b.ToTable(options.TablePrefix + "ApiScopes", options.Schema);
b.ConfigureByConvention();
- b.Property(x => x.Name).HasMaxLength(200).IsRequired();
- b.Property(x => x.DisplayName).HasMaxLength(200);
- b.Property(x => x.Description).HasMaxLength(1000);
+ b.Property(x => x.Name).HasMaxLength(ApiScopeConsts.NameMaxLength).IsRequired();
+ b.Property(x => x.DisplayName).HasMaxLength(ApiScopeConsts.DisplayNameMaxLength);
+ b.Property(x => x.Description).HasMaxLength(ApiScopeConsts.DescriptionMaxLength);
b.HasIndex(x => x.Name).IsUnique();
b.HasMany(x => x.UserClaims).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired();
- //Identity Server does not configure the relationship of Properties
+ //TODO: Identity Server does not configure the relationship of Properties
//b.HasMany(x => x.Properties).WithOne().HasForeignKey(x => x.ApiScopeId).IsRequired();
});
@@ -329,7 +355,7 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ApiScopeId, x.Name, x.Type});
b.Property(x => x.Type).HasMaxLength(UserClaimConsts.TypeMaxLength).IsRequired();
- b.Property(x => x.Name).HasMaxLength(ApiScopeConsts.NameMaxLength).IsRequired();
+ b.Property(x => x.Name).HasMaxLength(ApiScopeClaimConsts.NameMaxLength).IsRequired();
});
builder.Entity(b =>
@@ -340,28 +366,42 @@ namespace Volo.Abp.IdentityServer.EntityFrameworkCore
b.HasKey(x => new {x.ApiScopeId, x.Key});
- b.Property(x => x.Key).HasMaxLength(250).IsRequired();
- //oracle?
- b.Property(x => x.Value).HasMaxLength(2000).IsRequired();
+ b.Property(x => x.Key).HasMaxLength(ApiScopePropertyConsts.KeyMaxLength).IsRequired();
+ if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql, EfCoreDatabaseProvider.Oracle))
+ {
+ ApiScopePropertyConsts.ValueMaxLengthValue = 300;
+ }
+ b.Property(x => x.Value).HasMaxLength(ApiScopePropertyConsts.ValueMaxLengthValue).IsRequired();
});
+ #endregion
+
+ #region DeviceFlowCodes
+
builder.Entity(b =>
{
b.ToTable(options.TablePrefix + "DeviceFlowCodes", options.Schema);
b.ConfigureByConvention();
- b.Property(x => x.DeviceCode).HasMaxLength(200).IsRequired();
- b.Property(x => x.UserCode).HasMaxLength(200).IsRequired();
- b.Property(x => x.SubjectId).HasMaxLength(200);
- b.Property(x => x.ClientId).HasMaxLength(200).IsRequired();
+ 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.ClientId).HasMaxLength(DeviceFlowCodesConsts.ClientIdMaxLength).IsRequired();
b.Property(x => x.Expiration).IsRequired();
- b.Property(x => x.Data).HasMaxLength(50000).IsRequired();
+
+ if (IsDatabaseProvider(builder, options, EfCoreDatabaseProvider.MySql))
+ {
+ DeviceFlowCodesConsts.DataMaxLengthValue = 10000; //TODO: MySQL accepts 20.000. We can consider to change in v3.0.
+ }
+ b.Property(x => x.Data).HasMaxLength(DeviceFlowCodesConsts.DataMaxLengthValue).IsRequired();
b.HasIndex(x => new {x.UserCode}).IsUnique();
b.HasIndex(x => x.DeviceCode).IsUnique();
b.HasIndex(x => x.Expiration);
});
+
+ #endregion
}
private static bool IsDatabaseProvider(
diff --git a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContext.cs b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContext.cs
index b4b5fe9b60..093f7434dc 100644
--- a/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContext.cs
+++ b/modules/identityserver/src/Volo.Abp.IdentityServer.MongoDB/Volo/Abp/IdentityServer/MongoDB/AbpIdentityServerMongoDbContext.cs
@@ -1,6 +1,7 @@
using MongoDB.Driver;
using Volo.Abp.Data;
using Volo.Abp.IdentityServer.ApiResources;
+using Volo.Abp.IdentityServer.ApiScopes;
using Volo.Abp.IdentityServer.Clients;
using Volo.Abp.IdentityServer.Devices;
using Volo.Abp.IdentityServer.Grants;
@@ -14,6 +15,8 @@ namespace Volo.Abp.IdentityServer.MongoDB
{
public IMongoCollection ApiResources => Collection();
+ public IMongoCollection ApiScopes => Collection();
+
public IMongoCollection Clients => Collection();
public IMongoCollection IdentityResources => Collection();