mirror of https://github.com/abpframework/abp.git
19 changed files with 1931 additions and 1421 deletions
@ -1,353 +0,0 @@ |
|||||
using System; |
|
||||
using System.Collections.Generic; |
|
||||
using System.Threading.Tasks; |
|
||||
using IdentityServer4.Models; |
|
||||
using Microsoft.Extensions.Configuration; |
|
||||
using Volo.Abp.Authorization.Permissions; |
|
||||
using Volo.Abp.Data; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.Guids; |
|
||||
using Volo.Abp.IdentityServer.ApiResources; |
|
||||
using Volo.Abp.IdentityServer.ApiScopes; |
|
||||
using Volo.Abp.IdentityServer.Clients; |
|
||||
using Volo.Abp.IdentityServer.IdentityResources; |
|
||||
using Volo.Abp.MultiTenancy; |
|
||||
using Volo.Abp.PermissionManagement; |
|
||||
using Volo.Abp.Uow; |
|
||||
using ApiResource = Volo.Abp.IdentityServer.ApiResources.ApiResource; |
|
||||
using ApiScope = Volo.Abp.IdentityServer.ApiScopes.ApiScope; |
|
||||
using Client = Volo.Abp.IdentityServer.Clients.Client; |
|
||||
|
|
||||
namespace MyCompanyName.MyProjectName.IdentityServer; |
|
||||
|
|
||||
public class IdentityServerDataSeedContributor : IDataSeedContributor, ITransientDependency |
|
||||
{ |
|
||||
private readonly IApiResourceRepository _apiResourceRepository; |
|
||||
private readonly IApiScopeRepository _apiScopeRepository; |
|
||||
private readonly IClientRepository _clientRepository; |
|
||||
private readonly IIdentityResourceDataSeeder _identityResourceDataSeeder; |
|
||||
private readonly IGuidGenerator _guidGenerator; |
|
||||
private readonly IPermissionDataSeeder _permissionDataSeeder; |
|
||||
private readonly IConfiguration _configuration; |
|
||||
private readonly ICurrentTenant _currentTenant; |
|
||||
|
|
||||
public IdentityServerDataSeedContributor( |
|
||||
IClientRepository clientRepository, |
|
||||
IApiResourceRepository apiResourceRepository, |
|
||||
IApiScopeRepository apiScopeRepository, |
|
||||
IIdentityResourceDataSeeder identityResourceDataSeeder, |
|
||||
IGuidGenerator guidGenerator, |
|
||||
IPermissionDataSeeder permissionDataSeeder, |
|
||||
IConfiguration configuration, |
|
||||
ICurrentTenant currentTenant) |
|
||||
{ |
|
||||
_clientRepository = clientRepository; |
|
||||
_apiResourceRepository = apiResourceRepository; |
|
||||
_apiScopeRepository = apiScopeRepository; |
|
||||
_identityResourceDataSeeder = identityResourceDataSeeder; |
|
||||
_guidGenerator = guidGenerator; |
|
||||
_permissionDataSeeder = permissionDataSeeder; |
|
||||
_configuration = configuration; |
|
||||
_currentTenant = currentTenant; |
|
||||
} |
|
||||
|
|
||||
[UnitOfWork] |
|
||||
public virtual async Task SeedAsync(DataSeedContext context) |
|
||||
{ |
|
||||
using (_currentTenant.Change(context?.TenantId)) |
|
||||
{ |
|
||||
await _identityResourceDataSeeder.CreateStandardResourcesAsync(); |
|
||||
await CreateApiResourcesAsync(); |
|
||||
await CreateApiScopesAsync(); |
|
||||
await CreateClientsAsync(); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private async Task CreateApiScopesAsync() |
|
||||
{ |
|
||||
await CreateApiScopeAsync("MyProjectName"); |
|
||||
} |
|
||||
|
|
||||
private async Task CreateApiResourcesAsync() |
|
||||
{ |
|
||||
var commonApiUserClaims = new[] |
|
||||
{ |
|
||||
"email", |
|
||||
"email_verified", |
|
||||
"name", |
|
||||
"phone_number", |
|
||||
"phone_number_verified", |
|
||||
"role" |
|
||||
}; |
|
||||
|
|
||||
await CreateApiResourceAsync("MyProjectName", commonApiUserClaims); |
|
||||
} |
|
||||
|
|
||||
private async Task<ApiResource> CreateApiResourceAsync(string name, IEnumerable<string> claims) |
|
||||
{ |
|
||||
var apiResource = await _apiResourceRepository.FindByNameAsync(name); |
|
||||
if (apiResource == null) |
|
||||
{ |
|
||||
apiResource = await _apiResourceRepository.InsertAsync( |
|
||||
new ApiResource( |
|
||||
_guidGenerator.Create(), |
|
||||
name, |
|
||||
name + " API" |
|
||||
), |
|
||||
autoSave: true |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
foreach (var claim in claims) |
|
||||
{ |
|
||||
if (apiResource.FindClaim(claim) == null) |
|
||||
{ |
|
||||
apiResource.AddUserClaim(claim); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return await _apiResourceRepository.UpdateAsync(apiResource); |
|
||||
} |
|
||||
|
|
||||
private async Task<ApiScope> CreateApiScopeAsync(string name) |
|
||||
{ |
|
||||
var apiScope = await _apiScopeRepository.FindByNameAsync(name); |
|
||||
if (apiScope == null) |
|
||||
{ |
|
||||
apiScope = await _apiScopeRepository.InsertAsync( |
|
||||
new ApiScope( |
|
||||
_guidGenerator.Create(), |
|
||||
name, |
|
||||
name + " API" |
|
||||
), |
|
||||
autoSave: true |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
return apiScope; |
|
||||
} |
|
||||
|
|
||||
private async Task CreateClientsAsync() |
|
||||
{ |
|
||||
var commonScopes = new[] |
|
||||
{ |
|
||||
"email", |
|
||||
"openid", |
|
||||
"profile", |
|
||||
"role", |
|
||||
"phone", |
|
||||
"address", |
|
||||
"MyProjectName" |
|
||||
}; |
|
||||
|
|
||||
var configurationSection = _configuration.GetSection("IdentityServer:Clients"); |
|
||||
|
|
||||
//<TEMPLATE-REMOVE IF-NOT='ui:mvc&&tiered'>
|
|
||||
|
|
||||
//Web Client
|
|
||||
var webClientId = configurationSection["MyProjectName_Web:ClientId"]; |
|
||||
if (!webClientId.IsNullOrWhiteSpace()) |
|
||||
{ |
|
||||
var webClientRootUrl = configurationSection["MyProjectName_Web:RootUrl"].EnsureEndsWith('/'); |
|
||||
|
|
||||
await CreateClientAsync( |
|
||||
name: webClientId, |
|
||||
scopes: commonScopes, |
|
||||
grantTypes: new[] { "hybrid" }, |
|
||||
secret: (configurationSection["MyProjectName_Web:ClientSecret"] ?? "1q2w3e*").Sha256(), |
|
||||
redirectUri: $"{webClientRootUrl}signin-oidc", |
|
||||
postLogoutRedirectUri: $"{webClientRootUrl}signout-callback-oidc", |
|
||||
frontChannelLogoutUri: $"{webClientRootUrl}Account/FrontChannelLogout", |
|
||||
corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
//</TEMPLATE-REMOVE>
|
|
||||
|
|
||||
//Console Test / Angular Client
|
|
||||
var consoleAndAngularClientId = configurationSection["MyProjectName_App:ClientId"]; |
|
||||
if (!consoleAndAngularClientId.IsNullOrWhiteSpace()) |
|
||||
{ |
|
||||
var webClientRootUrl = configurationSection["MyProjectName_App:RootUrl"]?.TrimEnd('/'); |
|
||||
|
|
||||
await CreateClientAsync( |
|
||||
name: consoleAndAngularClientId, |
|
||||
scopes: commonScopes, |
|
||||
grantTypes: new[] { "password", "client_credentials", "authorization_code" }, |
|
||||
secret: (configurationSection["MyProjectName_App:ClientSecret"] ?? "1q2w3e*").Sha256(), |
|
||||
requireClientSecret: false, |
|
||||
redirectUri: webClientRootUrl, |
|
||||
postLogoutRedirectUri: webClientRootUrl, |
|
||||
corsOrigins: new[] { webClientRootUrl.RemovePostFix("/") } |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
//<TEMPLATE-REMOVE IF-NOT='ui:blazor'>
|
|
||||
|
|
||||
// Blazor Client
|
|
||||
var blazorClientId = configurationSection["MyProjectName_Blazor:ClientId"]; |
|
||||
if (!blazorClientId.IsNullOrWhiteSpace()) |
|
||||
{ |
|
||||
var blazorRootUrl = configurationSection["MyProjectName_Blazor:RootUrl"].TrimEnd('/'); |
|
||||
|
|
||||
await CreateClientAsync( |
|
||||
name: blazorClientId, |
|
||||
scopes: commonScopes, |
|
||||
grantTypes: new[] { "authorization_code" }, |
|
||||
secret: configurationSection["MyProjectName_Blazor:ClientSecret"]?.Sha256(), |
|
||||
requireClientSecret: false, |
|
||||
redirectUri: $"{blazorRootUrl}/authentication/login-callback", |
|
||||
postLogoutRedirectUri: $"{blazorRootUrl}/authentication/logout-callback", |
|
||||
corsOrigins: new[] { blazorRootUrl.RemovePostFix("/") } |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
//</TEMPLATE-REMOVE>
|
|
||||
|
|
||||
//<TEMPLATE-REMOVE IF-NOT='ui:blazor-server&&tiered'>
|
|
||||
|
|
||||
//Blazor Server Tiered Client
|
|
||||
var blazorServerTieredClientId = configurationSection["MyProjectName_BlazorServerTiered:ClientId"]; |
|
||||
if (!blazorServerTieredClientId.IsNullOrWhiteSpace()) |
|
||||
{ |
|
||||
var blazorServerTieredClientRootUrl = configurationSection["MyProjectName_BlazorServerTiered:RootUrl"].EnsureEndsWith('/'); |
|
||||
|
|
||||
/* MyProjectName_BlazorServerTiered client is only needed if you created a tiered blazor server |
|
||||
* solution. Otherwise, you can delete this client. */ |
|
||||
|
|
||||
await CreateClientAsync( |
|
||||
name: blazorServerTieredClientId, |
|
||||
scopes: commonScopes, |
|
||||
grantTypes: new[] { "hybrid" }, |
|
||||
secret: (configurationSection["MyProjectName_BlazorServerTiered:ClientSecret"] ?? "1q2w3e*").Sha256(), |
|
||||
redirectUri: $"{blazorServerTieredClientRootUrl}signin-oidc", |
|
||||
postLogoutRedirectUri: $"{blazorServerTieredClientRootUrl}signout-callback-oidc", |
|
||||
frontChannelLogoutUri: $"{blazorServerTieredClientRootUrl}Account/FrontChannelLogout", |
|
||||
corsOrigins: new[] { blazorServerTieredClientRootUrl.RemovePostFix("/") } |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
//</TEMPLATE-REMOVE>
|
|
||||
|
|
||||
// Swagger Client
|
|
||||
var swaggerClientId = configurationSection["MyProjectName_Swagger:ClientId"]; |
|
||||
if (!swaggerClientId.IsNullOrWhiteSpace()) |
|
||||
{ |
|
||||
var swaggerRootUrl = configurationSection["MyProjectName_Swagger:RootUrl"].TrimEnd('/'); |
|
||||
|
|
||||
await CreateClientAsync( |
|
||||
name: swaggerClientId, |
|
||||
scopes: commonScopes, |
|
||||
grantTypes: new[] { "authorization_code" }, |
|
||||
secret: configurationSection["MyProjectName_Swagger:ClientSecret"]?.Sha256(), |
|
||||
requireClientSecret: false, |
|
||||
redirectUri: $"{swaggerRootUrl}/swagger/oauth2-redirect.html", |
|
||||
corsOrigins: new[] { swaggerRootUrl.RemovePostFix("/") } |
|
||||
); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private async Task<Client> CreateClientAsync( |
|
||||
string name, |
|
||||
IEnumerable<string> scopes, |
|
||||
IEnumerable<string> grantTypes, |
|
||||
string secret = null, |
|
||||
string redirectUri = null, |
|
||||
string postLogoutRedirectUri = null, |
|
||||
string frontChannelLogoutUri = null, |
|
||||
bool requireClientSecret = true, |
|
||||
bool requirePkce = false, |
|
||||
IEnumerable<string> permissions = null, |
|
||||
IEnumerable<string> corsOrigins = null) |
|
||||
{ |
|
||||
var client = await _clientRepository.FindByClientIdAsync(name); |
|
||||
if (client == null) |
|
||||
{ |
|
||||
client = await _clientRepository.InsertAsync( |
|
||||
new Client( |
|
||||
_guidGenerator.Create(), |
|
||||
name |
|
||||
) |
|
||||
{ |
|
||||
ClientName = name, |
|
||||
ProtocolType = "oidc", |
|
||||
Description = name, |
|
||||
AlwaysIncludeUserClaimsInIdToken = true, |
|
||||
AllowOfflineAccess = true, |
|
||||
AbsoluteRefreshTokenLifetime = 31536000, //365 days
|
|
||||
AccessTokenLifetime = 31536000, //365 days
|
|
||||
AuthorizationCodeLifetime = 300, |
|
||||
IdentityTokenLifetime = 300, |
|
||||
RequireConsent = false, |
|
||||
FrontChannelLogoutUri = frontChannelLogoutUri, |
|
||||
RequireClientSecret = requireClientSecret, |
|
||||
RequirePkce = requirePkce |
|
||||
}, |
|
||||
autoSave: true |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
foreach (var scope in scopes) |
|
||||
{ |
|
||||
if (client.FindScope(scope) == null) |
|
||||
{ |
|
||||
client.AddScope(scope); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
foreach (var grantType in grantTypes) |
|
||||
{ |
|
||||
if (client.FindGrantType(grantType) == null) |
|
||||
{ |
|
||||
client.AddGrantType(grantType); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
if (!secret.IsNullOrEmpty()) |
|
||||
{ |
|
||||
if (client.FindSecret(secret) == null) |
|
||||
{ |
|
||||
client.AddSecret(secret); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
if (redirectUri != null) |
|
||||
{ |
|
||||
if (client.FindRedirectUri(redirectUri) == null) |
|
||||
{ |
|
||||
client.AddRedirectUri(redirectUri); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
if (postLogoutRedirectUri != null) |
|
||||
{ |
|
||||
if (client.FindPostLogoutRedirectUri(postLogoutRedirectUri) == null) |
|
||||
{ |
|
||||
client.AddPostLogoutRedirectUri(postLogoutRedirectUri); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
if (permissions != null) |
|
||||
{ |
|
||||
await _permissionDataSeeder.SeedAsync( |
|
||||
ClientPermissionValueProvider.ProviderName, |
|
||||
name, |
|
||||
permissions, |
|
||||
null |
|
||||
); |
|
||||
} |
|
||||
|
|
||||
if (corsOrigins != null) |
|
||||
{ |
|
||||
foreach (var origin in corsOrigins) |
|
||||
{ |
|
||||
if (!origin.IsNullOrWhiteSpace() && client.FindCorsOrigin(origin) == null) |
|
||||
{ |
|
||||
client.AddCorsOrigin(origin); |
|
||||
} |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
return await _clientRepository.UpdateAsync(client); |
|
||||
} |
|
||||
} |
|
||||
File diff suppressed because it is too large
@ -0,0 +1,623 @@ |
|||||
|
using System; |
||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
|
||||
|
#nullable disable |
||||
|
|
||||
|
namespace MyCompanyName.MyProjectName.Migrations |
||||
|
{ |
||||
|
public partial class Removed_IdentityServer : Migration |
||||
|
{ |
||||
|
protected override void Up(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiResourceClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiResourceProperties"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiResourceScopes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiResourceSecrets"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiScopeClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiScopeProperties"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientCorsOrigins"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientGrantTypes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientIdPRestrictions"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientPostLogoutRedirectUris"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientProperties"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientRedirectUris"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientScopes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClientSecrets"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerDeviceFlowCodes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerIdentityResourceClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerIdentityResourceProperties"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerPersistedGrants"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiResources"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerApiScopes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerClients"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "IdentityServerIdentityResources"); |
||||
|
} |
||||
|
|
||||
|
protected override void Down(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiResources", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
AllowedAccessTokenSigningAlgorithms = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true), |
||||
|
DisplayName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
Enabled = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
ShowInDiscoveryDocument = table.Column<bool>(type: "bit", nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiResources", x => x.Id); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiScopes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true), |
||||
|
DisplayName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
Emphasize = table.Column<bool>(type: "bit", nullable: false), |
||||
|
Enabled = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
Required = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ShowInDiscoveryDocument = table.Column<bool>(type: "bit", nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiScopes", x => x.Id); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClients", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
AbsoluteRefreshTokenLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
AccessTokenLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
AccessTokenType = table.Column<int>(type: "int", nullable: false), |
||||
|
AllowAccessTokensViaBrowser = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AllowOfflineAccess = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AllowPlainTextPkce = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AllowRememberConsent = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AllowedIdentityTokenSigningAlgorithms = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true), |
||||
|
AlwaysIncludeUserClaimsInIdToken = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AlwaysSendClientClaims = table.Column<bool>(type: "bit", nullable: false), |
||||
|
AuthorizationCodeLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
BackChannelLogoutSessionRequired = table.Column<bool>(type: "bit", nullable: false), |
||||
|
BackChannelLogoutUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true), |
||||
|
ClientClaimsPrefix = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
ClientId = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
ClientName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
ClientUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
ConsentLifetime = table.Column<int>(type: "int", nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true), |
||||
|
DeviceCodeLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
EnableLocalLogin = table.Column<bool>(type: "bit", nullable: false), |
||||
|
Enabled = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
FrontChannelLogoutSessionRequired = table.Column<bool>(type: "bit", nullable: false), |
||||
|
FrontChannelLogoutUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true), |
||||
|
IdentityTokenLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
IncludeJwtId = table.Column<bool>(type: "bit", nullable: false), |
||||
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
LogoUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true), |
||||
|
PairWiseSubjectSalt = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
ProtocolType = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
RefreshTokenExpiration = table.Column<int>(type: "int", nullable: false), |
||||
|
RefreshTokenUsage = table.Column<int>(type: "int", nullable: false), |
||||
|
RequireClientSecret = table.Column<bool>(type: "bit", nullable: false), |
||||
|
RequireConsent = table.Column<bool>(type: "bit", nullable: false), |
||||
|
RequirePkce = table.Column<bool>(type: "bit", nullable: false), |
||||
|
RequireRequestObject = table.Column<bool>(type: "bit", nullable: false), |
||||
|
SlidingRefreshTokenLifetime = table.Column<int>(type: "int", nullable: false), |
||||
|
UpdateAccessTokenClaimsOnRefresh = table.Column<bool>(type: "bit", nullable: false), |
||||
|
UserCodeType = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true), |
||||
|
UserSsoLifetime = table.Column<int>(type: "int", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClients", x => x.Id); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerDeviceFlowCodes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
ClientId = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
Data = table.Column<string>(type: "nvarchar(max)", maxLength: 50000, nullable: false), |
||||
|
Description = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
DeviceCode = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
Expiration = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
SessionId = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true), |
||||
|
SubjectId = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
UserCode = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerDeviceFlowCodes", x => x.Id); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerIdentityResources", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeleterId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true), |
||||
|
DisplayName = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
Emphasize = table.Column<bool>(type: "bit", nullable: false), |
||||
|
Enabled = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false, defaultValue: false), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "uniqueidentifier", nullable: true), |
||||
|
Name = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
Required = table.Column<bool>(type: "bit", nullable: false), |
||||
|
ShowInDiscoveryDocument = table.Column<bool>(type: "bit", nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerIdentityResources", x => x.Id); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerPersistedGrants", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Key = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
ClientId = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(40)", maxLength: 40, nullable: true), |
||||
|
ConsumedTime = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime2", nullable: false), |
||||
|
Data = table.Column<string>(type: "nvarchar(max)", maxLength: 50000, nullable: false), |
||||
|
Description = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
Expiration = table.Column<DateTime>(type: "datetime2", nullable: true), |
||||
|
ExtraProperties = table.Column<string>(type: "nvarchar(max)", nullable: true), |
||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
SessionId = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true), |
||||
|
SubjectId = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true), |
||||
|
Type = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerPersistedGrants", x => x.Key); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiResourceClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiResourceClaims", x => new { x.ApiResourceId, x.Type }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiResourceClaims_IdentityServerApiResources_ApiResourceId", |
||||
|
column: x => x.ApiResourceId, |
||||
|
principalTable: "IdentityServerApiResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiResourceProperties", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Key = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiResourceProperties", x => new { x.ApiResourceId, x.Key, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiResourceProperties_IdentityServerApiResources_ApiResourceId", |
||||
|
column: x => x.ApiResourceId, |
||||
|
principalTable: "IdentityServerApiResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiResourceScopes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Scope = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiResourceScopes", x => new { x.ApiResourceId, x.Scope }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiResourceScopes_IdentityServerApiResources_ApiResourceId", |
||||
|
column: x => x.ApiResourceId, |
||||
|
principalTable: "IdentityServerApiResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiResourceSecrets", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(4000)", maxLength: 4000, nullable: false), |
||||
|
Description = table.Column<string>(type: "nvarchar(1000)", maxLength: 1000, nullable: true), |
||||
|
Expiration = table.Column<DateTime>(type: "datetime2", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiResourceSecrets", x => new { x.ApiResourceId, x.Type, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiResourceSecrets_IdentityServerApiResources_ApiResourceId", |
||||
|
column: x => x.ApiResourceId, |
||||
|
principalTable: "IdentityServerApiResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiScopeClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiScopeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiScopeClaims", x => new { x.ApiScopeId, x.Type }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiScopeClaims_IdentityServerApiScopes_ApiScopeId", |
||||
|
column: x => x.ApiScopeId, |
||||
|
principalTable: "IdentityServerApiScopes", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerApiScopeProperties", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ApiScopeId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Key = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerApiScopeProperties", x => new { x.ApiScopeId, x.Key, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerApiScopeProperties_IdentityServerApiScopes_ApiScopeId", |
||||
|
column: x => x.ApiScopeId, |
||||
|
principalTable: "IdentityServerApiScopes", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientClaims", x => new { x.ClientId, x.Type, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientClaims_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientCorsOrigins", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Origin = table.Column<string>(type: "nvarchar(150)", maxLength: 150, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientCorsOrigins", x => new { x.ClientId, x.Origin }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientCorsOrigins_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientGrantTypes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
GrantType = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientGrantTypes", x => new { x.ClientId, x.GrantType }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientGrantTypes_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientIdPRestrictions", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Provider = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientIdPRestrictions", x => new { x.ClientId, x.Provider }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientIdPRestrictions_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientPostLogoutRedirectUris", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
PostLogoutRedirectUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientPostLogoutRedirectUris", x => new { x.ClientId, x.PostLogoutRedirectUri }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientPostLogoutRedirectUris_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientProperties", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Key = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientProperties", x => new { x.ClientId, x.Key, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientProperties_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientRedirectUris", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
RedirectUri = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientRedirectUris", x => new { x.ClientId, x.RedirectUri }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientRedirectUris_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientScopes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Scope = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientScopes", x => new { x.ClientId, x.Scope }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientScopes_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerClientSecrets", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
ClientId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(4000)", maxLength: 4000, nullable: false), |
||||
|
Description = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true), |
||||
|
Expiration = table.Column<DateTime>(type: "datetime2", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerClientSecrets", x => new { x.ClientId, x.Type, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerClientSecrets_IdentityServerClients_ClientId", |
||||
|
column: x => x.ClientId, |
||||
|
principalTable: "IdentityServerClients", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerIdentityResourceClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
IdentityResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Type = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerIdentityResourceClaims", x => new { x.IdentityResourceId, x.Type }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerIdentityResourceClaims_IdentityServerIdentityResources_IdentityResourceId", |
||||
|
column: x => x.IdentityResourceId, |
||||
|
principalTable: "IdentityServerIdentityResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "IdentityServerIdentityResourceProperties", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
IdentityResourceId = table.Column<Guid>(type: "uniqueidentifier", nullable: false), |
||||
|
Key = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false), |
||||
|
Value = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: false) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_IdentityServerIdentityResourceProperties", x => new { x.IdentityResourceId, x.Key, x.Value }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_IdentityServerIdentityResourceProperties_IdentityServerIdentityResources_IdentityResourceId", |
||||
|
column: x => x.IdentityResourceId, |
||||
|
principalTable: "IdentityServerIdentityResources", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerClients_ClientId", |
||||
|
table: "IdentityServerClients", |
||||
|
column: "ClientId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerDeviceFlowCodes_DeviceCode", |
||||
|
table: "IdentityServerDeviceFlowCodes", |
||||
|
column: "DeviceCode", |
||||
|
unique: true); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerDeviceFlowCodes_Expiration", |
||||
|
table: "IdentityServerDeviceFlowCodes", |
||||
|
column: "Expiration"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerDeviceFlowCodes_UserCode", |
||||
|
table: "IdentityServerDeviceFlowCodes", |
||||
|
column: "UserCode"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerPersistedGrants_Expiration", |
||||
|
table: "IdentityServerPersistedGrants", |
||||
|
column: "Expiration"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerPersistedGrants_SubjectId_ClientId_Type", |
||||
|
table: "IdentityServerPersistedGrants", |
||||
|
columns: new[] { "SubjectId", "ClientId", "Type" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_IdentityServerPersistedGrants_SubjectId_SessionId_Type", |
||||
|
table: "IdentityServerPersistedGrants", |
||||
|
columns: new[] { "SubjectId", "SessionId", "Type" }); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
Loading…
Reference in new issue