实例介绍
Skoruba Duende IdentityServer Admin 是一个基于 Asp.Net Core MVC 编写的应用程序,用于管理 Duende IdentityServer 和 Asp.Net Core Identity。该项目使用 .NET 8.0 开发,要求安装最新的 .NET 8 SDK。通过 dotnet new 模板可以轻松安装和创建新项目。
安装模板:
dotnet new install Skoruba.Duende.IdentityServer.Admin.Templates::2.0.0创建新项目:
dotnet new skoruba.duende.isadmin --name MyProject --title MyProject --adminemail "admin@example.com" --adminpassword "Pa$$word123" --adminrole MyRole --adminclientid MyClientId --adminclientsecret MyClientSecret --dockersupport true此外,项目还提供了如何配置管理界面以使用现有的 Duende IdentityServer 和 Asp.Net Core Identity 的详细步骤。
管理界面支持多种数据库提供者,包括 SQL Server、MySQL 和 PostgreSQL,并提供了详细的数据库连接字符串示例。通过 EF Core 运行实体框架迁移,并支持通过 PowerShell 脚本添加迁移。
项目还包含了丰富的自定义选项,例如主题选择、日志记录、本地化支持等,以及如何配置 Azure Key Vault、健康检查和外部提供者(如 GitHub、AzureAD)的详细指南。
【实例截图】
【核心代码】
文件清单
└── Duende.IdentityServer.Admin-4feea1a7f38bf3fd04cb1c2fb07feeb5b7f3db6c
├── build
│ ├── add-migrations.ps1
│ ├── create-nuget-packages.ps1
│ ├── publish-docker-images.ps1
│ ├── publish-nuget-packages.ps1
│ ├── publish-nuget-project-template.ps1
│ ├── rollback-migrations.ps1
│ └── update-projects-version.ps1
├── Directory.Build.props
├── docker-compose.dcproj
├── docker-compose.override.yml
├── docker-compose.vs.debug.yml
├── docker-compose.vs.release.yml
├── docker-compose.yml
├── docs
│ ├── Configure-Administration.md
│ ├── Configure-Azure-Deploy.md
│ ├── Configure-Ubuntu-PostgreSQL-Tutorial.md
│ ├── Images
│ │ ├── Admin-Swagger-UI.PNG
│ │ ├── App
│ │ │ ├── Skoruba-Api-Preview.PNG
│ │ │ ├── Skoruba-Client-Edit-Preview.PNG
│ │ │ ├── Skoruba-Client-Preview.PNG
│ │ │ ├── Skoruba-Forms-Preview.PNG
│ │ │ ├── Skoruba-Home-Preview-Dark.PNG
│ │ │ ├── Skoruba-Home-Preview.PNG
│ │ │ └── Skoruba-STS-Home-Preview.PNG
│ │ ├── certificate_upload.PNG
│ │ ├── https_always.PNG
│ │ ├── Skoruba.Duende.IdentityServer.Admin-App-Diagram.png
│ │ ├── Skoruba.Duende.IdentityServer.Admin-Logo-Nuget.png
│ │ ├── Skoruba.Duende.IdentityServer.Admin-Logo-ReadMe.png
│ │ └── Skoruba.Duende.IdentityServer.Admin-Solution.png
│ ├── index.rst
│ └── README.md
├── LICENSE
├── README.md
├── shared
│ ├── identitydata.json
│ ├── identityserverdata.json
│ ├── nginx
│ │ └── vhost.d
│ │ ├── admin.skoruba.local_location
│ │ └── sts.skoruba.local_location
│ └── serilog.json
├── Skoruba.Duende.IdentityServer.Admin.sln
├── src
│ ├── Skoruba.Duende.IdentityServer.Admin
│ │ ├── appsettings.json
│ │ ├── Configuration
│ │ │ ├── Database
│ │ │ │ └── MigrationAssemblyConfiguration.cs
│ │ │ └── Test
│ │ │ └── StartupTest.cs
│ │ ├── Dockerfile
│ │ ├── Helpers
│ │ │ └── StartupHelpers.cs
│ │ ├── identitydata.json
│ │ ├── identityserverdata.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── serilog.json
│ │ ├── Skoruba.Duende.IdentityServer.Admin.csproj
│ │ └── Startup.cs
│ ├── Skoruba.Duende.IdentityServer.Admin.Api
│ │ ├── appsettings.json
│ │ ├── Configuration
│ │ │ ├── AdminApiConfiguration.cs
│ │ │ ├── ApplicationParts
│ │ │ │ ├── GenericControllerRouteConvention.cs
│ │ │ │ └── GenericTypeControllerFeatureProvider.cs
│ │ │ ├── AuditLogging
│ │ │ │ ├── ApiAuditAction.cs
│ │ │ │ ├── ApiAuditSubject.cs
│ │ │ │ └── AuditLoggingConfiguration.cs
│ │ │ ├── Authorization
│ │ │ │ └── AuthorizeCheckOperationFilter.cs
│ │ │ ├── Constants
│ │ │ │ ├── AuthorizationConsts.cs
│ │ │ │ └── ConfigurationConsts.cs
│ │ │ └── Test
│ │ │ └── StartupTest.cs
│ │ ├── Controllers
│ │ │ ├── ApiResourcesController.cs
│ │ │ ├── ApiScopesController.cs
│ │ │ ├── ClientsController.cs
│ │ │ ├── IdentityProvidersController.cs
│ │ │ ├── IdentityResourcesController.cs
│ │ │ ├── KeysController.cs
│ │ │ ├── PersistedGrantsController.cs
│ │ │ ├── RolesController.cs
│ │ │ └── UsersController.cs
│ │ ├── Dockerfile
│ │ ├── Dtos
│ │ │ ├── ApiResources
│ │ │ │ ├── ApiResourceApiDto.cs
│ │ │ │ ├── ApiResourcePropertiesApiDto.cs
│ │ │ │ ├── ApiResourcePropertyApiDto.cs
│ │ │ │ ├── ApiResourcesApiDto.cs
│ │ │ │ ├── ApiSecretApiDto.cs
│ │ │ │ └── ApiSecretsApiDto.cs
│ │ │ ├── ApiScopes
│ │ │ │ ├── ApiScopeApiDto.cs
│ │ │ │ ├── ApiScopePropertiesApiDto.cs
│ │ │ │ ├── ApiScopePropertyApiDto.cs
│ │ │ │ └── ApiScopesApiDto.cs
│ │ │ ├── Clients
│ │ │ │ ├── ClientApiDto.cs
│ │ │ │ ├── ClientClaimApiDto.cs
│ │ │ │ ├── ClientClaimsApiDto.cs
│ │ │ │ ├── ClientCloneApiDto.cs
│ │ │ │ ├── ClientPropertiesApiDto.cs
│ │ │ │ ├── ClientPropertyApiDto.cs
│ │ │ │ ├── ClientsApiDto.cs
│ │ │ │ ├── ClientSecretApiDto.cs
│ │ │ │ └── ClientSecretsApiDto.cs
│ │ │ ├── IdentityProvider
│ │ │ │ ├── IdentityProviderApiDto.cs
│ │ │ │ └── IdentityProvidersApiDto.cs
│ │ │ ├── IdentityResources
│ │ │ │ ├── IdentityResourceApiDto.cs
│ │ │ │ ├── IdentityResourcePropertiesApiDto.cs
│ │ │ │ ├── IdentityResourcePropertyApiDto.cs
│ │ │ │ └── IdentityResourcesApiDto.cs
│ │ │ ├── Key
│ │ │ │ ├── KeyApiDto.cs
│ │ │ │ └── KeysApiDto.cs
│ │ │ ├── PersistedGrants
│ │ │ │ ├── PersistedGrantApiDto.cs
│ │ │ │ ├── PersistedGrantsApiDto.cs
│ │ │ │ ├── PersistedGrantSubjectApiDto.cs
│ │ │ │ └── PersistedGrantSubjectsApiDto.cs
│ │ │ ├── Roles
│ │ │ │ ├── RoleClaimApiDto.cs
│ │ │ │ └── RoleClaimsApiDto.cs
│ │ │ └── Users
│ │ │ ├── UserChangePasswordApiDto.cs
│ │ │ ├── UserClaimApiDto.cs
│ │ │ ├── UserClaimsApiDto.cs
│ │ │ ├── UserProviderApiDto.cs
│ │ │ ├── UserProviderDeleteApiDto.cs
│ │ │ ├── UserProvidersApiDto.cs
│ │ │ ├── UserRoleApiDto.cs
│ │ │ └── UserRolesApiDto.cs
│ │ ├── ExceptionHandling
│ │ │ ├── ApiError.cs
│ │ │ └── ControllerExceptionFilterAttribute.cs
│ │ ├── Helpers
│ │ │ ├── Localization
│ │ │ │ ├── GenericControllerLocalizer.cs
│ │ │ │ └── IGenericControllerLocalizer.cs
│ │ │ ├── StartupHelpers.cs
│ │ │ └── UrlHelpers.cs
│ │ ├── Mappers
│ │ │ ├── ApiResourceApiMapperProfile.cs
│ │ │ ├── ApiResourceApiMappers.cs
│ │ │ ├── ApiScopeApiMapperProfile.cs
│ │ │ ├── ApiScopeApiMappers.cs
│ │ │ ├── ClientApiMapperProfile.cs
│ │ │ ├── ClientApiMappers.cs
│ │ │ ├── IdentityMapperProfile.cs
│ │ │ ├── IdentityProviderApiMapperProfile.cs
│ │ │ ├── IdentityProviderApiMappers.cs
│ │ │ ├── IdentityResourceApiMapperProfile.cs
│ │ │ ├── IdentityResourceApiMappers.cs
│ │ │ ├── KeyApiMapperProfile.cs
│ │ │ ├── KeyApiMappers.cs
│ │ │ ├── PersistedGrantApiMapperProfile.cs
│ │ │ └── PersistedGrantApiMappers.cs
│ │ ├── Middlewares
│ │ │ └── AuthenticatedTestRequestMiddleware.cs
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Resources
│ │ │ ├── ApiErrorResource.Designer.cs
│ │ │ ├── ApiErrorResource.nl.resx
│ │ │ ├── ApiErrorResource.resx
│ │ │ ├── ApiErrorResources.cs
│ │ │ └── IApiErrorResources.cs
│ │ ├── serilog.json
│ │ ├── Skoruba.Duende.IdentityServer.Admin.Api.csproj
│ │ └── Startup.cs
│ ├── Skoruba.Duende.IdentityServer.Admin.BusinessLogic
│ │ ├── Dtos
│ │ │ ├── Configuration
│ │ │ │ ├── ApiResourceDto.cs
│ │ │ │ ├── ApiResourcePropertiesDto.cs
│ │ │ │ ├── ApiResourcePropertyDto.cs
│ │ │ │ ├── ApiResourcesDto.cs
│ │ │ │ ├── ApiScopeDto.cs
│ │ │ │ ├── ApiScopePropertiesDto.cs
│ │ │ │ ├── ApiScopePropertyDto.cs
│ │ │ │ ├── ApiScopesDto.cs
│ │ │ │ ├── ApiSecretDto.cs
│ │ │ │ ├── ApiSecretsDto.cs
│ │ │ │ ├── ClientClaimDto.cs
│ │ │ │ ├── ClientClaimsDto.cs
│ │ │ │ ├── ClientCloneDto.cs
│ │ │ │ ├── ClientDto.cs
│ │ │ │ ├── ClientPropertiesDto.cs
│ │ │ │ ├── ClientPropertyDto.cs
│ │ │ │ ├── ClientsDto.cs
│ │ │ │ ├── ClientSecretDto.cs
│ │ │ │ ├── ClientSecretsDto.cs
│ │ │ │ ├── IdentityResourceDto.cs
│ │ │ │ ├── IdentityResourcePropertiesDto.cs
│ │ │ │ ├── IdentityResourcePropertyDto.cs
│ │ │ │ └── IdentityResourcesDto.cs
│ │ │ ├── Enums
│ │ │ │ ├── ClientType.cs
│ │ │ │ └── SavedStatus.cs
│ │ │ ├── Grant
│ │ │ │ ├── PersistedGrantDto.cs
│ │ │ │ └── PersistedGrantsDto.cs
│ │ │ ├── IdentityProvider
│ │ │ │ ├── IdentityProviderDto.cs
│ │ │ │ ├── IdentityProviderPropertyDto.cs
│ │ │ │ └── IdentityProvidersDto.cs
│ │ │ ├── Key
│ │ │ │ ├── KeyDto.cs
│ │ │ │ └── KeysDto.cs
│ │ │ └── Log
│ │ │ ├── AuditLogDto.cs
│ │ │ ├── AuditLogFilterDto.cs
│ │ │ ├── AuditLogsDto.cs
│ │ │ ├── LogDto.cs
│ │ │ └── LogsDto.cs
│ │ ├── Events
│ │ │ ├── ApiResource
│ │ │ │ ├── ApiResourceAddedEvent.cs
│ │ │ │ ├── ApiResourceDeletedEvent.cs
│ │ │ │ ├── ApiResourcePropertiesRequestedEvent.cs
│ │ │ │ ├── ApiResourcePropertyAddedEvent.cs
│ │ │ │ ├── ApiResourcePropertyDeletedEvent.cs
│ │ │ │ ├── ApiResourcePropertyRequestedEvent.cs
│ │ │ │ ├── ApiResourceRequestedEvent.cs
│ │ │ │ ├── ApiResourcesRequestedEvent.cs
│ │ │ │ ├── ApiResourceUpdatedEvent.cs
│ │ │ │ ├── ApiSecretAddedEvent.cs
│ │ │ │ ├── ApiSecretDeletedEvent.cs
│ │ │ │ ├── ApiSecretRequestedEvent.cs
│ │ │ │ └── ApiSecretsRequestedEvent.cs
│ │ │ ├── ApiScope
│ │ │ │ ├── ApiScopeAddedEvent.cs
│ │ │ │ ├── ApiScopeDeletedEvent.cs
│ │ │ │ ├── ApiScopePropertiesRequestedEvent.cs
│ │ │ │ ├── ApiScopePropertyAddedEvent.cs
│ │ │ │ ├── ApiScopePropertyDeletedEvent.cs
│ │ │ │ ├── ApiScopePropertyRequestedEvent.cs
│ │ │ │ ├── ApiScopeRequestedEvent.cs
│ │ │ │ ├── ApiScopesRequestedEvent.cs
│ │ │ │ └── ApiScopeUpdatedEvent.cs
│ │ │ ├── Client
│ │ │ │ ├── ClientAddedEvent.cs
│ │ │ │ ├── ClientClaimAddedEvent.cs
│ │ │ │ ├── ClientClaimDeletedEvent.cs
│ │ │ │ ├── ClientClaimRequestedEvent.cs
│ │ │ │ ├── ClientClaimsRequestedEvent.cs
│ │ │ │ ├── ClientClonedEvent.cs
│ │ │ │ ├── ClientDeletedEvent.cs
│ │ │ │ ├── ClientPropertiesRequestedEvent.cs
│ │ │ │ ├── ClientPropertyAddedEvent.cs
│ │ │ │ ├── ClientPropertyDeletedEvent.cs
│ │ │ │ ├── ClientPropertyRequestedEvent.cs
│ │ │ │ ├── ClientRequestedEvent.cs
│ │ │ │ ├── ClientSecretAddedEvent.cs
│ │ │ │ ├── ClientSecretDeletedEvent.cs
│ │ │ │ ├── ClientSecretRequestedEvent.cs
│ │ │ │ ├── ClientSecretsRequestedEvent.cs
│ │ │ │ ├── ClientsRequestedEvent.cs
│ │ │ │ └── ClientUpdatedEvent.cs
│ │ │ ├── IdentityProvider
│ │ │ │ ├── IdentityProviderAddedEvent.cs
│ │ │ │ ├── IdentityProviderDeletedEvent.cs
│ │ │ │ ├── IdentityProviderRequestedEvent.cs
│ │ │ │ ├── IdentityProvidersRequestedEvent.cs
│ │ │ │ └── IdentityProviderUpdatedEvent.cs
│ │ │ ├── IdentityResource
│ │ │ │ ├── IdentityResourceAddedEvent.cs
│ │ │ │ ├── IdentityResourceDeletedEvent.cs
│ │ │ │ ├── IdentityResourcePropertiesRequestedEvent.cs
│ │ │ │ ├── IdentityResourcePropertyAddedEvent.cs
│ │ │ │ ├── IdentityResourcePropertyDeletedEvent.cs
│ │ │ │ ├── IdentityResourcePropertyRequestedEvent.cs
│ │ │ │ ├── IdentityResourceRequestedEvent.cs
│ │ │ │ ├── IdentityResourcesRequestedEvent.cs
│ │ │ │ └── IdentityResourceUpdatedEvent.cs
│ │ │ ├── Key
│ │ │ │ ├── KeyDeletedEvent.cs
│ │ │ │ ├── KeyRequestedEvent.cs
│ │ │ │ └── KeysRequestedEvent.cs
│ │ │ ├── Log
│ │ │ │ ├── LogsDeletedEvent.cs
│ │ │ │ └── LogsRequestedEvent.cs
│ │ │ └── PersistedGrant
│ │ │ ├── PersistedGrantDeletedEvent.cs
│ │ │ ├── PersistedGrantRequestedEvent.cs
│ │ │ ├── PersistedGrantsByUserRequestedEvent.cs
│ │ │ ├── PersistedGrantsByUsersRequestedEvent.cs
│ │ │ └── PersistedGrantsDeletedEvent.cs
│ │ ├── Extensions
│ │ │ └── AdminServicesExtensions.cs
│ │ ├── Helpers
│ │ │ ├── ComboBoxHelpers.cs
│ │ │ ├── EnumerableExtensions.cs
│ │ │ ├── EnumHelpers.cs
│ │ │ ├── QueryableExtensions.cs
│ │ │ ├── ResourceMessage.cs
│ │ │ └── ViewHelpers.cs
│ │ ├── Mappers
│ │ │ ├── ApiResourceMapperProfile.cs
│ │ │ ├── ApiResourceMappers.cs
│ │ │ ├── ApiScopeMapperProfile.cs
│ │ │ ├── ApiScopeMappers.cs
│ │ │ ├── ClientMapperProfile.cs
│ │ │ ├── ClientMappers.cs
│ │ │ ├── Converters
│ │ │ │ └── AllowedSigningAlgorithmsConverter.cs
│ │ │ ├── IdentityProviderMapperProfile.cs
│ │ │ ├── IdentityProviderMappers.cs
│ │ │ ├── IdentityResourceMapperProfile.cs
│ │ │ ├── IdentityResourceMappers.cs
│ │ │ ├── KeyMapperProfile.cs
│ │ │ ├── KeyMappers.cs
│ │ │ ├── LogMapperProfile.cs
│ │ │ ├── LogMappers.cs
│ │ │ ├── PersistedGrantMapperProfile.cs
│ │ │ └── PersistedGrantMappers.cs
│ │ ├── Resources
│ │ │ ├── ApiResourceServiceResource.Designer.cs
│ │ │ ├── ApiResourceServiceResource.resx
│ │ │ ├── ApiResourceServiceResources.cs
│ │ │ ├── ApiScopeServiceResource.Designer.cs
│ │ │ ├── ApiScopeServiceResource.resx
│ │ │ ├── ApiScopeServiceResources.cs
│ │ │ ├── ClientServiceResource.Designer.cs
│ │ │ ├── ClientServiceResource.resx
│ │ │ ├── ClientServiceResources.cs
│ │ │ ├── IApiResourceServiceResources.cs
│ │ │ ├── IApiScopeServiceResources.cs
│ │ │ ├── IClientServiceResources.cs
│ │ │ ├── IdentityProviderServiceResource.Designer.cs
│ │ │ ├── IdentityProviderServiceResource.resx
│ │ │ ├── IdentityProviderServiceResources.cs
│ │ │ ├── IdentityResourceServiceResource.Designer.cs
│ │ │ ├── IdentityResourceServiceResource.resx
│ │ │ ├── IdentityResourceServiceResources.cs
│ │ │ ├── IIdentityProviderServiceResources.cs
│ │ │ ├── IIdentityResourceServiceResources.cs
│ │ │ ├── IKeyServiceResources.cs
│ │ │ ├── IPersistedGrantServiceResources.cs
│ │ │ ├── KeyServiceResource.Designer.cs
│ │ │ ├── KeyServiceResource.resx
│ │ │ ├── KeyServiceResources.cs
│ │ │ ├── PersistedGrantServiceResource.Designer.cs
│ │ │ ├── PersistedGrantServiceResource.resx
│ │ │ └── PersistedGrantServiceResources.cs
│ │ ├── Services
│ │ │ ├── ApiResourceService.cs
│ │ │ ├── ApiScopeService.cs
│ │ │ ├── AuditLogService.cs
│ │ │ ├── ClientService.cs
│ │ │ ├── IdentityProviderService.cs
│ │ │ ├── IdentityResourceService.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IApiResourceService.cs
│ │ │ │ ├── IApiScopeService.cs
│ │ │ │ ├── IAuditLogService.cs
│ │ │ │ ├── IClientService.cs
│ │ │ │ ├── IIdentityProviderService.cs
│ │ │ │ ├── IIdentityResourceService.cs
│ │ │ │ ├── IKeyService.cs
│ │ │ │ ├── ILogService.cs
│ │ │ │ └── IPersistedGrantService.cs
│ │ │ ├── KeyService.cs
│ │ │ ├── LogService.cs
│ │ │ └── PersistedGrantService.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.BusinessLogic.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.BusinessLogic.Identity
│ │ ├── Dtos
│ │ │ ├── Enums
│ │ │ │ └── SavedStatus.cs
│ │ │ ├── Grant
│ │ │ │ ├── PersistedGrantDto.cs
│ │ │ │ └── PersistedGrantsDto.cs
│ │ │ └── Identity
│ │ │ ├── Base
│ │ │ │ ├── BaseRoleClaimDto.cs
│ │ │ │ ├── BaseRoleDto.cs
│ │ │ │ ├── BaseUserChangePasswordDto.cs
│ │ │ │ ├── BaseUserClaimDto.cs
│ │ │ │ ├── BaseUserDto.cs
│ │ │ │ ├── BaseUserProviderDto.cs
│ │ │ │ └── BaseUserRolesDto.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IBaseRoleClaimDto.cs
│ │ │ │ ├── IBaseRoleDto.cs
│ │ │ │ ├── IBaseUserChangePasswordDto.cs
│ │ │ │ ├── IBaseUserClaimDto.cs
│ │ │ │ ├── IBaseUserDto.cs
│ │ │ │ ├── IBaseUserProviderDto.cs
│ │ │ │ ├── IBaseUserRolesDto.cs
│ │ │ │ ├── IRoleClaimDto.cs
│ │ │ │ ├── IRoleClaimsDto.cs
│ │ │ │ ├── IRoleDto.cs
│ │ │ │ ├── IRolesDto.cs
│ │ │ │ ├── IUserChangePasswordDto.cs
│ │ │ │ ├── IUserClaimDto.cs
│ │ │ │ ├── IUserClaimsDto.cs
│ │ │ │ ├── IUserDto.cs
│ │ │ │ ├── IUserProviderDto.cs
│ │ │ │ ├── IUserProvidersDto.cs
│ │ │ │ ├── IUserRolesDto.cs
│ │ │ │ └── IUsersDto.cs
│ │ │ ├── RoleClaimDto.cs
│ │ │ ├── RoleClaimsDto.cs
│ │ │ ├── RoleDto.cs
│ │ │ ├── RolesDto.cs
│ │ │ ├── UserChangePasswordDto.cs
│ │ │ ├── UserClaimDto.cs
│ │ │ ├── UserClaimsDto.cs
│ │ │ ├── UserDto.cs
│ │ │ ├── UserProviderDto.cs
│ │ │ ├── UserProvidersDto.cs
│ │ │ ├── UserRolesDto.cs
│ │ │ └── UsersDto.cs
│ │ ├── Events
│ │ │ ├── Identity
│ │ │ │ ├── AllRolesRequestedEvent.cs
│ │ │ │ ├── ClaimUsersRequestedEvent.cs
│ │ │ │ ├── RoleAddedEvent.cs
│ │ │ │ ├── RoleClaimRequestedEvent.cs
│ │ │ │ ├── RoleClaimsDeletedEvent.cs
│ │ │ │ ├── RoleClaimsRequestedEvent.cs
│ │ │ │ ├── RoleClaimsSavedEvent.cs
│ │ │ │ ├── RoleDeletedEvent.cs
│ │ │ │ ├── RoleRequestedEvent.cs
│ │ │ │ ├── RolesRequestedEvent.cs
│ │ │ │ ├── RoleUpdatedEvent.cs
│ │ │ │ ├── RoleUsersRequestedEvent.cs
│ │ │ │ ├── UserClaimRequestedEvent.cs
│ │ │ │ ├── UserClaimsDeletedEvent.cs
│ │ │ │ ├── UserClaimsRequestedEvent.cs
│ │ │ │ ├── UserClaimsSavedEvent.cs
│ │ │ │ ├── UserDeletedEvent.cs
│ │ │ │ ├── UserPasswordChangedEvent.cs
│ │ │ │ ├── UserProviderRequestedEvent.cs
│ │ │ │ ├── UserProvidersDeletedEvent.cs
│ │ │ │ ├── UserProvidersRequestedEvent.cs
│ │ │ │ ├── UserRequestedEvent.cs
│ │ │ │ ├── UserRoleDeletedEvent.cs
│ │ │ │ ├── UserRoleSavedEvent.cs
│ │ │ │ ├── UserRolesRequestedEvent.cs
│ │ │ │ ├── UserSavedEvent.cs
│ │ │ │ ├── UsersRequestedEvent.cs
│ │ │ │ └── UserUpdatedEvent.cs
│ │ │ └── PersistedGrant
│ │ │ ├── PersistedGrantIdentityDeletedEvent.cs
│ │ │ ├── PersistedGrantIdentityRequestedEvent.cs
│ │ │ ├── PersistedGrantsIdentityByUserRequestedEvent.cs
│ │ │ ├── PersistedGrantsIdentityByUsersRequestedEvent.cs
│ │ │ └── PersistedGrantsIdentityDeletedEvent.cs
│ │ ├── Extensions
│ │ │ └── AdminServicesExtensions.cs
│ │ ├── Helpers
│ │ │ ├── QueryableExtensions.cs
│ │ │ └── ResourceMessage.cs
│ │ ├── Mappers
│ │ │ ├── Configuration
│ │ │ │ ├── IMapperConfigurationBuilder.cs
│ │ │ │ └── MapperConfigurationBuilder.cs
│ │ │ ├── IdentityMapperProfile.cs
│ │ │ ├── PersistedGrantMapperProfile.cs
│ │ │ └── PersistedGrantMappers.cs
│ │ ├── Resources
│ │ │ ├── IdentityServiceResource.Designer.cs
│ │ │ ├── IdentityServiceResource.resx
│ │ │ ├── IdentityServiceResources.cs
│ │ │ ├── IIdentityServiceResources.cs
│ │ │ ├── IPersistedGrantAspNetIdentityServiceResources.cs
│ │ │ ├── PersistedGrantAspNetIdentityServiceResources.cs
│ │ │ ├── PersistedGrantServiceResource.Designer.cs
│ │ │ └── PersistedGrantServiceResource.resx
│ │ ├── Services
│ │ │ ├── IdentityService.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IIdentityService.cs
│ │ │ │ └── IPersistedGrantAspNetIdentityService.cs
│ │ │ └── PersistedGrantAspNetIdentityService.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.BusinessLogic.Identity.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.BusinessLogic.Shared
│ │ ├── Dtos
│ │ │ └── Common
│ │ │ ├── Pager.cs
│ │ │ ├── Search.cs
│ │ │ └── SelectItemDto.cs
│ │ ├── ExceptionHandling
│ │ │ ├── UserFriendlyErrorPageException.cs
│ │ │ ├── UserFriendlyViewException.cs
│ │ │ └── ViewErrorMessage.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.BusinessLogic.Shared.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework
│ │ ├── Constants
│ │ │ ├── ClientConsts.cs
│ │ │ └── TableConsts.cs
│ │ ├── Entities
│ │ │ ├── Log.cs
│ │ │ └── PersistedGrantDataView.cs
│ │ ├── Helpers
│ │ │ ├── DbContextHelpers.cs
│ │ │ ├── EnumHelpers.cs
│ │ │ └── HashType.cs
│ │ ├── Interfaces
│ │ │ ├── IAdminConfigurationDbContext.cs
│ │ │ ├── IAdminLogDbContext.cs
│ │ │ └── IAdminPersistedGrantDbContext.cs
│ │ ├── Repositories
│ │ │ ├── ApiResourceRepository.cs
│ │ │ ├── ApiScopeRepository.cs
│ │ │ ├── AuditLogRepository.cs
│ │ │ ├── ClientRepository.cs
│ │ │ ├── IdentityProviderRepository.cs
│ │ │ ├── IdentityResourceRepository.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IApiResourceRepository.cs
│ │ │ │ ├── IApiScopeRepository.cs
│ │ │ │ ├── IAuditLogRepository.cs
│ │ │ │ ├── IClientRepository.cs
│ │ │ │ ├── IIdentityProviderRepository.cs
│ │ │ │ ├── IIdentityResourceRepository.cs
│ │ │ │ ├── IKeyRepository.cs
│ │ │ │ ├── ILogRepository.cs
│ │ │ │ └── IPersistedGrantRepository.cs
│ │ │ ├── KeyRepository.cs
│ │ │ ├── LogRepository.cs
│ │ │ └── PersistedGrantRepository.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Configuration
│ │ ├── Configuration
│ │ │ ├── ConnectionStringsConfiguration.cs
│ │ │ ├── DatabaseMigrationsConfiguration.cs
│ │ │ ├── DatabaseProviderConfiguration.cs
│ │ │ ├── DatabaseProviderType.cs
│ │ │ ├── Identity
│ │ │ │ ├── Claim.cs
│ │ │ │ ├── Role.cs
│ │ │ │ └── User.cs
│ │ │ ├── IdentityData.cs
│ │ │ ├── IdentityServer
│ │ │ │ └── Client.cs
│ │ │ ├── IdentityServerData.cs
│ │ │ └── SeedConfiguration.cs
│ │ ├── MySql
│ │ │ └── DatabaseExtensions.cs
│ │ ├── PostgreSQL
│ │ │ └── DatabaseExtensions.cs
│ │ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Configuration.csproj
│ │ └── SqlServer
│ │ └── DatabaseExtensions.cs
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Extensions
│ │ ├── Common
│ │ │ ├── PagedList.cs
│ │ │ └── SelectItem.cs
│ │ ├── Enums
│ │ │ └── SavedStatus.cs
│ │ ├── Extensions
│ │ │ ├── EnumerableExtensions.cs
│ │ │ └── QueryableExtensions.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Extensions.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Identity
│ │ ├── Repositories
│ │ │ ├── IdentityRepository.cs
│ │ │ ├── Interfaces
│ │ │ │ ├── IIdentityRepository.cs
│ │ │ │ └── IPersistedGrantAspNetIdentityRepository.cs
│ │ │ └── PersistedGrantAspNetIdentityRepository.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Identity.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.MySql
│ │ ├── Helpers
│ │ │ └── MigrationAssembly.cs
│ │ ├── Migrations
│ │ │ ├── AuditLogging
│ │ │ │ ├── 20191120085753_DbInit.cs
│ │ │ │ ├── 20191120085753_DbInit.Designer.cs
│ │ │ │ ├── 20200419131142_ChangeAuditLogToLong.cs
│ │ │ │ ├── 20200419131142_ChangeAuditLogToLong.Designer.cs
│ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ ├── DataProtection
│ │ │ │ ├── 20200419131430_AddDataProtection.cs
│ │ │ │ ├── 20200419131430_AddDataProtection.Designer.cs
│ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ ├── Identity
│ │ │ │ ├── 20191120085611_DbInit.cs
│ │ │ │ ├── 20191120085611_DbInit.Designer.cs
│ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerConfiguration
│ │ │ │ ├── 20191120085701_DbInit.cs
│ │ │ │ ├── 20191120085701_DbInit.Designer.cs
│ │ │ │ ├── 20201108173253_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201108173253_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20210318073713_AddRequireResourceIndicator.cs
│ │ │ │ ├── 20210318073713_AddRequireResourceIndicator.Designer.cs
│ │ │ │ ├── 20211211141521_UpdateISKeysIDP.cs
│ │ │ │ ├── 20211211141521_UpdateISKeysIDP.Designer.cs
│ │ │ │ ├── 20220125140746_UpdateToIS62.cs
│ │ │ │ ├── 20220125140746_UpdateToIS62.Designer.cs
│ │ │ │ ├── 20230119113834_UpdateToIS621.cs
│ │ │ │ ├── 20230119113834_UpdateToIS621.Designer.cs
│ │ │ │ ├── 20240206153506_IdentityServerV7.cs
│ │ │ │ ├── 20240206153506_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerGrants
│ │ │ │ ├── 20191120085729_DbInit.cs
│ │ │ │ ├── 20191120085729_DbInit.Designer.cs
│ │ │ │ ├── 20201108173143_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201108173143_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20211211141458_UpdateISKeysIDP.cs
│ │ │ │ ├── 20211211141458_UpdateISKeysIDP.Designer.cs
│ │ │ │ ├── 20230119113811_UpdateToIS621.cs
│ │ │ │ ├── 20230119113811_UpdateToIS621.Designer.cs
│ │ │ │ ├── 20240206153511_IdentityServerV7.cs
│ │ │ │ ├── 20240206153511_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ └── Logging
│ │ │ ├── 20191120085635_DbInit.cs
│ │ │ ├── 20191120085635_DbInit.Designer.cs
│ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.MySql.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.PostgreSQL
│ │ ├── Helpers
│ │ │ └── MigrationAssembly.cs
│ │ ├── Migrations
│ │ │ ├── AuditLogging
│ │ │ │ ├── 20191120100220_DbInit.cs
│ │ │ │ ├── 20191120100220_DbInit.Designer.cs
│ │ │ │ ├── 20200419130247_ChangeAuditLogToLong.cs
│ │ │ │ ├── 20200419130247_ChangeAuditLogToLong.Designer.cs
│ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ ├── DataProtection
│ │ │ │ ├── 20200419131536_AddDataProtection.cs
│ │ │ │ ├── 20200419131536_AddDataProtection.Designer.cs
│ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ ├── Identity
│ │ │ │ ├── 20191120100035_DbInit.cs
│ │ │ │ ├── 20191120100035_DbInit.Designer.cs
│ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerConfiguration
│ │ │ │ ├── 20191120100129_DbInit.cs
│ │ │ │ ├── 20191120100129_DbInit.Designer.cs
│ │ │ │ ├── 20201108170812_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201108170812_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20210310153645_AddRequireResourceIndicator.cs
│ │ │ │ ├── 20210310153645_AddRequireResourceIndicator.Designer.cs
│ │ │ │ ├── 20211211153855_UpdateISKeysIDP.cs
│ │ │ │ ├── 20211211153855_UpdateISKeysIDP.Designer.cs
│ │ │ │ ├── 20220125145446_UpdateToIS6.cs
│ │ │ │ ├── 20220125145446_UpdateToIS6.Designer.cs
│ │ │ │ ├── 20230119113211_UpdateToIS61.cs
│ │ │ │ ├── 20230119113211_UpdateToIS61.Designer.cs
│ │ │ │ ├── 20240206155420_IdentityServerV7.cs
│ │ │ │ ├── 20240206155420_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerGrants
│ │ │ │ ├── 20191120100155_DbInit.cs
│ │ │ │ ├── 20191120100155_DbInit.Designer.cs
│ │ │ │ ├── 20201108165927_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201108165927_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20211211153835_UpdateISKeysIDP.cs
│ │ │ │ ├── 20211211153835_UpdateISKeysIDP.Designer.cs
│ │ │ │ ├── 20230119113152_UpdateToIS61.cs
│ │ │ │ ├── 20230119113152_UpdateToIS61.Designer.cs
│ │ │ │ ├── 20240206155424_IdentityServerV7.cs
│ │ │ │ ├── 20240206155424_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ └── Logging
│ │ │ ├── 20191120100104_DbInit.cs
│ │ │ ├── 20191120100104_DbInit.Designer.cs
│ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.PostgreSQL.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Shared
│ │ ├── Constants
│ │ │ └── TableConsts.cs
│ │ ├── DbContexts
│ │ │ ├── AdminAuditLogDbContext.cs
│ │ │ ├── AdminIdentityDbContext.cs
│ │ │ ├── AdminLogDbContext.cs
│ │ │ ├── IdentityServerConfigurationDbContext.cs
│ │ │ ├── IdentityServerDataProtectionDbContext.cs
│ │ │ └── IdentityServerPersistedGrantDbContext.cs
│ │ ├── Entities
│ │ │ └── Identity
│ │ │ ├── UserIdentityClaim.cs
│ │ │ ├── UserIdentity.cs
│ │ │ ├── UserIdentityRoleClaim.cs
│ │ │ ├── UserIdentityRole.cs
│ │ │ ├── UserIdentityUserLogin.cs
│ │ │ ├── UserIdentityUserRole.cs
│ │ │ └── UserIdentityUserToken.cs
│ │ ├── Helpers
│ │ │ └── DbMigrationHelpers.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.Shared.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.EntityFramework.SqlServer
│ │ ├── Helpers
│ │ │ └── MigrationAssembly.cs
│ │ ├── Migrations
│ │ │ ├── AuditLogging
│ │ │ │ ├── 20191119164022_DbInit.cs
│ │ │ │ ├── 20191119164022_DbInit.Designer.cs
│ │ │ │ ├── 20200419130339_ChangeAuditLogToLong.cs
│ │ │ │ ├── 20200419130339_ChangeAuditLogToLong.Designer.cs
│ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ ├── DataProtection
│ │ │ │ ├── 20200221180348_DbInit.cs
│ │ │ │ ├── 20200221180348_DbInit.Designer.cs
│ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ ├── Identity
│ │ │ │ ├── 20191119163918_DbInit.cs
│ │ │ │ ├── 20191119163918_DbInit.Designer.cs
│ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerConfiguration
│ │ │ │ ├── 20191119163952_DbInit.cs
│ │ │ │ ├── 20191119163952_DbInit.Designer.cs
│ │ │ │ ├── 20201030101938_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201030101938_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20210310151745_AddRequireResourceIndicator.cs
│ │ │ │ ├── 20210310151745_AddRequireResourceIndicator.Designer.cs
│ │ │ │ ├── 20211111141154_AddIdentityServerProviders.cs
│ │ │ │ ├── 20211111141154_AddIdentityServerProviders.Designer.cs
│ │ │ │ ├── 20220116154116_UpdateToIS6.cs
│ │ │ │ ├── 20220116154116_UpdateToIS6.Designer.cs
│ │ │ │ ├── 20221115182001_UpdateToIS61.cs
│ │ │ │ ├── 20221115182001_UpdateToIS61.Designer.cs
│ │ │ │ ├── 20240206133328_IdentityServerV7.cs
│ │ │ │ ├── 20240206133328_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ ├── IdentityServerGrants
│ │ │ │ ├── 20191119164007_DbInit.cs
│ │ │ │ ├── 20191119164007_DbInit.Designer.cs
│ │ │ │ ├── 20201030101834_UpdateIdentityServerToVersion4.cs
│ │ │ │ ├── 20201030101834_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ ├── 20211111131819_AddIdentityServerKeys.cs
│ │ │ │ ├── 20211111131819_AddIdentityServerKeys.Designer.cs
│ │ │ │ ├── 20221115181936_UpdateToIS61.cs
│ │ │ │ ├── 20221115181936_UpdateToIS61.Designer.cs
│ │ │ │ ├── 20240206133332_IdentityServerV7.cs
│ │ │ │ ├── 20240206133332_IdentityServerV7.Designer.cs
│ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ └── Logging
│ │ │ ├── 20191119163936_DbInit.cs
│ │ │ ├── 20191119163936_DbInit.Designer.cs
│ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ └── Skoruba.Duende.IdentityServer.Admin.EntityFramework.SqlServer.csproj
│ ├── Skoruba.Duende.IdentityServer.Admin.UI
│ │ ├── Areas
│ │ │ └── AdminUI
│ │ │ ├── Controllers
│ │ │ │ ├── AccountController.cs
│ │ │ │ ├── BaseController.cs
│ │ │ │ ├── ConfigurationController.cs
│ │ │ │ ├── GrantController.cs
│ │ │ │ ├── HomeController.cs
│ │ │ │ ├── IdentityController.cs
│ │ │ │ ├── IdentityProviderController.cs
│ │ │ │ ├── KeyController.cs
│ │ │ │ └── LogController.cs
│ │ │ └── Views
│ │ │ ├── Account
│ │ │ │ └── AccessDenied.cshtml
│ │ │ ├── Configuration
│ │ │ │ ├── ApiResource
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── ApiResource.cshtml
│ │ │ │ ├── ApiResourceDelete.cshtml
│ │ │ │ ├── ApiResourceProperties.cshtml
│ │ │ │ ├── ApiResourcePropertyDelete.cshtml
│ │ │ │ ├── ApiResources.cshtml
│ │ │ │ ├── ApiScope
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── ApiScope.cshtml
│ │ │ │ ├── ApiScopeDelete.cshtml
│ │ │ │ ├── ApiScopeProperties.cshtml
│ │ │ │ ├── ApiScopePropertyDelete.cshtml
│ │ │ │ ├── ApiScopes.cshtml
│ │ │ │ ├── ApiSecretDelete.cshtml
│ │ │ │ ├── ApiSecrets.cshtml
│ │ │ │ ├── Client
│ │ │ │ │ ├── Section
│ │ │ │ │ │ ├── ActionButtons.cshtml
│ │ │ │ │ │ ├── Advanced.cshtml
│ │ │ │ │ │ ├── Authentication.cshtml
│ │ │ │ │ │ ├── ClientProperties.cshtml
│ │ │ │ │ │ ├── Consent.cshtml
│ │ │ │ │ │ ├── DeviceFlow.cshtml
│ │ │ │ │ │ ├── GrantTypes.cshtml
│ │ │ │ │ │ ├── Label.cshtml
│ │ │ │ │ │ ├── Name.cshtml
│ │ │ │ │ │ ├── Resources.cshtml
│ │ │ │ │ │ ├── Token.cshtml
│ │ │ │ │ │ └── Urls.cshtml
│ │ │ │ │ └── Settings.cshtml
│ │ │ │ ├── ClientClaimDelete.cshtml
│ │ │ │ ├── ClientClaims.cshtml
│ │ │ │ ├── ClientClone.cshtml
│ │ │ │ ├── Client.cshtml
│ │ │ │ ├── ClientDelete.cshtml
│ │ │ │ ├── ClientProperties.cshtml
│ │ │ │ ├── ClientPropertyDelete.cshtml
│ │ │ │ ├── Clients.cshtml
│ │ │ │ ├── ClientSecretDelete.cshtml
│ │ │ │ ├── ClientSecrets.cshtml
│ │ │ │ ├── IdentityResource
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── IdentityResource.cshtml
│ │ │ │ ├── IdentityResourceDelete.cshtml
│ │ │ │ ├── IdentityResourceProperties.cshtml
│ │ │ │ ├── IdentityResourcePropertyDelete.cshtml
│ │ │ │ └── IdentityResources.cshtml
│ │ │ ├── Grant
│ │ │ │ ├── PersistedGrant.cshtml
│ │ │ │ ├── PersistedGrantDelete.cshtml
│ │ │ │ └── PersistedGrants.cshtml
│ │ │ ├── Home
│ │ │ │ ├── Error.cshtml
│ │ │ │ └── Index.cshtml
│ │ │ ├── Identity
│ │ │ │ ├── Role
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── RoleClaims.cshtml
│ │ │ │ ├── RoleClaimsDelete.cshtml
│ │ │ │ ├── Role.cshtml
│ │ │ │ ├── RoleDelete.cshtml
│ │ │ │ ├── Roles.cshtml
│ │ │ │ ├── RoleUsers.cshtml
│ │ │ │ ├── User
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── UserChangePassword.cshtml
│ │ │ │ ├── UserClaims.cshtml
│ │ │ │ ├── UserClaimsDelete.cshtml
│ │ │ │ ├── UserDelete.cshtml
│ │ │ │ ├── UserProfile.cshtml
│ │ │ │ ├── UserProviders.cshtml
│ │ │ │ ├── UserProvidersDelete.cshtml
│ │ │ │ ├── UserRoles.cshtml
│ │ │ │ ├── UserRolesDelete.cshtml
│ │ │ │ └── Users.cshtml
│ │ │ ├── IdentityProvider
│ │ │ │ ├── IdentityProvider
│ │ │ │ │ └── Section
│ │ │ │ │ └── Label.cshtml
│ │ │ │ ├── IdentityProvider.cshtml
│ │ │ │ ├── IdentityProviderDelete.cshtml
│ │ │ │ └── IdentityProviders.cshtml
│ │ │ ├── Key
│ │ │ │ ├── KeyDelete.cshtml
│ │ │ │ └── Keys.cshtml
│ │ │ ├── Log
│ │ │ │ ├── AuditLog.cshtml
│ │ │ │ └── ErrorsLog.cshtml
│ │ │ ├── Shared
│ │ │ │ ├── Common
│ │ │ │ │ ├── ApplicationVersion.cshtml
│ │ │ │ │ ├── ErrorPage.cshtml
│ │ │ │ │ ├── Notification.cshtml
│ │ │ │ │ ├── Pager.cshtml
│ │ │ │ │ ├── PagerDynamic.cshtml
│ │ │ │ │ ├── Search.cshtml
│ │ │ │ │ ├── SelectLanguage.cshtml
│ │ │ │ │ ├── SelectTheme.cshtml
│ │ │ │ │ └── ThemeResources.cshtml
│ │ │ │ ├── Components
│ │ │ │ │ └── IdentityServerLink
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── Error.cshtml
│ │ │ │ └── _Layout.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ ├── Configuration
│ │ │ ├── AdminConfiguration.cs
│ │ │ ├── ApplicationParts
│ │ │ │ ├── GenericControllerRouteConvention.cs
│ │ │ │ └── GenericTypeControllerFeatureProvider.cs
│ │ │ ├── AuditLoggingConfiguration.cs
│ │ │ ├── Constants
│ │ │ │ ├── AuthenticationConsts.cs
│ │ │ │ ├── AuthorizationConsts.cs
│ │ │ │ ├── CommonConsts.cs
│ │ │ │ └── ConfigurationConsts.cs
│ │ │ ├── CultureConfiguration.cs
│ │ │ ├── HttpConfiguration.cs
│ │ │ ├── SecurityConfiguration.cs
│ │ │ └── TestingConfiguration.cs
│ │ ├── ExceptionHandling
│ │ │ └── ControllerExceptionFilterAttribute.cs
│ │ ├── gulpfile.js
│ │ ├── Helpers
│ │ │ ├── ApplicationBuilder
│ │ │ │ └── AdminUIApplicationBuilderExtensions.cs
│ │ │ ├── DateTimeHelpers.cs
│ │ │ ├── DependencyInjection
│ │ │ │ ├── AdminUIServiceCollectionExtensions.cs
│ │ │ │ └── IdentityServerAdminUIOptions.cs
│ │ │ ├── Identity
│ │ │ │ └── IdentityErrorMessages.cs
│ │ │ ├── Localization
│ │ │ │ ├── GenericServiceLocalizer.cs
│ │ │ │ ├── IGenericControllerLocalizer.cs
│ │ │ │ └── ResourceViewLocalizer.cs
│ │ │ ├── MD5HashHelper.cs
│ │ │ ├── NotificationHelpers.cs
│ │ │ ├── PagerHelpers.cs
│ │ │ ├── StartupHelpers.cs
│ │ │ ├── TagHelpers
│ │ │ │ ├── GravatarTagHelper.cs
│ │ │ │ ├── PickerTagHelper.cs
│ │ │ │ └── SwitchTagHelper.cs
│ │ │ └── UrlHelpers.cs
│ │ ├── Middlewares
│ │ │ └── AuthenticatedTestRequestMiddleware.cs
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── Resources
│ │ │ ├── Areas
│ │ │ │ └── AdminUI
│ │ │ │ ├── Controllers
│ │ │ │ │ ├── ConfigurationController.da.resx
│ │ │ │ │ ├── ConfigurationController.de.resx
│ │ │ │ │ ├── ConfigurationController.en.resx
│ │ │ │ │ ├── ConfigurationController.es.resx
│ │ │ │ │ ├── ConfigurationController.fa.resx
│ │ │ │ │ ├── ConfigurationController.fi.resx
│ │ │ │ │ ├── ConfigurationController.fr.resx
│ │ │ │ │ ├── ConfigurationController.nl.resx
│ │ │ │ │ ├── ConfigurationController.pt.resx
│ │ │ │ │ ├── ConfigurationController.ru.resx
│ │ │ │ │ ├── ConfigurationController.sv.resx
│ │ │ │ │ ├── ConfigurationController.zh.resx
│ │ │ │ │ ├── GrantController.da.resx
│ │ │ │ │ ├── GrantController.de.resx
│ │ │ │ │ ├── GrantController.en.resx
│ │ │ │ │ ├── GrantController.es.resx
│ │ │ │ │ ├── GrantController.fa.resx
│ │ │ │ │ ├── GrantController.fi.resx
│ │ │ │ │ ├── GrantController.fr.resx
│ │ │ │ │ ├── GrantController.nl.resx
│ │ │ │ │ ├── GrantController.pt.resx
│ │ │ │ │ ├── GrantController.ru.resx
│ │ │ │ │ ├── GrantController.sv.resx
│ │ │ │ │ ├── GrantController.zh.resx
│ │ │ │ │ ├── IdentityController.da.resx
│ │ │ │ │ ├── IdentityController.de.resx
│ │ │ │ │ ├── IdentityController.en.resx
│ │ │ │ │ ├── IdentityController.es.resx
│ │ │ │ │ ├── IdentityController.fa.resx
│ │ │ │ │ ├── IdentityController.fi.resx
│ │ │ │ │ ├── IdentityController.fr.resx
│ │ │ │ │ ├── IdentityController.nl.resx
│ │ │ │ │ ├── IdentityController.pt.resx
│ │ │ │ │ ├── IdentityController.ru.resx
│ │ │ │ │ ├── IdentityController.sv.resx
│ │ │ │ │ ├── IdentityController.zh.resx
│ │ │ │ │ ├── IdentityProviderController.da.resx
│ │ │ │ │ ├── IdentityProviderController.de.resx
│ │ │ │ │ ├── IdentityProviderController.en.resx
│ │ │ │ │ ├── IdentityProviderController.es.resx
│ │ │ │ │ ├── IdentityProviderController.fa.resx
│ │ │ │ │ ├── IdentityProviderController.fi.resx
│ │ │ │ │ ├── IdentityProviderController.fr.resx
│ │ │ │ │ ├── IdentityProviderController.nl.resx
│ │ │ │ │ ├── IdentityProviderController.pt.resx
│ │ │ │ │ ├── IdentityProviderController.ru.resx
│ │ │ │ │ ├── IdentityProviderController.sv.resx
│ │ │ │ │ └── IdentityProviderController.zh.resx
│ │ │ │ ├── Helpers
│ │ │ │ │ └── Identity
│ │ │ │ │ └── IdentityErrorMessages.nl.resx
│ │ │ │ ├── Services
│ │ │ │ │ ├── ApiResourceService.nl.resx
│ │ │ │ │ ├── ClientService.nl.resx
│ │ │ │ │ ├── IdentityResourceService.nl.resx
│ │ │ │ │ ├── IdentityService.nl.resx
│ │ │ │ │ └── PersistedGrantService.nl.resx
│ │ │ │ └── Views
│ │ │ │ ├── Account
│ │ │ │ │ ├── AccessDenied.da.resx
│ │ │ │ │ ├── AccessDenied.de.resx
│ │ │ │ │ ├── AccessDenied.en.resx
│ │ │ │ │ ├── AccessDenied.es.resx
│ │ │ │ │ ├── AccessDenied.fa.resx
│ │ │ │ │ ├── AccessDenied.fi.resx
│ │ │ │ │ ├── AccessDenied.fr.resx
│ │ │ │ │ ├── AccessDenied.nl.resx
│ │ │ │ │ ├── AccessDenied.pt.resx
│ │ │ │ │ ├── AccessDenied.ru.resx
│ │ │ │ │ ├── AccessDenied.sv.resx
│ │ │ │ │ └── AccessDenied.zh.resx
│ │ │ │ ├── Configuration
│ │ │ │ │ ├── ApiResource
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── ApiResource.da.resx
│ │ │ │ │ ├── ApiResourceDelete.da.resx
│ │ │ │ │ ├── ApiResourceDelete.de.resx
│ │ │ │ │ ├── ApiResourceDelete.en.resx
│ │ │ │ │ ├── ApiResourceDelete.es.resx
│ │ │ │ │ ├── ApiResourceDelete.fa.resx
│ │ │ │ │ ├── ApiResourceDelete.fi.resx
│ │ │ │ │ ├── ApiResourceDelete.fr.resx
│ │ │ │ │ ├── ApiResourceDelete.nl.resx
│ │ │ │ │ ├── ApiResourceDelete.pt.resx
│ │ │ │ │ ├── ApiResourceDelete.ru.resx
│ │ │ │ │ ├── ApiResourceDelete.sv.resx
│ │ │ │ │ ├── ApiResourceDelete.zh.resx
│ │ │ │ │ ├── ApiResource.de.resx
│ │ │ │ │ ├── ApiResource.en.resx
│ │ │ │ │ ├── ApiResource.es.resx
│ │ │ │ │ ├── ApiResource.fa.resx
│ │ │ │ │ ├── ApiResource.fi.resx
│ │ │ │ │ ├── ApiResource.fr.resx
│ │ │ │ │ ├── ApiResource.nl.resx
│ │ │ │ │ ├── ApiResourceProperties.da.resx
│ │ │ │ │ ├── ApiResourceProperties.de.resx
│ │ │ │ │ ├── ApiResourceProperties.en.resx
│ │ │ │ │ ├── ApiResourceProperties.es.resx
│ │ │ │ │ ├── ApiResourceProperties.fa.resx
│ │ │ │ │ ├── ApiResourceProperties.fi.resx
│ │ │ │ │ ├── ApiResourceProperties.fr.resx
│ │ │ │ │ ├── ApiResourceProperties.nl.resx
│ │ │ │ │ ├── ApiResourceProperties.pt.resx
│ │ │ │ │ ├── ApiResourceProperties.ru.resx
│ │ │ │ │ ├── ApiResourceProperties.sv.resx
│ │ │ │ │ ├── ApiResourceProperties.zh.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.da.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.de.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.en.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.es.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.fa.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.fi.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.fr.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.nl.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.pt.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.ru.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.sv.resx
│ │ │ │ │ ├── ApiResourcePropertyDelete.zh.resx
│ │ │ │ │ ├── ApiResource.pt.resx
│ │ │ │ │ ├── ApiResource.ru.resx
│ │ │ │ │ ├── ApiResources.da.resx
│ │ │ │ │ ├── ApiResources.de.resx
│ │ │ │ │ ├── ApiResources.en.resx
│ │ │ │ │ ├── ApiResources.es.resx
│ │ │ │ │ ├── ApiResources.fa.resx
│ │ │ │ │ ├── ApiResources.fi.resx
│ │ │ │ │ ├── ApiResources.fr.resx
│ │ │ │ │ ├── ApiResources.nl.resx
│ │ │ │ │ ├── ApiResources.pt.resx
│ │ │ │ │ ├── ApiResources.ru.resx
│ │ │ │ │ ├── ApiResources.sv.resx
│ │ │ │ │ ├── ApiResource.sv.resx
│ │ │ │ │ ├── ApiResources.zh.resx
│ │ │ │ │ ├── ApiResource.zh.resx
│ │ │ │ │ ├── ApiScope
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── ApiScope.da.resx
│ │ │ │ │ ├── ApiScopeDelete.da.resx
│ │ │ │ │ ├── ApiScopeDelete.de.resx
│ │ │ │ │ ├── ApiScopeDelete.en.resx
│ │ │ │ │ ├── ApiScopeDelete.es.resx
│ │ │ │ │ ├── ApiScopeDelete.fa.resx
│ │ │ │ │ ├── ApiScopeDelete.fi.resx
│ │ │ │ │ ├── ApiScopeDelete.fr.resx
│ │ │ │ │ ├── ApiScopeDelete.nl.resx
│ │ │ │ │ ├── ApiScopeDelete.pt.resx
│ │ │ │ │ ├── ApiScopeDelete.ru.resx
│ │ │ │ │ ├── ApiScopeDelete.sv.resx
│ │ │ │ │ ├── ApiScopeDelete.zh.resx
│ │ │ │ │ ├── ApiScope.de.resx
│ │ │ │ │ ├── ApiScope.en.resx
│ │ │ │ │ ├── ApiScope.es.resx
│ │ │ │ │ ├── ApiScope.fa.resx
│ │ │ │ │ ├── ApiScope.fi.resx
│ │ │ │ │ ├── ApiScope.fr.resx
│ │ │ │ │ ├── ApiScopeProperties.da.resx
│ │ │ │ │ ├── ApiScopeProperties.de.resx
│ │ │ │ │ ├── ApiScopeProperties.en.resx
│ │ │ │ │ ├── ApiScopeProperties.es.resx
│ │ │ │ │ ├── ApiScopeProperties.fa.resx
│ │ │ │ │ ├── ApiScopeProperties.fi.resx
│ │ │ │ │ ├── ApiScopeProperties.fr.resx
│ │ │ │ │ ├── ApiScopeProperties.pt.resx
│ │ │ │ │ ├── ApiScopeProperties.ru.resx
│ │ │ │ │ ├── ApiScopeProperties.sv.resx
│ │ │ │ │ ├── ApiScopeProperties.zh.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.da.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.de.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.en.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.es.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.fa.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.fi.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.fr.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.pt.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.ru.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.sv.resx
│ │ │ │ │ ├── ApiScopePropertyDelete.zh.resx
│ │ │ │ │ ├── ApiScope.pt.resx
│ │ │ │ │ ├── ApiScope.ru.resx
│ │ │ │ │ ├── ApiScopes.da.resx
│ │ │ │ │ ├── ApiScopes.de.resx
│ │ │ │ │ ├── ApiScopes.en.resx
│ │ │ │ │ ├── ApiScopes.es.resx
│ │ │ │ │ ├── ApiScopes.fa.resx
│ │ │ │ │ ├── ApiScopes.fi.resx
│ │ │ │ │ ├── ApiScopes.fr.resx
│ │ │ │ │ ├── ApiScopes.nl.resx
│ │ │ │ │ ├── ApiScopes.pt.resx
│ │ │ │ │ ├── ApiScopes.ru.resx
│ │ │ │ │ ├── ApiScopes.sv.resx
│ │ │ │ │ ├── ApiScope.sv.resx
│ │ │ │ │ ├── ApiScopes.zh.resx
│ │ │ │ │ ├── ApiScope.zh.resx
│ │ │ │ │ ├── ApiSecretDelete.da.resx
│ │ │ │ │ ├── ApiSecretDelete.de.resx
│ │ │ │ │ ├── ApiSecretDelete.en.resx
│ │ │ │ │ ├── ApiSecretDelete.es.resx
│ │ │ │ │ ├── ApiSecretDelete.fa.resx
│ │ │ │ │ ├── ApiSecretDelete.fi.resx
│ │ │ │ │ ├── ApiSecretDelete.fr.resx
│ │ │ │ │ ├── ApiSecretDelete.nl.resx
│ │ │ │ │ ├── ApiSecretDelete.pt.resx
│ │ │ │ │ ├── ApiSecretDelete.ru.resx
│ │ │ │ │ ├── ApiSecretDelete.sv.resx
│ │ │ │ │ ├── ApiSecretDelete.zh.resx
│ │ │ │ │ ├── ApiSecrets.da.resx
│ │ │ │ │ ├── ApiSecrets.de.resx
│ │ │ │ │ ├── ApiSecrets.en.resx
│ │ │ │ │ ├── ApiSecrets.es.resx
│ │ │ │ │ ├── ApiSecrets.fa.resx
│ │ │ │ │ ├── ApiSecrets.fi.resx
│ │ │ │ │ ├── ApiSecrets.fr.resx
│ │ │ │ │ ├── ApiSecrets.nl.resx
│ │ │ │ │ ├── ApiSecrets.pt.resx
│ │ │ │ │ ├── ApiSecrets.ru.resx
│ │ │ │ │ ├── ApiSecrets.sv.resx
│ │ │ │ │ ├── ApiSecrets.zh.resx
│ │ │ │ │ ├── Client
│ │ │ │ │ │ ├── Section
│ │ │ │ │ │ │ ├── ActionButtons.da.resx
│ │ │ │ │ │ │ ├── ActionButtons.de.resx
│ │ │ │ │ │ │ ├── ActionButtons.en.resx
│ │ │ │ │ │ │ ├── ActionButtons.es.resx
│ │ │ │ │ │ │ ├── ActionButtons.fa.resx
│ │ │ │ │ │ │ ├── ActionButtons.fi.resx
│ │ │ │ │ │ │ ├── ActionButtons.fr.resx
│ │ │ │ │ │ │ ├── ActionButtons.nl.resx
│ │ │ │ │ │ │ ├── ActionButtons.pt.resx
│ │ │ │ │ │ │ ├── ActionButtons.ru.resx
│ │ │ │ │ │ │ ├── ActionButtons.sv.resx
│ │ │ │ │ │ │ ├── ActionButtons.zh.resx
│ │ │ │ │ │ │ ├── Advanced.da.resx
│ │ │ │ │ │ │ ├── Advanced.de.resx
│ │ │ │ │ │ │ ├── Advanced.en.resx
│ │ │ │ │ │ │ ├── Advanced.es.resx
│ │ │ │ │ │ │ ├── Advanced.fa.resx
│ │ │ │ │ │ │ ├── Advanced.fi.resx
│ │ │ │ │ │ │ ├── Advanced.fr.resx
│ │ │ │ │ │ │ ├── Advanced.nl.resx
│ │ │ │ │ │ │ ├── Advanced.pt.resx
│ │ │ │ │ │ │ ├── Advanced.ru.resx
│ │ │ │ │ │ │ ├── Advanced.sv.resx
│ │ │ │ │ │ │ ├── Advanced.zh.resx
│ │ │ │ │ │ │ ├── Authentication.da.resx
│ │ │ │ │ │ │ ├── Authentication.de.resx
│ │ │ │ │ │ │ ├── Authentication.en.resx
│ │ │ │ │ │ │ ├── Authentication.es.resx
│ │ │ │ │ │ │ ├── Authentication.fa.resx
│ │ │ │ │ │ │ ├── Authentication.fi.resx
│ │ │ │ │ │ │ ├── Authentication.fr.resx
│ │ │ │ │ │ │ ├── Authentication.nl.resx
│ │ │ │ │ │ │ ├── Authentication.pt.resx
│ │ │ │ │ │ │ ├── Authentication.ru.resx
│ │ │ │ │ │ │ ├── Authentication.sv.resx
│ │ │ │ │ │ │ ├── Authentication.zh.resx
│ │ │ │ │ │ │ ├── ClientProperties.da.resx
│ │ │ │ │ │ │ ├── ClientProperties.de.resx
│ │ │ │ │ │ │ ├── ClientProperties.en.resx
│ │ │ │ │ │ │ ├── ClientProperties.es.resx
│ │ │ │ │ │ │ ├── ClientProperties.fa.resx
│ │ │ │ │ │ │ ├── ClientProperties.fi.resx
│ │ │ │ │ │ │ ├── ClientProperties.fr.resx
│ │ │ │ │ │ │ ├── ClientProperties.nl.resx
│ │ │ │ │ │ │ ├── ClientProperties.pt.resx
│ │ │ │ │ │ │ ├── ClientProperties.ru.resx
│ │ │ │ │ │ │ ├── ClientProperties.sv.resx
│ │ │ │ │ │ │ ├── ClientProperties.zh.resx
│ │ │ │ │ │ │ ├── Consent.de.resx
│ │ │ │ │ │ │ ├── Consent.en.resx
│ │ │ │ │ │ │ ├── Consent.es.resx
│ │ │ │ │ │ │ ├── Consent.fa.resx
│ │ │ │ │ │ │ ├── Consent.fi.resx
│ │ │ │ │ │ │ ├── Consent.fr.resx
│ │ │ │ │ │ │ ├── Consent.nl.resx
│ │ │ │ │ │ │ ├── Consent.pt.resx
│ │ │ │ │ │ │ ├── Consent.ru.resx
│ │ │ │ │ │ │ ├── Consent.sv.resx
│ │ │ │ │ │ │ ├── Consent.zh.resx
│ │ │ │ │ │ │ ├── DeviceFlow.de.resx
│ │ │ │ │ │ │ ├── DeviceFlow.en.resx
│ │ │ │ │ │ │ ├── DeviceFlow.es.resx
│ │ │ │ │ │ │ ├── DeviceFlow.fa.resx
│ │ │ │ │ │ │ ├── DeviceFlow.fr.resx
│ │ │ │ │ │ │ ├── DeviceFlow.nl.resx
│ │ │ │ │ │ │ ├── DeviceFlow.pt.resx
│ │ │ │ │ │ │ ├── DeviceFlow.sv.resx
│ │ │ │ │ │ │ ├── DeviceFlow.zh.resx
│ │ │ │ │ │ │ ├── GrantTypes.de.resx
│ │ │ │ │ │ │ ├── GrantTypes.en.resx
│ │ │ │ │ │ │ ├── GrantTypes.es.resx
│ │ │ │ │ │ │ ├── GrantTypes.fa.resx
│ │ │ │ │ │ │ ├── GrantTypes.fi.resx
│ │ │ │ │ │ │ ├── GrantTypes.fr.resx
│ │ │ │ │ │ │ ├── GrantTypes.nl.resx
│ │ │ │ │ │ │ ├── GrantTypes.pt.resx
│ │ │ │ │ │ │ ├── GrantTypes.ru.resx
│ │ │ │ │ │ │ ├── GrantTypes.sv.resx
│ │ │ │ │ │ │ ├── GrantTypes.zh.resx
│ │ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ │ ├── Label.resx
│ │ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ │ ├── Label.zh.resx
│ │ │ │ │ │ │ ├── Name.de.resx
│ │ │ │ │ │ │ ├── Name.en.resx
│ │ │ │ │ │ │ ├── Name.es.resx
│ │ │ │ │ │ │ ├── Name.fa.resx
│ │ │ │ │ │ │ ├── Name.fi.resx
│ │ │ │ │ │ │ ├── Name.fr.resx
│ │ │ │ │ │ │ ├── Name.nl.resx
│ │ │ │ │ │ │ ├── Name.pt.resx
│ │ │ │ │ │ │ ├── Name.ru.resx
│ │ │ │ │ │ │ ├── Name.sv.resx
│ │ │ │ │ │ │ ├── Name.zh.resx
│ │ │ │ │ │ │ ├── Resources.da.resx
│ │ │ │ │ │ │ ├── Resources.de.resx
│ │ │ │ │ │ │ ├── Resources.en.resx
│ │ │ │ │ │ │ ├── Resources.es.resx
│ │ │ │ │ │ │ ├── Resources.fa.resx
│ │ │ │ │ │ │ ├── Resources.fi.resx
│ │ │ │ │ │ │ ├── Resources.fr.resx
│ │ │ │ │ │ │ ├── Resources.nl.resx
│ │ │ │ │ │ │ ├── Resources.pt.resx
│ │ │ │ │ │ │ ├── Resources.ru.resx
│ │ │ │ │ │ │ ├── Resources.sv.resx
│ │ │ │ │ │ │ ├── Resources.zh.resx
│ │ │ │ │ │ │ ├── Token.de.resx
│ │ │ │ │ │ │ ├── Token.en.resx
│ │ │ │ │ │ │ ├── Token.es.resx
│ │ │ │ │ │ │ ├── Token.fa.resx
│ │ │ │ │ │ │ ├── Token.fi.resx
│ │ │ │ │ │ │ ├── Token.fr.resx
│ │ │ │ │ │ │ ├── Token.nl.resx
│ │ │ │ │ │ │ ├── Token.pt.resx
│ │ │ │ │ │ │ ├── Token.ru.resx
│ │ │ │ │ │ │ ├── Token.sv.resx
│ │ │ │ │ │ │ ├── Token.zh.resx
│ │ │ │ │ │ │ ├── Urls.de.resx
│ │ │ │ │ │ │ ├── Urls.en.resx
│ │ │ │ │ │ │ ├── Urls.es.resx
│ │ │ │ │ │ │ ├── Urls.fa.resx
│ │ │ │ │ │ │ ├── Urls.fi.resx
│ │ │ │ │ │ │ ├── Urls.fr.resx
│ │ │ │ │ │ │ ├── Urls.nl.resx
│ │ │ │ │ │ │ ├── Urls.pt.resx
│ │ │ │ │ │ │ ├── Urls.ru.resx
│ │ │ │ │ │ │ ├── Urls.sv.resx
│ │ │ │ │ │ │ └── Urls.zh.resx
│ │ │ │ │ │ ├── Settings.da.resx
│ │ │ │ │ │ ├── Settings.de.resx
│ │ │ │ │ │ ├── Settings.en.resx
│ │ │ │ │ │ ├── Settings.es.resx
│ │ │ │ │ │ ├── Settings.fa.resx
│ │ │ │ │ │ ├── Settings.fi.resx
│ │ │ │ │ │ ├── Settings.fr.resx
│ │ │ │ │ │ ├── Settings.nl.resx
│ │ │ │ │ │ ├── Settings.pt.resx
│ │ │ │ │ │ ├── Settings.ru.resx
│ │ │ │ │ │ ├── Settings.sv.resx
│ │ │ │ │ │ └── Settings.zh.resx
│ │ │ │ │ ├── ClientClaimDelete.da.resx
│ │ │ │ │ ├── ClientClaimDelete.de.resx
│ │ │ │ │ ├── ClientClaimDelete.en.resx
│ │ │ │ │ ├── ClientClaimDelete.es.resx
│ │ │ │ │ ├── ClientClaimDelete.fa.resx
│ │ │ │ │ ├── ClientClaimDelete.fi.resx
│ │ │ │ │ ├── ClientClaimDelete.fr.resx
│ │ │ │ │ ├── ClientClaimDelete.nl.resx
│ │ │ │ │ ├── ClientClaimDelete.pt.resx
│ │ │ │ │ ├── ClientClaimDelete.ru.resx
│ │ │ │ │ ├── ClientClaimDelete.sv.resx
│ │ │ │ │ ├── ClientClaimDelete.zh.resx
│ │ │ │ │ ├── ClientClaims.da.resx
│ │ │ │ │ ├── ClientClaims.de.resx
│ │ │ │ │ ├── ClientClaims.en.resx
│ │ │ │ │ ├── ClientClaims.es.resx
│ │ │ │ │ ├── ClientClaims.fa.resx
│ │ │ │ │ ├── ClientClaims.fi.resx
│ │ │ │ │ ├── ClientClaims.fr.resx
│ │ │ │ │ ├── ClientClaims.nl.resx
│ │ │ │ │ ├── ClientClaims.pt.resx
│ │ │ │ │ ├── ClientClaims.ru.resx
│ │ │ │ │ ├── ClientClaims.sv.resx
│ │ │ │ │ ├── ClientClaims.zh.resx
│ │ │ │ │ ├── ClientClone.da.resx
│ │ │ │ │ ├── ClientClone.de.resx
│ │ │ │ │ ├── ClientClone.en.resx
│ │ │ │ │ ├── ClientClone.es.resx
│ │ │ │ │ ├── ClientClone.fa.resx
│ │ │ │ │ ├── ClientClone.fi.resx
│ │ │ │ │ ├── ClientClone.fr.resx
│ │ │ │ │ ├── ClientClone.nl.resx
│ │ │ │ │ ├── ClientClone.pt.resx
│ │ │ │ │ ├── ClientClone.ru.resx
│ │ │ │ │ ├── ClientClone.sv.resx
│ │ │ │ │ ├── ClientClone.zh.resx
│ │ │ │ │ ├── Client.da.resx
│ │ │ │ │ ├── ClientDelete.da.resx
│ │ │ │ │ ├── ClientDelete.de.resx
│ │ │ │ │ ├── ClientDelete.en.resx
│ │ │ │ │ ├── ClientDelete.es.resx
│ │ │ │ │ ├── ClientDelete.fa.resx
│ │ │ │ │ ├── ClientDelete.fi.resx
│ │ │ │ │ ├── ClientDelete.fr.resx
│ │ │ │ │ ├── ClientDelete.nl.resx
│ │ │ │ │ ├── ClientDelete.pt.resx
│ │ │ │ │ ├── ClientDelete.ru.resx
│ │ │ │ │ ├── ClientDelete.sv.resx
│ │ │ │ │ ├── ClientDelete.zh.resx
│ │ │ │ │ ├── Client.de.resx
│ │ │ │ │ ├── Client.en.resx
│ │ │ │ │ ├── Client.es.resx
│ │ │ │ │ ├── Client.fa.resx
│ │ │ │ │ ├── Client.fi.resx
│ │ │ │ │ ├── Client.fr.resx
│ │ │ │ │ ├── Client.nl.resx
│ │ │ │ │ ├── ClientProperties.da.resx
│ │ │ │ │ ├── ClientProperties.de.resx
│ │ │ │ │ ├── ClientProperties.en.resx
│ │ │ │ │ ├── ClientProperties.es.resx
│ │ │ │ │ ├── ClientProperties.fa.resx
│ │ │ │ │ ├── ClientProperties.fi.resx
│ │ │ │ │ ├── ClientProperties.fr.resx
│ │ │ │ │ ├── ClientProperties.nl.resx
│ │ │ │ │ ├── ClientProperties.pt.resx
│ │ │ │ │ ├── ClientProperties.ru.resx
│ │ │ │ │ ├── ClientProperties.sv.resx
│ │ │ │ │ ├── ClientProperties.zh.resx
│ │ │ │ │ ├── ClientPropertyDelete.da.resx
│ │ │ │ │ ├── ClientPropertyDelete.de.resx
│ │ │ │ │ ├── ClientPropertyDelete.en.resx
│ │ │ │ │ ├── ClientPropertyDelete.es.resx
│ │ │ │ │ ├── ClientPropertyDelete.fa.resx
│ │ │ │ │ ├── ClientPropertyDelete.fi.resx
│ │ │ │ │ ├── ClientPropertyDelete.fr.resx
│ │ │ │ │ ├── ClientPropertyDelete.nl.resx
│ │ │ │ │ ├── ClientPropertyDelete.pt.resx
│ │ │ │ │ ├── ClientPropertyDelete.ru.resx
│ │ │ │ │ ├── ClientPropertyDelete.sv.resx
│ │ │ │ │ ├── ClientPropertyDelete.zh.resx
│ │ │ │ │ ├── Client.pt.resx
│ │ │ │ │ ├── Client.ru.resx
│ │ │ │ │ ├── Clients.da.resx
│ │ │ │ │ ├── Clients.de.resx
│ │ │ │ │ ├── ClientSecretDelete.da.resx
│ │ │ │ │ ├── ClientSecretDelete.de.resx
│ │ │ │ │ ├── ClientSecretDelete.en.resx
│ │ │ │ │ ├── ClientSecretDelete.es.resx
│ │ │ │ │ ├── ClientSecretDelete.fa.resx
│ │ │ │ │ ├── ClientSecretDelete.fi.resx
│ │ │ │ │ ├── ClientSecretDelete.fr.resx
│ │ │ │ │ ├── ClientSecretDelete.nl.resx
│ │ │ │ │ ├── ClientSecretDelete.pt.resx
│ │ │ │ │ ├── ClientSecretDelete.ru.resx
│ │ │ │ │ ├── ClientSecretDelete.sv.resx
│ │ │ │ │ ├── ClientSecretDelete.zh.resx
│ │ │ │ │ ├── ClientSecrets.da.resx
│ │ │ │ │ ├── ClientSecrets.de.resx
│ │ │ │ │ ├── ClientSecrets.en.resx
│ │ │ │ │ ├── ClientSecrets.es.resx
│ │ │ │ │ ├── ClientSecrets.fa.resx
│ │ │ │ │ ├── ClientSecrets.fi.resx
│ │ │ │ │ ├── ClientSecrets.fr.resx
│ │ │ │ │ ├── ClientSecrets.nl.resx
│ │ │ │ │ ├── ClientSecrets.pt.resx
│ │ │ │ │ ├── ClientSecrets.ru.resx
│ │ │ │ │ ├── ClientSecrets.sv.resx
│ │ │ │ │ ├── ClientSecrets.zh.resx
│ │ │ │ │ ├── Clients.en.resx
│ │ │ │ │ ├── Clients.es.resx
│ │ │ │ │ ├── Clients.fa.resx
│ │ │ │ │ ├── Clients.fi.resx
│ │ │ │ │ ├── Clients.fr.resx
│ │ │ │ │ ├── Clients.nl.resx
│ │ │ │ │ ├── Clients.pt.resx
│ │ │ │ │ ├── Clients.ru.resx
│ │ │ │ │ ├── Clients.sv.resx
│ │ │ │ │ ├── Client.sv.resx
│ │ │ │ │ ├── Clients.zh.resx
│ │ │ │ │ ├── Client.zh.resx
│ │ │ │ │ ├── IdentityResource
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── IdentityResource.da.resx
│ │ │ │ │ ├── IdentityResourceDelete.da.resx
│ │ │ │ │ ├── IdentityResourceDelete.de.resx
│ │ │ │ │ ├── IdentityResourceDelete.en.resx
│ │ │ │ │ ├── IdentityResourceDelete.es.resx
│ │ │ │ │ ├── IdentityResourceDelete.fa.resx
│ │ │ │ │ ├── IdentityResourceDelete.fi.resx
│ │ │ │ │ ├── IdentityResourceDelete.fr.resx
│ │ │ │ │ ├── IdentityResourceDelete.nl.resx
│ │ │ │ │ ├── IdentityResourceDelete.pt.resx
│ │ │ │ │ ├── IdentityResourceDelete.ru.resx
│ │ │ │ │ ├── IdentityResourceDelete.sv.resx
│ │ │ │ │ ├── IdentityResourceDelete.zh.resx
│ │ │ │ │ ├── IdentityResource.de.resx
│ │ │ │ │ ├── IdentityResource.en.resx
│ │ │ │ │ ├── IdentityResource.es.resx
│ │ │ │ │ ├── IdentityResource.fa.resx
│ │ │ │ │ ├── IdentityResource.fi.resx
│ │ │ │ │ ├── IdentityResource.fr.resx
│ │ │ │ │ ├── IdentityResource.nl.resx
│ │ │ │ │ ├── IdentityResourceProperties.da.resx
│ │ │ │ │ ├── IdentityResourceProperties.de.resx
│ │ │ │ │ ├── IdentityResourceProperties.en.resx
│ │ │ │ │ ├── IdentityResourceProperties.es.resx
│ │ │ │ │ ├── IdentityResourceProperties.fa.resx
│ │ │ │ │ ├── IdentityResourceProperties.fi.resx
│ │ │ │ │ ├── IdentityResourceProperties.fr.resx
│ │ │ │ │ ├── IdentityResourceProperties.nl.resx
│ │ │ │ │ ├── IdentityResourceProperties.pt.resx
│ │ │ │ │ ├── IdentityResourceProperties.ru.resx
│ │ │ │ │ ├── IdentityResourceProperties.sv.resx
│ │ │ │ │ ├── IdentityResourceProperties.zh.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.da.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.de.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.en.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.es.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.fa.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.fi.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.fr.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.nl.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.pt.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.ru.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.sv.resx
│ │ │ │ │ ├── IdentityResourcePropertyDelete.zh.resx
│ │ │ │ │ ├── IdentityResource.pt.resx
│ │ │ │ │ ├── IdentityResource.ru.resx
│ │ │ │ │ ├── IdentityResources.da.resx
│ │ │ │ │ ├── IdentityResources.de.resx
│ │ │ │ │ ├── IdentityResources.en.resx
│ │ │ │ │ ├── IdentityResources.es.resx
│ │ │ │ │ ├── IdentityResources.fa.resx
│ │ │ │ │ ├── IdentityResources.fi.resx
│ │ │ │ │ ├── IdentityResources.fr.resx
│ │ │ │ │ ├── IdentityResources.nl.resx
│ │ │ │ │ ├── IdentityResources.pt.resx
│ │ │ │ │ ├── IdentityResources.ru.resx
│ │ │ │ │ ├── IdentityResources.sv.resx
│ │ │ │ │ ├── IdentityResource.sv.resx
│ │ │ │ │ ├── IdentityResources.zh.resx
│ │ │ │ │ └── IdentityResource.zh.resx
│ │ │ │ ├── Grant
│ │ │ │ │ ├── PersistedGrant.da.resx
│ │ │ │ │ ├── PersistedGrantDelete.da.resx
│ │ │ │ │ ├── PersistedGrantDelete.de.resx
│ │ │ │ │ ├── PersistedGrantDelete.en.resx
│ │ │ │ │ ├── PersistedGrantDelete.es.resx
│ │ │ │ │ ├── PersistedGrantDelete.fa.resx
│ │ │ │ │ ├── PersistedGrantDelete.fi.resx
│ │ │ │ │ ├── PersistedGrantDelete.fr.resx
│ │ │ │ │ ├── PersistedGrantDelete.nl.resx
│ │ │ │ │ ├── PersistedGrantDelete.pt.resx
│ │ │ │ │ ├── PersistedGrantDelete.ru.resx
│ │ │ │ │ ├── PersistedGrantDelete.sv.resx
│ │ │ │ │ ├── PersistedGrantDelete.zh.resx
│ │ │ │ │ ├── PersistedGrant.de.resx
│ │ │ │ │ ├── PersistedGrant.en.resx
│ │ │ │ │ ├── PersistedGrant.es.resx
│ │ │ │ │ ├── PersistedGrant.fa.resx
│ │ │ │ │ ├── PersistedGrant.fi.resx
│ │ │ │ │ ├── PersistedGrant.fr.resx
│ │ │ │ │ ├── PersistedGrant.nl.resx
│ │ │ │ │ ├── PersistedGrant.pt.resx
│ │ │ │ │ ├── PersistedGrant.ru.resx
│ │ │ │ │ ├── PersistedGrants.da.resx
│ │ │ │ │ ├── PersistedGrants.de.resx
│ │ │ │ │ ├── PersistedGrants.en.resx
│ │ │ │ │ ├── PersistedGrants.es.resx
│ │ │ │ │ ├── PersistedGrants.fa.resx
│ │ │ │ │ ├── PersistedGrants.fi.resx
│ │ │ │ │ ├── PersistedGrants.fr.resx
│ │ │ │ │ ├── PersistedGrants.nl.resx
│ │ │ │ │ ├── PersistedGrants.pt.resx
│ │ │ │ │ ├── PersistedGrants.ru.resx
│ │ │ │ │ ├── PersistedGrants.sv.resx
│ │ │ │ │ ├── PersistedGrant.sv.resx
│ │ │ │ │ ├── PersistedGrants.zh.resx
│ │ │ │ │ └── PersistedGrant.zh.resx
│ │ │ │ ├── Home
│ │ │ │ │ ├── Index.da.resx
│ │ │ │ │ ├── Index.de.resx
│ │ │ │ │ ├── Index.en.resx
│ │ │ │ │ ├── Index.es.resx
│ │ │ │ │ ├── Index.fa.resx
│ │ │ │ │ ├── Index.fi.resx
│ │ │ │ │ ├── Index.fr.resx
│ │ │ │ │ ├── Index.nl.resx
│ │ │ │ │ ├── Index.pt.resx
│ │ │ │ │ ├── Index.ru.resx
│ │ │ │ │ ├── Index.sv.resx
│ │ │ │ │ └── Index.zh.resx
│ │ │ │ ├── Identity
│ │ │ │ │ ├── Role
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── RoleClaims.da.resx
│ │ │ │ │ ├── RoleClaimsDelete.da.resx
│ │ │ │ │ ├── RoleClaimsDelete.de.resx
│ │ │ │ │ ├── RoleClaimsDelete.en.resx
│ │ │ │ │ ├── RoleClaimsDelete.es.resx
│ │ │ │ │ ├── RoleClaimsDelete.fa.resx
│ │ │ │ │ ├── RoleClaimsDelete.fi.resx
│ │ │ │ │ ├── RoleClaimsDelete.fr.resx
│ │ │ │ │ ├── RoleClaimsDelete.nl.resx
│ │ │ │ │ ├── RoleClaimsDelete.pt.resx
│ │ │ │ │ ├── RoleClaimsDelete.ru.resx
│ │ │ │ │ ├── RoleClaimsDelete.sv.resx
│ │ │ │ │ ├── RoleClaimsDelete.zh.resx
│ │ │ │ │ ├── RoleClaims.de.resx
│ │ │ │ │ ├── RoleClaims.en.resx
│ │ │ │ │ ├── RoleClaims.es.resx
│ │ │ │ │ ├── RoleClaims.fa.resx
│ │ │ │ │ ├── RoleClaims.fi.resx
│ │ │ │ │ ├── RoleClaims.fr.resx
│ │ │ │ │ ├── RoleClaims.nl.resx
│ │ │ │ │ ├── RoleClaims.pt.resx
│ │ │ │ │ ├── RoleClaims.ru.resx
│ │ │ │ │ ├── RoleClaims.sv.resx
│ │ │ │ │ ├── RoleClaims.zh.resx
│ │ │ │ │ ├── Role.da.resx
│ │ │ │ │ ├── RoleDelete.da.resx
│ │ │ │ │ ├── RoleDelete.de.resx
│ │ │ │ │ ├── RoleDelete.en.resx
│ │ │ │ │ ├── RoleDelete.es.resx
│ │ │ │ │ ├── RoleDelete.fa.resx
│ │ │ │ │ ├── RoleDelete.fi.resx
│ │ │ │ │ ├── RoleDelete.fr.resx
│ │ │ │ │ ├── RoleDelete.nl.resx
│ │ │ │ │ ├── RoleDelete.pt.resx
│ │ │ │ │ ├── RoleDelete.ru.resx
│ │ │ │ │ ├── RoleDelete.sv.resx
│ │ │ │ │ ├── RoleDelete.zh.resx
│ │ │ │ │ ├── Role.de.resx
│ │ │ │ │ ├── Role.en.resx
│ │ │ │ │ ├── Role.es.resx
│ │ │ │ │ ├── Role.fa.resx
│ │ │ │ │ ├── Role.fi.resx
│ │ │ │ │ ├── Role.fr.resx
│ │ │ │ │ ├── Role.nl.resx
│ │ │ │ │ ├── Role.pt.resx
│ │ │ │ │ ├── Role.ru.resx
│ │ │ │ │ ├── Roles.da.resx
│ │ │ │ │ ├── Roles.de.resx
│ │ │ │ │ ├── Roles.en.resx
│ │ │ │ │ ├── Roles.es.resx
│ │ │ │ │ ├── Roles.fa.resx
│ │ │ │ │ ├── Roles.fi.resx
│ │ │ │ │ ├── Roles.fr.resx
│ │ │ │ │ ├── Roles.nl.resx
│ │ │ │ │ ├── Roles.pt.resx
│ │ │ │ │ ├── Roles.ru.resx
│ │ │ │ │ ├── Roles.sv.resx
│ │ │ │ │ ├── Role.sv.resx
│ │ │ │ │ ├── Roles.zh.resx
│ │ │ │ │ ├── RoleUsers.da.resx
│ │ │ │ │ ├── RoleUsers.de.resx
│ │ │ │ │ ├── RoleUsers.en.resx
│ │ │ │ │ ├── RoleUsers.es.resx
│ │ │ │ │ ├── RoleUsers.fa.resx
│ │ │ │ │ ├── RoleUsers.fi.resx
│ │ │ │ │ ├── RoleUsers.fr.resx
│ │ │ │ │ ├── RoleUsers.nl.resx
│ │ │ │ │ ├── RoleUsers.pt.resx
│ │ │ │ │ ├── RoleUsers.resx
│ │ │ │ │ ├── RoleUsers.ru.resx
│ │ │ │ │ ├── RoleUsers.sv.resx
│ │ │ │ │ ├── RoleUsers.zh.resx
│ │ │ │ │ ├── Role.zh.resx
│ │ │ │ │ ├── User
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── UserChangePassword.da.resx
│ │ │ │ │ ├── UserChangePassword.de.resx
│ │ │ │ │ ├── UserChangePassword.en.resx
│ │ │ │ │ ├── UserChangePassword.es.resx
│ │ │ │ │ ├── UserChangePassword.fa.resx
│ │ │ │ │ ├── UserChangePassword.fi.resx
│ │ │ │ │ ├── UserChangePassword.fr.resx
│ │ │ │ │ ├── UserChangePassword.nl.resx
│ │ │ │ │ ├── UserChangePassword.pt.resx
│ │ │ │ │ ├── UserChangePassword.ru.resx
│ │ │ │ │ ├── UserChangePassword.sv.resx
│ │ │ │ │ ├── UserChangePassword.zh.resx
│ │ │ │ │ ├── UserClaims.da.resx
│ │ │ │ │ ├── UserClaimsDelete.da.resx
│ │ │ │ │ ├── UserClaimsDelete.de.resx
│ │ │ │ │ ├── UserClaimsDelete.en.resx
│ │ │ │ │ ├── UserClaimsDelete.es.resx
│ │ │ │ │ ├── UserClaimsDelete.fa.resx
│ │ │ │ │ ├── UserClaimsDelete.fi.resx
│ │ │ │ │ ├── UserClaimsDelete.fr.resx
│ │ │ │ │ ├── UserClaimsDelete.nl.resx
│ │ │ │ │ ├── UserClaimsDelete.pt.resx
│ │ │ │ │ ├── UserClaimsDelete.ru.resx
│ │ │ │ │ ├── UserClaimsDelete.sv.resx
│ │ │ │ │ ├── UserClaimsDelete.zh.resx
│ │ │ │ │ ├── UserClaims.de.resx
│ │ │ │ │ ├── UserClaims.en.resx
│ │ │ │ │ ├── UserClaims.es.resx
│ │ │ │ │ ├── UserClaims.fa.resx
│ │ │ │ │ ├── UserClaims.fi.resx
│ │ │ │ │ ├── UserClaims.fr.resx
│ │ │ │ │ ├── UserClaims.nl.resx
│ │ │ │ │ ├── UserClaims.pt.resx
│ │ │ │ │ ├── UserClaims.ru.resx
│ │ │ │ │ ├── UserClaims.sv.resx
│ │ │ │ │ ├── UserClaims.zh.resx
│ │ │ │ │ ├── UserDelete.da.resx
│ │ │ │ │ ├── UserDelete.de.resx
│ │ │ │ │ ├── UserDelete.en.resx
│ │ │ │ │ ├── UserDelete.es.resx
│ │ │ │ │ ├── UserDelete.fa.resx
│ │ │ │ │ ├── UserDelete.fi.resx
│ │ │ │ │ ├── UserDelete.fr.resx
│ │ │ │ │ ├── UserDelete.nl.resx
│ │ │ │ │ ├── UserDelete.pt.resx
│ │ │ │ │ ├── UserDelete.ru.resx
│ │ │ │ │ ├── UserDelete.sv.resx
│ │ │ │ │ ├── UserDelete.zh.resx
│ │ │ │ │ ├── UserProfile.da.resx
│ │ │ │ │ ├── UserProfile.de.resx
│ │ │ │ │ ├── UserProfile.en.resx
│ │ │ │ │ ├── UserProfile.es.resx
│ │ │ │ │ ├── UserProfile.fa.resx
│ │ │ │ │ ├── UserProfile.fi.resx
│ │ │ │ │ ├── UserProfile.fr.resx
│ │ │ │ │ ├── UserProfile.nl.resx
│ │ │ │ │ ├── UserProfile.pt.resx
│ │ │ │ │ ├── UserProfile.ru.resx
│ │ │ │ │ ├── UserProfile.sv.resx
│ │ │ │ │ ├── UserProfile.zh.resx
│ │ │ │ │ ├── UserProviders.da.resx
│ │ │ │ │ ├── UserProvidersDelete.da.resx
│ │ │ │ │ ├── UserProvidersDelete.de.resx
│ │ │ │ │ ├── UserProvidersDelete.en.resx
│ │ │ │ │ ├── UserProvidersDelete.es.resx
│ │ │ │ │ ├── UserProvidersDelete.fa.resx
│ │ │ │ │ ├── UserProvidersDelete.fi.resx
│ │ │ │ │ ├── UserProvidersDelete.fr.resx
│ │ │ │ │ ├── UserProvidersDelete.nl.resx
│ │ │ │ │ ├── UserProvidersDelete.pt.resx
│ │ │ │ │ ├── UserProvidersDelete.ru.resx
│ │ │ │ │ ├── UserProvidersDelete.sv.resx
│ │ │ │ │ ├── UserProvidersDelete.zh.resx
│ │ │ │ │ ├── UserProviders.de.resx
│ │ │ │ │ ├── UserProviders.en.resx
│ │ │ │ │ ├── UserProviders.es.resx
│ │ │ │ │ ├── UserProviders.fa.resx
│ │ │ │ │ ├── UserProviders.fi.resx
│ │ │ │ │ ├── UserProviders.fr.resx
│ │ │ │ │ ├── UserProviders.nl.resx
│ │ │ │ │ ├── UserProviders.pt.resx
│ │ │ │ │ ├── UserProviders.ru.resx
│ │ │ │ │ ├── UserProviders.sv.resx
│ │ │ │ │ ├── UserProviders.zh.resx
│ │ │ │ │ ├── UserRoles.da.resx
│ │ │ │ │ ├── UserRolesDelete.da.resx
│ │ │ │ │ ├── UserRolesDelete.de.resx
│ │ │ │ │ ├── UserRolesDelete.en.resx
│ │ │ │ │ ├── UserRolesDelete.es.resx
│ │ │ │ │ ├── UserRolesDelete.fa.resx
│ │ │ │ │ ├── UserRolesDelete.fi.resx
│ │ │ │ │ ├── UserRolesDelete.fr.resx
│ │ │ │ │ ├── UserRolesDelete.nl.resx
│ │ │ │ │ ├── UserRolesDelete.pt.resx
│ │ │ │ │ ├── UserRolesDelete.ru.resx
│ │ │ │ │ ├── UserRolesDelete.sv.resx
│ │ │ │ │ ├── UserRolesDelete.zh.resx
│ │ │ │ │ ├── UserRoles.de.resx
│ │ │ │ │ ├── UserRoles.en.resx
│ │ │ │ │ ├── UserRoles.es.resx
│ │ │ │ │ ├── UserRoles.fa.resx
│ │ │ │ │ ├── UserRoles.fi.resx
│ │ │ │ │ ├── UserRoles.fr.resx
│ │ │ │ │ ├── UserRoles.nl.resx
│ │ │ │ │ ├── UserRoles.pt.resx
│ │ │ │ │ ├── UserRoles.ru.resx
│ │ │ │ │ ├── UserRoles.sv.resx
│ │ │ │ │ ├── UserRoles.zh.resx
│ │ │ │ │ ├── Users.da.resx
│ │ │ │ │ ├── Users.de.resx
│ │ │ │ │ ├── Users.en.resx
│ │ │ │ │ ├── Users.es.resx
│ │ │ │ │ ├── Users.fa.resx
│ │ │ │ │ ├── Users.fi.resx
│ │ │ │ │ ├── Users.fr.resx
│ │ │ │ │ ├── Users.nl.resx
│ │ │ │ │ ├── Users.pt.resx
│ │ │ │ │ ├── Users.ru.resx
│ │ │ │ │ ├── Users.sv.resx
│ │ │ │ │ └── Users.zh.resx
│ │ │ │ ├── IdentityProvider
│ │ │ │ │ ├── IdentityProvider
│ │ │ │ │ │ └── Section
│ │ │ │ │ │ ├── Label.da.resx
│ │ │ │ │ │ ├── Label.de.resx
│ │ │ │ │ │ ├── Label.en.resx
│ │ │ │ │ │ ├── Label.es.resx
│ │ │ │ │ │ ├── Label.fa.resx
│ │ │ │ │ │ ├── Label.fi.resx
│ │ │ │ │ │ ├── Label.fr.resx
│ │ │ │ │ │ ├── Label.nl.resx
│ │ │ │ │ │ ├── Label.pt.resx
│ │ │ │ │ │ ├── Label.ru.resx
│ │ │ │ │ │ ├── Label.sv.resx
│ │ │ │ │ │ └── Label.zh.resx
│ │ │ │ │ ├── IdentityProvider.da.resx
│ │ │ │ │ ├── IdentityProviderDelete.da.resx
│ │ │ │ │ ├── IdentityProviderDelete.de.resx
│ │ │ │ │ ├── IdentityProviderDelete.en.resx
│ │ │ │ │ ├── IdentityProviderDelete.es.resx
│ │ │ │ │ ├── IdentityProviderDelete.fa.resx
│ │ │ │ │ ├── IdentityProviderDelete.fi.resx
│ │ │ │ │ ├── IdentityProviderDelete.fr.resx
│ │ │ │ │ ├── IdentityProviderDelete.nl.resx
│ │ │ │ │ ├── IdentityProviderDelete.pt.resx
│ │ │ │ │ ├── IdentityProviderDelete.ru.resx
│ │ │ │ │ ├── IdentityProviderDelete.sv.resx
│ │ │ │ │ ├── IdentityProviderDelete.zh.resx
│ │ │ │ │ ├── IdentityProvider.de.resx
│ │ │ │ │ ├── IdentityProvider.en.resx
│ │ │ │ │ ├── IdentityProvider.es.resx
│ │ │ │ │ ├── IdentityProvider.fa.resx
│ │ │ │ │ ├── IdentityProvider.fi.resx
│ │ │ │ │ ├── IdentityProvider.fr.resx
│ │ │ │ │ ├── IdentityProvider.nl.resx
│ │ │ │ │ ├── IdentityProviderProperties.da.resx
│ │ │ │ │ ├── IdentityProviderProperties.de.resx
│ │ │ │ │ ├── IdentityProviderProperties.en.resx
│ │ │ │ │ ├── IdentityProviderProperties.es.resx
│ │ │ │ │ ├── IdentityProviderProperties.fa.resx
│ │ │ │ │ ├── IdentityProviderProperties.fi.resx
│ │ │ │ │ ├── IdentityProviderProperties.fr.resx
│ │ │ │ │ ├── IdentityProviderProperties.nl.resx
│ │ │ │ │ ├── IdentityProviderProperties.pt.resx
│ │ │ │ │ ├── IdentityProviderProperties.ru.resx
│ │ │ │ │ ├── IdentityProviderProperties.sv.resx
│ │ │ │ │ ├── IdentityProviderProperties.zh.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.da.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.de.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.en.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.es.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.fa.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.fi.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.nl.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.pt.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.ru.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.sv.resx
│ │ │ │ │ ├── IdentityProviderPropertyDelete.zh.resx
│ │ │ │ │ ├── IdentityProvider.pt.resx
│ │ │ │ │ ├── IdentityProvider.ru.resx
│ │ │ │ │ ├── IdentityProviders.da.resx
│ │ │ │ │ ├── IdentityProviders.de.resx
│ │ │ │ │ ├── IdentityProviders.en.resx
│ │ │ │ │ ├── IdentityProviders.es.resx
│ │ │ │ │ ├── IdentityProviders.fa.resx
│ │ │ │ │ ├── IdentityProviders.fi.resx
│ │ │ │ │ ├── IdentityProviders.nl.resx
│ │ │ │ │ ├── IdentityProviders.pt.resx
│ │ │ │ │ ├── IdentityProviders.ru.resx
│ │ │ │ │ ├── IdentityProviders.sv.resx
│ │ │ │ │ ├── IdentityProvider.sv.resx
│ │ │ │ │ ├── IdentityProviders.zh.resx
│ │ │ │ │ └── IdentityProvider.zh.resx
│ │ │ │ ├── Key
│ │ │ │ │ ├── KeyDelete.da.resx
│ │ │ │ │ ├── KeyDelete.de.resx
│ │ │ │ │ ├── KeyDelete.en.resx
│ │ │ │ │ ├── KeyDelete.es.resx
│ │ │ │ │ ├── KeyDelete.fa.resx
│ │ │ │ │ ├── KeyDelete.fi.resx
│ │ │ │ │ ├── KeyDelete.fr.resx
│ │ │ │ │ ├── KeyDelete.nl.resx
│ │ │ │ │ ├── KeyDelete.pt.resx
│ │ │ │ │ ├── KeyDelete.ru.resx
│ │ │ │ │ ├── KeyDelete.sv.resx
│ │ │ │ │ ├── KeyDelete.zh.resx
│ │ │ │ │ ├── Keys.da.resx
│ │ │ │ │ ├── Keys.de.resx
│ │ │ │ │ ├── Keys.en.resx
│ │ │ │ │ ├── Keys.es.resx
│ │ │ │ │ ├── Keys.fa.resx
│ │ │ │ │ ├── Keys.fi.resx
│ │ │ │ │ ├── Keys.fr.resx
│ │ │ │ │ ├── Keys.nl.resx
│ │ │ │ │ ├── Keys.pt.resx
│ │ │ │ │ ├── Keys.ru.resx
│ │ │ │ │ ├── Keys.sv.resx
│ │ │ │ │ └── Keys.zh.resx
│ │ │ │ ├── Log
│ │ │ │ │ ├── AuditLog.da.resx
│ │ │ │ │ ├── AuditLog.de.resx
│ │ │ │ │ ├── AuditLog.en.resx
│ │ │ │ │ ├── AuditLog.es.resx
│ │ │ │ │ ├── AuditLog.fa.resx
│ │ │ │ │ ├── AuditLog.fi.resx
│ │ │ │ │ ├── AuditLog.fr.resx
│ │ │ │ │ ├── AuditLog.nl.resx
│ │ │ │ │ ├── AuditLog.pt.resx
│ │ │ │ │ ├── AuditLog.ru.resx
│ │ │ │ │ ├── AuditLog.sv.resx
│ │ │ │ │ ├── AuditLog.zh.resx
│ │ │ │ │ ├── ErrorsLog.da.resx
│ │ │ │ │ ├── ErrorsLog.de.resx
│ │ │ │ │ ├── ErrorsLog.en.resx
│ │ │ │ │ ├── ErrorsLog.es.resx
│ │ │ │ │ ├── ErrorsLog.fa.resx
│ │ │ │ │ ├── ErrorsLog.fi.resx
│ │ │ │ │ ├── ErrorsLog.fr.resx
│ │ │ │ │ ├── ErrorsLog.nl.resx
│ │ │ │ │ ├── ErrorsLog.pt.resx
│ │ │ │ │ ├── ErrorsLog.ru.resx
│ │ │ │ │ ├── ErrorsLog.sv.resx
│ │ │ │ │ └── ErrorsLog.zh.resx
│ │ │ │ └── Shared
│ │ │ │ ├── Common
│ │ │ │ │ ├── ErrorPage.da.resx
│ │ │ │ │ ├── ErrorPage.de.resx
│ │ │ │ │ ├── ErrorPage.en.resx
│ │ │ │ │ ├── ErrorPage.es.resx
│ │ │ │ │ ├── ErrorPage.fa.resx
│ │ │ │ │ ├── ErrorPage.fi.resx
│ │ │ │ │ ├── ErrorPage.fr.resx
│ │ │ │ │ ├── ErrorPage.nl.resx
│ │ │ │ │ ├── ErrorPage.pt.resx
│ │ │ │ │ ├── ErrorPage.ru.resx
│ │ │ │ │ ├── ErrorPage.sv.resx
│ │ │ │ │ ├── ErrorPage.zh.resx
│ │ │ │ │ ├── Pager.da.resx
│ │ │ │ │ ├── Pager.de.resx
│ │ │ │ │ ├── PagerDynamic.de.resx
│ │ │ │ │ ├── PagerDynamic.en.resx
│ │ │ │ │ ├── PagerDynamic.es.resx
│ │ │ │ │ ├── PagerDynamic.fa.resx
│ │ │ │ │ ├── PagerDynamic.fi.resx
│ │ │ │ │ ├── PagerDynamic.fr.resx
│ │ │ │ │ ├── PagerDynamic.nl.resx
│ │ │ │ │ ├── PagerDynamic.pt.resx
│ │ │ │ │ ├── PagerDynamic.ru.resx
│ │ │ │ │ ├── PagerDynamic.sv.resx
│ │ │ │ │ ├── Pager.en.resx
│ │ │ │ │ ├── Pager.es.resx
│ │ │ │ │ ├── Pager.fa.resx
│ │ │ │ │ ├── Pager.fi.resx
│ │ │ │ │ ├── Pager.fr.resx
│ │ │ │ │ ├── Pager.nl.resx
│ │ │ │ │ ├── Pager.pt.resx
│ │ │ │ │ ├── Pager.ru.resx
│ │ │ │ │ ├── Pager.sv.resx
│ │ │ │ │ ├── Pager.zh.resx
│ │ │ │ │ ├── Search.da.resx
│ │ │ │ │ ├── Search.de.resx
│ │ │ │ │ ├── Search.en.resx
│ │ │ │ │ ├── Search.es.resx
│ │ │ │ │ ├── Search.fa.resx
│ │ │ │ │ ├── Search.fi.resx
│ │ │ │ │ ├── Search.fr.resx
│ │ │ │ │ ├── Search.nl.resx
│ │ │ │ │ ├── Search.pt.resx
│ │ │ │ │ ├── Search.ru.resx
│ │ │ │ │ ├── Search.sv.resx
│ │ │ │ │ ├── Search.zh.resx
│ │ │ │ │ ├── SelectLanguage.da.resx
│ │ │ │ │ ├── SelectLanguage.de.resx
│ │ │ │ │ ├── SelectLanguage.en.resx
│ │ │ │ │ ├── SelectLanguage.es.resx
│ │ │ │ │ ├── SelectLanguage.fa.resx
│ │ │ │ │ ├── SelectLanguage.fi.resx
│ │ │ │ │ ├── SelectLanguage.fr.resx
│ │ │ │ │ ├── SelectLanguage.nl.resx
│ │ │ │ │ ├── SelectLanguage.pt.resx
│ │ │ │ │ ├── SelectLanguage.ru.resx
│ │ │ │ │ ├── SelectLanguage.sv.resx
│ │ │ │ │ └── SelectLanguage.zh.resx
│ │ │ │ ├── Components
│ │ │ │ │ └── IdentityServerLink
│ │ │ │ │ ├── Default.da.resx
│ │ │ │ │ ├── Default.de.resx
│ │ │ │ │ ├── Default.en.resx
│ │ │ │ │ ├── Default.es.resx
│ │ │ │ │ ├── Default.fa.resx
│ │ │ │ │ ├── Default.fi.resx
│ │ │ │ │ ├── Default.fr.resx
│ │ │ │ │ ├── Default.nl.resx
│ │ │ │ │ ├── Default.pt.resx
│ │ │ │ │ ├── Default.ru.resx
│ │ │ │ │ ├── Default.sv.resx
│ │ │ │ │ └── Default.zh.resx
│ │ │ │ ├── _Layout.da.resx
│ │ │ │ ├── _Layout.de.resx
│ │ │ │ ├── _Layout.en.resx
│ │ │ │ ├── _Layout.es.resx
│ │ │ │ ├── _Layout.fa.resx
│ │ │ │ ├── _Layout.fi.resx
│ │ │ │ ├── _Layout.fr.resx
│ │ │ │ ├── _Layout.nl.resx
│ │ │ │ ├── _Layout.pt.resx
│ │ │ │ ├── _Layout.ru.resx
│ │ │ │ ├── _Layout.sv.resx
│ │ │ │ └── _Layout.zh.resx
│ │ │ ├── Helpers
│ │ │ │ └── Identity
│ │ │ │ ├── IdentityErrorMessages.en.resx
│ │ │ │ └── IdentityErrorMessages.resx
│ │ │ └── Services
│ │ │ ├── ApiResourceService.da.resx
│ │ │ ├── ApiResourceService.de.resx
│ │ │ ├── ApiResourceService.en.resx
│ │ │ ├── ApiResourceService.es.resx
│ │ │ ├── ApiResourceService.fa.resx
│ │ │ ├── ApiResourceService.fi.resx
│ │ │ ├── ApiResourceService.fr.resx
│ │ │ ├── ApiResourceService.pt.resx
│ │ │ ├── ApiResourceService.ru.resx
│ │ │ ├── ApiResourceService.sv.resx
│ │ │ ├── ApiResourceService.zh.resx
│ │ │ ├── ClientService.da.resx
│ │ │ ├── ClientService.de.resx
│ │ │ ├── ClientService.en.resx
│ │ │ ├── ClientService.es.resx
│ │ │ ├── ClientService.fa.resx
│ │ │ ├── ClientService.fi.resx
│ │ │ ├── ClientService.fr.resx
│ │ │ ├── ClientService.pt.resx
│ │ │ ├── ClientService.ru.resx
│ │ │ ├── ClientService.sv.resx
│ │ │ ├── ClientService.zh.resx
│ │ │ ├── IdentityResourceService.da.resx
│ │ │ ├── IdentityResourceService.de.resx
│ │ │ ├── IdentityResourceService.en.resx
│ │ │ ├── IdentityResourceService.es.resx
│ │ │ ├── IdentityResourceService.fa.resx
│ │ │ ├── IdentityResourceService.fi.resx
│ │ │ ├── IdentityResourceService.fr.resx
│ │ │ ├── IdentityResourceService.pt.resx
│ │ │ ├── IdentityResourceService.ru.resx
│ │ │ ├── IdentityResourceService.sv.resx
│ │ │ ├── IdentityResourceService.zh.resx
│ │ │ ├── IdentityService.da.resx
│ │ │ ├── IdentityService.de.resx
│ │ │ ├── IdentityService.en.resx
│ │ │ ├── IdentityService.es.resx
│ │ │ ├── IdentityService.fa.resx
│ │ │ ├── IdentityService.fi.resx
│ │ │ ├── IdentityService.fr.resx
│ │ │ ├── IdentityService.pt.resx
│ │ │ ├── IdentityService.ru.resx
│ │ │ ├── IdentityService.sv.resx
│ │ │ ├── IdentityService.zh.resx
│ │ │ ├── KeyService.en.resx
│ │ │ ├── PersistedGrantService.da.resx
│ │ │ ├── PersistedGrantService.de.resx
│ │ │ ├── PersistedGrantService.en.resx
│ │ │ ├── PersistedGrantService.es.resx
│ │ │ ├── PersistedGrantService.fa.resx
│ │ │ ├── PersistedGrantService.fi.resx
│ │ │ ├── PersistedGrantService.fr.resx
│ │ │ ├── PersistedGrantService.pt.resx
│ │ │ ├── PersistedGrantService.ru.resx
│ │ │ ├── PersistedGrantService.sv.resx
│ │ │ └── PersistedGrantService.zh.resx
│ │ ├── Scripts
│ │ │ └── App
│ │ │ ├── components
│ │ │ │ ├── DatePicker.js
│ │ │ │ ├── Menu.js
│ │ │ │ ├── Picker.es5.js
│ │ │ │ ├── Picker.es5.min.js
│ │ │ │ ├── Picker.js
│ │ │ │ ├── Picker.min.js
│ │ │ │ └── Theme.js
│ │ │ ├── helpers
│ │ │ │ ├── DateTimeHelpers.js
│ │ │ │ ├── FormMvcHelpers.js
│ │ │ │ └── jsontree.min.js
│ │ │ └── pages
│ │ │ ├── AuditLog.js
│ │ │ ├── ErrorsLog.js
│ │ │ ├── IdentityProviders.js
│ │ │ └── Secrets.js
│ │ ├── Skoruba.Duende.IdentityServer.Admin.UI.csproj
│ │ ├── Styles
│ │ │ ├── common
│ │ │ │ ├── _all.scss
│ │ │ │ ├── common.scss
│ │ │ │ ├── fonts.scss
│ │ │ │ ├── form.scss
│ │ │ │ ├── margin.css
│ │ │ │ ├── margin.min.css
│ │ │ │ ├── margin.scss
│ │ │ │ ├── padding.css
│ │ │ │ ├── padding.min.css
│ │ │ │ └── padding.scss
│ │ │ ├── controls
│ │ │ │ ├── _all.scss
│ │ │ │ ├── checkbox.scss
│ │ │ │ ├── jsontree.css
│ │ │ │ ├── navbar.scss
│ │ │ │ ├── picker.scss
│ │ │ │ ├── radio.scss
│ │ │ │ ├── toastr.scss
│ │ │ │ ├── validation.summary.css
│ │ │ │ ├── validation.summary.min.css
│ │ │ │ └── validation.summary.scss
│ │ │ ├── pages
│ │ │ │ ├── _all.scss
│ │ │ │ ├── auditlog.scss
│ │ │ │ └── client.scss
│ │ │ ├── web.css
│ │ │ ├── web.min.css
│ │ │ └── web.scss
│ │ ├── ViewComponents
│ │ │ └── IdentityServerLinkViewComponent.cs
│ │ └── wwwroot
│ │ ├── dist
│ │ │ ├── css
│ │ │ │ ├── bundle.min.css
│ │ │ │ ├── themes
│ │ │ │ │ ├── cerulean
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── cosmo
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── cyborg
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── darkly
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── flatly
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── journal
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── litera
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── lumen
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── lux
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── materia
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── minty
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── pulse
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── sandstone
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── simplex
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── sketchy
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── slate
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── solar
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── spacelab
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── superhero
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── united
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ └── yeti
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── web.css
│ │ │ │ └── web.min.css
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ ├── fontawesome-webfont.woff2
│ │ │ │ ├── open-iconic.eot
│ │ │ │ ├── open-iconic.otf
│ │ │ │ ├── open-iconic.svg
│ │ │ │ ├── open-iconic.ttf
│ │ │ │ └── open-iconic.woff
│ │ │ └── js
│ │ │ └── bundle.min.js
│ │ ├── favicon.ico
│ │ └── images
│ │ ├── icons
│ │ │ ├── device-client.png
│ │ │ ├── empty-client.png
│ │ │ ├── native-client.png
│ │ │ ├── server-client.png
│ │ │ ├── spa-client.png
│ │ │ └── web-client.png
│ │ └── loading.gif
│ ├── Skoruba.Duende.IdentityServer.Shared
│ │ ├── Dtos
│ │ │ ├── Identity
│ │ │ │ ├── IdentityRoleClaimDto.cs
│ │ │ │ ├── IdentityRoleClaimsDto.cs
│ │ │ │ ├── IdentityRoleDto.cs
│ │ │ │ ├── IdentityRolesDto.cs
│ │ │ │ ├── IdentityUserClaimDto.cs
│ │ │ │ ├── IdentityUserClaimsDto.cs
│ │ │ │ ├── IdentityUserDto.cs
│ │ │ │ ├── IdentityUserProviderDto.cs
│ │ │ │ ├── IdentityUserProvidersDto.cs
│ │ │ │ ├── IdentityUserRolesDto.cs
│ │ │ │ └── IdentityUsersDto.cs
│ │ │ └── IdentityUserChangePasswordDto.cs
│ │ └── Skoruba.Duende.IdentityServer.Shared.csproj
│ ├── Skoruba.Duende.IdentityServer.Shared.Configuration
│ │ ├── Authentication
│ │ │ └── AuthenticationHelpers.cs
│ │ ├── Configuration
│ │ │ ├── Common
│ │ │ │ ├── AzureKeyVaultConfiguration.cs
│ │ │ │ ├── CertificateConfiguration.cs
│ │ │ │ ├── DataProtectionConfiguration.cs
│ │ │ │ └── DockerConfiguration.cs
│ │ │ │ ├── SendGridConfiguration.cs
│ │ │ │ └── SmtpConfiguration.cs
│ │ │ └── Identity
│ │ │ ├── LoginConfiguration.cs
│ │ │ ├── LoginResolutionPolicy.cs
│ │ │ └── RegisterConfiguration.cs
│ │ │ ├── LogEmailSender.cs
│ │ │ ├── SendGridEmailSender.cs
│ │ │ └── SmtpEmailSender.cs
│ │ ├── Helpers
│ │ │ ├── AzureKeyVaultHelpers.cs
│ │ │ ├── DockerHelpers.cs
│ │ │ ├── ShellHelpers.cs
│ │ │ ├── StartupHelpers.cs
│ │ │ └── ThemeHelpers.cs
│ │ ├── Services
│ │ │ └── AzureKeyVaultService.cs
│ │ └── Skoruba.Duende.IdentityServer.Shared.Configuration.csproj
│ └── Skoruba.Duende.IdentityServer.STS.Identity
│ ├── appsettings.json
│ ├── Configuration
│ │ ├── AccountOptions.cs
│ │ ├── AdminConfiguration.cs
│ │ ├── ApplicationParts
│ │ │ ├── GenericControllerRouteConvention.cs
│ │ │ └── GenericTypeControllerFeatureProvider.cs
│ │ ├── ConsentOptions.cs
│ │ ├── Constants
│ │ │ ├── AddressClaimConstants.cs
│ │ │ ├── AuthorizationConsts.cs
│ │ │ └── ConfigurationConsts.cs
│ │ ├── CultureConfiguration.cs
│ │ ├── ExternalProvidersConfiguration.cs
│ │ ├── Interfaces
│ │ │ └── IRootConfiguration.cs
│ │ ├── RootConfiguration.cs
│ │ └── Test
│ │ └── StartupTest.cs
│ ├── Controllers
│ │ ├── AccountController.cs
│ │ ├── ConsentController.cs
│ │ ├── DeviceController.cs
│ │ ├── DiagnosticsController.cs
│ │ ├── GrantsController.cs
│ │ ├── HomeController.cs
│ │ └── ManageController.cs
│ ├── Dockerfile
│ ├── gulpfile.js
│ ├── Helpers
│ │ ├── ApplicationSignInManager.cs
│ │ ├── DelegationGrantValidator.cs
│ │ ├── Extensions.cs
│ │ ├── IdentityProvidersHelpers.cs
│ │ ├── IdentityServerBuilderExtensions.cs
│ │ ├── KeyValuePairExtensions.cs
│ │ ├── Localization
│ │ │ ├── GenericServiceLocalizer.cs
│ │ │ ├── IGenericControllerLocalizer.cs
│ │ │ └── LoginPolicyResolutionLocalizer.cs
│ │ ├── Md5HashHelper.cs
│ │ ├── OpenidClaimHelpers.cs
│ │ ├── OpenIDProfile.cs
│ │ ├── SecurityHeadersAttribute.cs
│ │ ├── StartupHelpers.cs
│ │ ├── TagHelpers
│ │ │ ├── GravatarTagHelper.cs
│ │ │ └── SwitchTagHelper.cs
│ │ └── UserResolver.cs
│ ├── package.json
│ ├── package-lock.json
│ ├── Program.cs
│ ├── Properties
│ │ └── launchSettings.json
│ ├── Resources
│ │ ├── Controllers
│ │ │ ├── AccountController.da.resx
│ │ │ ├── AccountController.de.resx
│ │ │ ├── AccountController.en.resx
│ │ │ ├── AccountController.es.resx
│ │ │ ├── AccountController.fa.resx
│ │ │ ├── AccountController.fi.resx
│ │ │ ├── AccountController.fr.resx
│ │ │ ├── AccountController.nl.resx
│ │ │ ├── AccountController.pt.resx
│ │ │ ├── AccountController.ru.resx
│ │ │ ├── AccountController.sv.resx
│ │ │ ├── AccountController.zh.resx
│ │ │ ├── ManageController.da.resx
│ │ │ ├── ManageController.de.resx
│ │ │ ├── ManageController.en.resx
│ │ │ ├── ManageController.es.resx
│ │ │ ├── ManageController.fa.resx
│ │ │ ├── ManageController.fi.resx
│ │ │ ├── ManageController.fr.resx
│ │ │ ├── ManageController.nl.resx
│ │ │ ├── ManageController.pt.resx
│ │ │ ├── ManageController.ru.resx
│ │ │ ├── ManageController.sv.resx
│ │ │ └── ManageController.zh.resx
│ │ └── Views
│ │ ├── Account
│ │ │ ├── ConfirmEmail.da.resx
│ │ │ ├── ConfirmEmail.de.resx
│ │ │ ├── ConfirmEmail.en.resx
│ │ │ ├── ConfirmEmail.es.resx
│ │ │ ├── ConfirmEmail.fa.resx
│ │ │ ├── ConfirmEmail.fi.resx
│ │ │ ├── ConfirmEmail.fr.resx
│ │ │ ├── ConfirmEmail.nl.resx
│ │ │ ├── ConfirmEmail.pt.resx
│ │ │ ├── ConfirmEmail.ru.resx
│ │ │ ├── ConfirmEmail.sv.resx
│ │ │ ├── ConfirmEmail.zh.resx
│ │ │ ├── ExternalLoginConfirmation.da.resx
│ │ │ ├── ExternalLoginConfirmation.de.resx
│ │ │ ├── ExternalLoginConfirmation.en.resx
│ │ │ ├── ExternalLoginConfirmation.es.resx
│ │ │ ├── ExternalLoginConfirmation.fa.resx
│ │ │ ├── ExternalLoginConfirmation.fi.resx
│ │ │ ├── ExternalLoginConfirmation.fr.resx
│ │ │ ├── ExternalLoginConfirmation.nl.resx
│ │ │ ├── ExternalLoginConfirmation.pt.resx
│ │ │ ├── ExternalLoginConfirmation.ru.resx
│ │ │ ├── ExternalLoginConfirmation.sv.resx
│ │ │ ├── ExternalLoginConfirmation.zh.resx
│ │ │ ├── ExternalLoginFailure.da.resx
│ │ │ ├── ExternalLoginFailure.de.resx
│ │ │ ├── ExternalLoginFailure.en.resx
│ │ │ ├── ExternalLoginFailure.es.resx
│ │ │ ├── ExternalLoginFailure.fa.resx
│ │ │ ├── ExternalLoginFailure.fi.resx
│ │ │ ├── ExternalLoginFailure.fr.resx
│ │ │ ├── ExternalLoginFailure.nl.resx
│ │ │ ├── ExternalLoginFailure.pt.resx
│ │ │ ├── ExternalLoginFailure.ru.resx
│ │ │ ├── ExternalLoginFailure.sv.resx
│ │ │ ├── ExternalLoginFailure.zh.resx
│ │ │ ├── ForgotPasswordConfirmation.da.resx
│ │ │ ├── ForgotPasswordConfirmation.de.resx
│ │ │ ├── ForgotPasswordConfirmation.en.resx
│ │ │ ├── ForgotPasswordConfirmation.es.resx
│ │ │ ├── ForgotPasswordConfirmation.fa.resx
│ │ │ ├── ForgotPasswordConfirmation.fi.resx
│ │ │ ├── ForgotPasswordConfirmation.fr.resx
│ │ │ ├── ForgotPasswordConfirmation.nl.resx
│ │ │ ├── ForgotPasswordConfirmation.pt.resx
│ │ │ ├── ForgotPasswordConfirmation.ru.resx
│ │ │ ├── ForgotPasswordConfirmation.sv.resx
│ │ │ ├── ForgotPasswordConfirmation.zh.resx
│ │ │ ├── ForgotPassword.da.resx
│ │ │ ├── ForgotPassword.de.resx
│ │ │ ├── ForgotPassword.en.resx
│ │ │ ├── ForgotPassword.es.resx
│ │ │ ├── ForgotPassword.fa.resx
│ │ │ ├── ForgotPassword.fi.resx
│ │ │ ├── ForgotPassword.fr.resx
│ │ │ ├── ForgotPassword.nl.resx
│ │ │ ├── ForgotPassword.pt.resx
│ │ │ ├── ForgotPassword.ru.resx
│ │ │ ├── ForgotPassword.sv.resx
│ │ │ ├── ForgotPassword.zh.resx
│ │ │ ├── Lockout.da.resx
│ │ │ ├── Lockout.de.resx
│ │ │ ├── Lockout.en.resx
│ │ │ ├── Lockout.es.resx
│ │ │ ├── Lockout.fa.resx
│ │ │ ├── Lockout.fi.resx
│ │ │ ├── Lockout.fr.resx
│ │ │ ├── Lockout.nl.resx
│ │ │ ├── Lockout.pt.resx
│ │ │ ├── Lockout.ru.resx
│ │ │ ├── Lockout.sv.resx
│ │ │ ├── Lockout.zh.resx
│ │ │ ├── LoggedOut.da.resx
│ │ │ ├── LoggedOut.de.resx
│ │ │ ├── LoggedOut.en.resx
│ │ │ ├── LoggedOut.es.resx
│ │ │ ├── LoggedOut.fa.resx
│ │ │ ├── LoggedOut.fi.resx
│ │ │ ├── LoggedOut.fr.resx
│ │ │ ├── LoggedOut.nl.resx
│ │ │ ├── LoggedOut.pt.resx
│ │ │ ├── LoggedOut.ru.resx
│ │ │ ├── LoggedOut.sv.resx
│ │ │ ├── LoggedOut.zh.resx
│ │ │ ├── Login.da.resx
│ │ │ ├── Login.de.resx
│ │ │ ├── Login.en.resx
│ │ │ ├── Login.es.resx
│ │ │ ├── Login.fa.resx
│ │ │ ├── Login.fi.resx
│ │ │ ├── Login.fr.resx
│ │ │ ├── Login.nl.resx
│ │ │ ├── Login.pt.resx
│ │ │ ├── Login.ru.resx
│ │ │ ├── Login.sv.resx
│ │ │ ├── LoginWith2fa.da.resx
│ │ │ ├── LoginWith2fa.de.resx
│ │ │ ├── LoginWith2fa.en.resx
│ │ │ ├── LoginWith2fa.es.resx
│ │ │ ├── LoginWith2fa.fa.resx
│ │ │ ├── LoginWith2fa.fi.resx
│ │ │ ├── LoginWith2fa.fr.resx
│ │ │ ├── LoginWith2fa.nl.resx
│ │ │ ├── LoginWith2fa.pt.resx
│ │ │ ├── LoginWith2fa.ru.resx
│ │ │ ├── LoginWith2fa.sv.resx
│ │ │ ├── LoginWith2fa.zh.resx
│ │ │ ├── LoginWithRecoveryCode.da.resx
│ │ │ ├── LoginWithRecoveryCode.de.resx
│ │ │ ├── LoginWithRecoveryCode.en.resx
│ │ │ ├── LoginWithRecoveryCode.es.resx
│ │ │ ├── LoginWithRecoveryCode.fa.resx
│ │ │ ├── LoginWithRecoveryCode.fi.resx
│ │ │ ├── LoginWithRecoveryCode.fr.resx
│ │ │ ├── LoginWithRecoveryCode.nl.resx
│ │ │ ├── LoginWithRecoveryCode.pt.resx
│ │ │ ├── LoginWithRecoveryCode.ru.resx
│ │ │ ├── LoginWithRecoveryCode.sv.resx
│ │ │ ├── LoginWithRecoveryCode.zh.resx
│ │ │ ├── Login.zh.resx
│ │ │ ├── Logout.da.resx
│ │ │ ├── Logout.de.resx
│ │ │ ├── Logout.en.resx
│ │ │ ├── Logout.es.resx
│ │ │ ├── Logout.fa.resx
│ │ │ ├── Logout.fi.resx
│ │ │ ├── Logout.fr.resx
│ │ │ ├── Logout.nl.resx
│ │ │ ├── Logout.pt.resx
│ │ │ ├── Logout.ru.resx
│ │ │ ├── Logout.sv.resx
│ │ │ ├── Logout.zh.resx
│ │ │ ├── RegisterConfirmation.da.resx
│ │ │ ├── RegisterConfirmation.de.resx
│ │ │ ├── RegisterConfirmation.en.resx
│ │ │ ├── RegisterConfirmation.es.resx
│ │ │ ├── RegisterConfirmation.fa.resx
│ │ │ ├── RegisterConfirmation.fi.resx
│ │ │ ├── RegisterConfirmation.fr.resx
│ │ │ ├── RegisterConfirmation.nl.resx
│ │ │ ├── RegisterConfirmation.pt.resx
│ │ │ ├── RegisterConfirmation.ru.resx
│ │ │ ├── RegisterConfirmation.sv.resx
│ │ │ ├── RegisterConfirmation.zh.resx
│ │ │ ├── Register.da.resx
│ │ │ ├── Register.de.resx
│ │ │ ├── Register.en.resx
│ │ │ ├── Register.es.resx
│ │ │ ├── RegisterFailure.da.resx
│ │ │ ├── RegisterFailure.de.resx
│ │ │ ├── RegisterFailure.es.resx
│ │ │ ├── RegisterFailure.fa.resx
│ │ │ ├── RegisterFailure.fr.resx
│ │ │ ├── RegisterFailure.pt.resx
│ │ │ ├── RegisterFailure.resx
│ │ │ ├── RegisterFailure.sv.resx
│ │ │ ├── RegisterFailure.zh.resx
│ │ │ ├── Register.fa.resx
│ │ │ ├── Register.fi.resx
│ │ │ ├── Register.fr.resx
│ │ │ ├── Register.nl.resx
│ │ │ ├── Register.pt.resx
│ │ │ ├── Register.ru.resx
│ │ │ ├── Register.sv.resx
│ │ │ ├── RegisterWithoutUserName.da.resx
│ │ │ ├── RegisterWithoutUserName.de.resx
│ │ │ ├── RegisterWithoutUserName.en.resx
│ │ │ ├── RegisterWithoutUserName.es.resx
│ │ │ ├── RegisterWithoutUserName.fa.resx
│ │ │ ├── RegisterWithoutUserName.fi.resx
│ │ │ ├── RegisterWithoutUserName.fr.resx
│ │ │ ├── RegisterWithoutUserName.nl.resx
│ │ │ ├── RegisterWithoutUserName.pt.resx
│ │ │ ├── RegisterWithoutUserName.ru.resx
│ │ │ ├── RegisterWithoutUserName.sv.resx
│ │ │ ├── RegisterWithoutUserName.zh.resx
│ │ │ ├── Register.zh.resx
│ │ │ ├── ResetPasswordConfirmation.da.resx
│ │ │ ├── ResetPasswordConfirmation.de.resx
│ │ │ ├── ResetPasswordConfirmation.en.resx
│ │ │ ├── ResetPasswordConfirmation.es.resx
│ │ │ ├── ResetPasswordConfirmation.fa.resx
│ │ │ ├── ResetPasswordConfirmation.fi.resx
│ │ │ ├── ResetPasswordConfirmation.fr.resx
│ │ │ ├── ResetPasswordConfirmation.nl.resx
│ │ │ ├── ResetPasswordConfirmation.pt.resx
│ │ │ ├── ResetPasswordConfirmation.ru.resx
│ │ │ ├── ResetPasswordConfirmation.sv.resx
│ │ │ ├── ResetPasswordConfirmation.zh.resx
│ │ │ ├── ResetPassword.da.resx
│ │ │ ├── ResetPassword.de.resx
│ │ │ ├── ResetPassword.en.resx
│ │ │ ├── ResetPassword.es.resx
│ │ │ ├── ResetPassword.fa.resx
│ │ │ ├── ResetPassword.fi.resx
│ │ │ ├── ResetPassword.fr.resx
│ │ │ ├── ResetPassword.nl.resx
│ │ │ ├── ResetPassword.pt.resx
│ │ │ ├── ResetPassword.ru.resx
│ │ │ ├── ResetPassword.sv.resx
│ │ │ └── ResetPassword.zh.resx
│ │ ├── Consent
│ │ │ ├── Index.da.resx
│ │ │ ├── Index.de.resx
│ │ │ ├── Index.en.resx
│ │ │ ├── Index.es.resx
│ │ │ ├── Index.fa.resx
│ │ │ ├── Index.fi.resx
│ │ │ ├── Index.fr.resx
│ │ │ ├── Index.nl.resx
│ │ │ ├── Index.pt.resx
│ │ │ ├── Index.ru.resx
│ │ │ ├── Index.sv.resx
│ │ │ └── Index.zh.resx
│ │ ├── Device
│ │ │ ├── Success.da.resx
│ │ │ ├── Success.de.resx
│ │ │ ├── Success.en.resx
│ │ │ ├── Success.es.resx
│ │ │ ├── Success.fa.resx
│ │ │ ├── Success.fi.resx
│ │ │ ├── Success.fr.resx
│ │ │ ├── Success.nl.resx
│ │ │ ├── Success.pt.resx
│ │ │ ├── Success.ru.resx
│ │ │ ├── Success.sv.resx
│ │ │ ├── Success.zh.resx
│ │ │ ├── UserCodeCapture.da.resx
│ │ │ ├── UserCodeCapture.de.resx
│ │ │ ├── UserCodeCapture.en.resx
│ │ │ ├── UserCodeCapture.es.resx
│ │ │ ├── UserCodeCapture.fa.resx
│ │ │ ├── UserCodeCapture.fi.resx
│ │ │ ├── UserCodeCapture.fr.resx
│ │ │ ├── UserCodeCapture.nl.resx
│ │ │ ├── UserCodeCapture.pt.resx
│ │ │ ├── UserCodeCapture.ru.resx
│ │ │ ├── UserCodeCapture.sv.resx
│ │ │ ├── UserCodeCapture.zh.resx
│ │ │ ├── UserCodeConfirmation.da.resx
│ │ │ ├── UserCodeConfirmation.de.resx
│ │ │ ├── UserCodeConfirmation.en.resx
│ │ │ ├── UserCodeConfirmation.es.resx
│ │ │ ├── UserCodeConfirmation.fa.resx
│ │ │ ├── UserCodeConfirmation.fi.resx
│ │ │ ├── UserCodeConfirmation.fr.resx
│ │ │ ├── UserCodeConfirmation.nl.resx
│ │ │ ├── UserCodeConfirmation.pt.resx
│ │ │ ├── UserCodeConfirmation.ru.resx
│ │ │ ├── UserCodeConfirmation.sv.resx
│ │ │ └── UserCodeConfirmation.zh.resx
│ │ ├── Diagnostics
│ │ │ ├── Index.da.resx
│ │ │ ├── Index.de.resx
│ │ │ ├── Index.en.resx
│ │ │ ├── Index.es.resx
│ │ │ ├── Index.fa.resx
│ │ │ ├── Index.fi.resx
│ │ │ ├── Index.fr.resx
│ │ │ ├── Index.nl.resx
│ │ │ ├── Index.pt.resx
│ │ │ ├── Index.ru.resx
│ │ │ ├── Index.sv.resx
│ │ │ └── Index.zh.resx
│ │ ├── Grants
│ │ │ ├── Index.da.resx
│ │ │ ├── Index.de.resx
│ │ │ ├── Index.en.resx
│ │ │ ├── Index.es.resx
│ │ │ ├── Index.fa.resx
│ │ │ ├── Index.fi.resx
│ │ │ ├── Index.fr.resx
│ │ │ ├── Index.nl.resx
│ │ │ ├── Index.pt.resx
│ │ │ ├── Index.ru.resx
│ │ │ ├── Index.sv.resx
│ │ │ └── Index.zh.resx
│ │ ├── Home
│ │ │ ├── Index.da.resx
│ │ │ ├── Index.de.resx
│ │ │ ├── Index.en.resx
│ │ │ ├── Index.es.resx
│ │ │ ├── Index.fa.resx
│ │ │ ├── Index.fi.resx
│ │ │ ├── Index.fr.resx
│ │ │ ├── Index.nl.resx
│ │ │ ├── Index.pt.resx
│ │ │ ├── Index.ru.resx
│ │ │ ├── Index.sv.resx
│ │ │ └── Index.zh.resx
│ │ ├── Manage
│ │ │ ├── ChangePassword.da.resx
│ │ │ ├── ChangePassword.de.resx
│ │ │ ├── ChangePassword.en.resx
│ │ │ ├── ChangePassword.es.resx
│ │ │ ├── ChangePassword.fa.resx
│ │ │ ├── ChangePassword.fi.resx
│ │ │ ├── ChangePassword.fr.resx
│ │ │ ├── ChangePassword.nl.resx
│ │ │ ├── ChangePassword.pt.resx
│ │ │ ├── ChangePassword.ru.resx
│ │ │ ├── ChangePassword.sv.resx
│ │ │ ├── ChangePassword.zh.resx
│ │ │ ├── DeletePersonalData.da.resx
│ │ │ ├── DeletePersonalData.de.resx
│ │ │ ├── DeletePersonalData.en.resx
│ │ │ ├── DeletePersonalData.es.resx
│ │ │ ├── DeletePersonalData.fa.resx
│ │ │ ├── DeletePersonalData.fi.resx
│ │ │ ├── DeletePersonalData.fr.resx
│ │ │ ├── DeletePersonalData.nl.resx
│ │ │ ├── DeletePersonalData.pt.resx
│ │ │ ├── DeletePersonalData.ru.resx
│ │ │ ├── DeletePersonalData.sv.resx
│ │ │ ├── DeletePersonalData.zh.resx
│ │ │ ├── Disable2fa.da.resx
│ │ │ ├── Disable2fa.de.resx
│ │ │ ├── Disable2fa.en.resx
│ │ │ ├── Disable2fa.es.resx
│ │ │ ├── Disable2fa.fa.resx
│ │ │ ├── Disable2fa.fi.resx
│ │ │ ├── Disable2fa.fr.resx
│ │ │ ├── Disable2fa.nl.resx
│ │ │ ├── Disable2fa.pt.resx
│ │ │ ├── Disable2fa.ru.resx
│ │ │ ├── Disable2fa.sv.resx
│ │ │ ├── Disable2fa.zh.resx
│ │ │ ├── DownloadPersonalData.da.resx
│ │ │ ├── DownloadPersonalData.de.resx
│ │ │ ├── DownloadPersonalData.en.resx
│ │ │ ├── DownloadPersonalData.es.resx
│ │ │ ├── DownloadPersonalData.fa.resx
│ │ │ ├── DownloadPersonalData.fi.resx
│ │ │ ├── DownloadPersonalData.fr.resx
│ │ │ ├── DownloadPersonalData.nl.resx
│ │ │ ├── DownloadPersonalData.pt.resx
│ │ │ ├── DownloadPersonalData.ru.resx
│ │ │ ├── DownloadPersonalData.sv.resx
│ │ │ ├── DownloadPersonalData.zh.resx
│ │ │ ├── EnableAuthenticator.da.resx
│ │ │ ├── EnableAuthenticator.de.resx
│ │ │ ├── EnableAuthenticator.en.resx
│ │ │ ├── EnableAuthenticator.es.resx
│ │ │ ├── EnableAuthenticator.fa.resx
│ │ │ ├── EnableAuthenticator.fi.resx
│ │ │ ├── EnableAuthenticator.fr.resx
│ │ │ ├── EnableAuthenticator.nl.resx
│ │ │ ├── EnableAuthenticator.pt.resx
│ │ │ ├── EnableAuthenticator.ru.resx
│ │ │ ├── EnableAuthenticator.sv.resx
│ │ │ ├── EnableAuthenticator.zh.resx
│ │ │ ├── ExternalLogins.da.resx
│ │ │ ├── ExternalLogins.de.resx
│ │ │ ├── ExternalLogins.en.resx
│ │ │ ├── ExternalLogins.es.resx
│ │ │ ├── ExternalLogins.fa.resx
│ │ │ ├── ExternalLogins.fi.resx
│ │ │ ├── ExternalLogins.fr.resx
│ │ │ ├── ExternalLogins.nl.resx
│ │ │ ├── ExternalLogins.pt.resx
│ │ │ ├── ExternalLogins.ru.resx
│ │ │ ├── ExternalLogins.sv.resx
│ │ │ ├── ExternalLogins.zh.resx
│ │ │ ├── GenerateRecoveryCodes.da.resx
│ │ │ ├── GenerateRecoveryCodes.de.resx
│ │ │ ├── GenerateRecoveryCodes.en.resx
│ │ │ ├── GenerateRecoveryCodes.es.resx
│ │ │ ├── GenerateRecoveryCodes.fa.resx
│ │ │ ├── GenerateRecoveryCodes.fi.resx
│ │ │ ├── GenerateRecoveryCodes.fr.resx
│ │ │ ├── GenerateRecoveryCodes.nl.resx
│ │ │ ├── GenerateRecoveryCodes.pt.resx
│ │ │ ├── GenerateRecoveryCodes.ru.resx
│ │ │ ├── GenerateRecoveryCodes.sv.resx
│ │ │ ├── GenerateRecoveryCodes.zh.resx
│ │ │ ├── Index.da.resx
│ │ │ ├── Index.de.resx
│ │ │ ├── Index.en.resx
│ │ │ ├── Index.es.resx
│ │ │ ├── Index.fa.resx
│ │ │ ├── Index.fi.resx
│ │ │ ├── Index.fr.resx
│ │ │ ├── Index.nl.resx
│ │ │ ├── Index.pt.resx
│ │ │ ├── Index.ru.resx
│ │ │ ├── Index.sv.resx
│ │ │ ├── Index.zh.resx
│ │ │ ├── LinkLoginFailure.da.resx
│ │ │ ├── LinkLoginFailure.de.resx
│ │ │ ├── LinkLoginFailure.en.resx
│ │ │ ├── LinkLoginFailure.es.resx
│ │ │ ├── LinkLoginFailure.fa.resx
│ │ │ ├── LinkLoginFailure.fi.resx
│ │ │ ├── LinkLoginFailure.fr.resx
│ │ │ ├── LinkLoginFailure.nl.resx
│ │ │ ├── LinkLoginFailure.pt.resx
│ │ │ ├── LinkLoginFailure.ru.resx
│ │ │ ├── LinkLoginFailure.sv.resx
│ │ │ ├── LinkLoginFailure.zh.resx
│ │ │ ├── PersonalData.da.resx
│ │ │ ├── PersonalData.de.resx
│ │ │ ├── PersonalData.en.resx
│ │ │ ├── PersonalData.es.resx
│ │ │ ├── PersonalData.fa.resx
│ │ │ ├── PersonalData.fi.resx
│ │ │ ├── PersonalData.fr.resx
│ │ │ ├── PersonalData.nl.resx
│ │ │ ├── PersonalData.pt.resx
│ │ │ ├── PersonalData.ru.resx
│ │ │ ├── PersonalData.sv.resx
│ │ │ ├── PersonalData.zh.resx
│ │ │ ├── ResetAuthenticator.da.resx
│ │ │ ├── ResetAuthenticator.de.resx
│ │ │ ├── ResetAuthenticator.en.resx
│ │ │ ├── ResetAuthenticator.es.resx
│ │ │ ├── ResetAuthenticator.fa.resx
│ │ │ ├── ResetAuthenticator.fi.resx
│ │ │ ├── ResetAuthenticator.fr.resx
│ │ │ ├── ResetAuthenticator.nl.resx
│ │ │ ├── ResetAuthenticator.pt.resx
│ │ │ ├── ResetAuthenticator.ru.resx
│ │ │ ├── ResetAuthenticator.sv.resx
│ │ │ ├── ResetAuthenticator.zh.resx
│ │ │ ├── SetPassword.da.resx
│ │ │ ├── SetPassword.de.resx
│ │ │ ├── SetPassword.en.resx
│ │ │ ├── SetPassword.es.resx
│ │ │ ├── SetPassword.fa.resx
│ │ │ ├── SetPassword.fi.resx
│ │ │ ├── SetPassword.fr.resx
│ │ │ ├── SetPassword.nl.resx
│ │ │ ├── SetPassword.pt.resx
│ │ │ ├── SetPassword.ru.resx
│ │ │ ├── SetPassword.sv.resx
│ │ │ ├── SetPassword.zh.resx
│ │ │ ├── ShowRecoveryCodes.da.resx
│ │ │ ├── ShowRecoveryCodes.de.resx
│ │ │ ├── ShowRecoveryCodes.en.resx
│ │ │ ├── ShowRecoveryCodes.es.resx
│ │ │ ├── ShowRecoveryCodes.fa.resx
│ │ │ ├── ShowRecoveryCodes.fi.resx
│ │ │ ├── ShowRecoveryCodes.fr.resx
│ │ │ ├── ShowRecoveryCodes.nl.resx
│ │ │ ├── ShowRecoveryCodes.pt.resx
│ │ │ ├── ShowRecoveryCodes.ru.resx
│ │ │ ├── ShowRecoveryCodes.sv.resx
│ │ │ ├── ShowRecoveryCodes.zh.resx
│ │ │ ├── TwoFactorAuthentication.da.resx
│ │ │ ├── TwoFactorAuthentication.de.resx
│ │ │ ├── TwoFactorAuthentication.en.resx
│ │ │ ├── TwoFactorAuthentication.es.resx
│ │ │ ├── TwoFactorAuthentication.fa.resx
│ │ │ ├── TwoFactorAuthentication.fi.resx
│ │ │ ├── TwoFactorAuthentication.fr.resx
│ │ │ ├── TwoFactorAuthentication.nl.resx
│ │ │ ├── TwoFactorAuthentication.pt.resx
│ │ │ ├── TwoFactorAuthentication.ru.resx
│ │ │ ├── TwoFactorAuthentication.sv.resx
│ │ │ └── TwoFactorAuthentication.zh.resx
│ │ └── Shared
│ │ ├── Common
│ │ │ ├── SelectLanguage.da.resx
│ │ │ ├── SelectLanguage.de.resx
│ │ │ ├── SelectLanguage.en.resx
│ │ │ ├── SelectLanguage.es.resx
│ │ │ ├── SelectLanguage.fa.resx
│ │ │ ├── SelectLanguage.fi.resx
│ │ │ ├── SelectLanguage.fr.resx
│ │ │ ├── SelectLanguage.nl.resx
│ │ │ ├── SelectLanguage.pt.resx
│ │ │ ├── SelectLanguage.ru.resx
│ │ │ ├── SelectLanguage.sv.resx
│ │ │ └── SelectLanguage.zh.resx
│ │ ├── Components
│ │ │ └── IdentityServerAdminLink
│ │ │ ├── Default.da.resx
│ │ │ ├── Default.de.resx
│ │ │ ├── Default.en.resx
│ │ │ ├── Default.es.resx
│ │ │ ├── Default.fa.resx
│ │ │ ├── Default.fi.resx
│ │ │ ├── Default.fr.resx
│ │ │ ├── Default.nl.resx
│ │ │ ├── Default.pt.resx
│ │ │ ├── Default.ru.resx
│ │ │ ├── Default.sv.resx
│ │ │ └── Default.zh.resx
│ │ ├── Error.da.resx
│ │ ├── Error.de.resx
│ │ ├── Error.en.resx
│ │ ├── Error.es.resx
│ │ ├── Error.fa.resx
│ │ ├── Error.fi.resx
│ │ ├── Error.fr.resx
│ │ ├── Error.nl.resx
│ │ ├── Error.pt.resx
│ │ ├── Error.ru.resx
│ │ ├── Error.sv.resx
│ │ ├── Error.zh.resx
│ │ ├── _Layout.da.resx
│ │ ├── _Layout.de.resx
│ │ ├── _Layout.en.resx
│ │ ├── _Layout.es.resx
│ │ ├── _Layout.fa.resx
│ │ ├── _Layout.fi.resx
│ │ ├── _Layout.fr.resx
│ │ ├── _Layout.nl.resx
│ │ ├── _Layout.pt.resx
│ │ ├── _Layout.ru.resx
│ │ ├── _Layout.sv.resx
│ │ ├── _Layout.zh.resx
│ │ ├── Redirect.da.resx
│ │ ├── Redirect.de.resx
│ │ ├── Redirect.en.resx
│ │ ├── Redirect.es.resx
│ │ ├── Redirect.fa.resx
│ │ ├── Redirect.fi.resx
│ │ ├── Redirect.fr.resx
│ │ ├── Redirect.nl.resx
│ │ ├── Redirect.pt.resx
│ │ ├── Redirect.ru.resx
│ │ ├── Redirect.sv.resx
│ │ ├── Redirect.zh.resx
│ │ ├── _ScopeListItem.da.resx
│ │ ├── _ScopeListItem.de.resx
│ │ ├── _ScopeListItem.en.resx
│ │ ├── _ScopeListItem.es.resx
│ │ ├── _ScopeListItem.fa.resx
│ │ ├── _ScopeListItem.fi.resx
│ │ ├── _ScopeListItem.fr.resx
│ │ ├── _ScopeListItem.nl.resx
│ │ ├── _ScopeListItem.pt.resx
│ │ ├── _ScopeListItem.ru.resx
│ │ ├── _ScopeListItem.sv.resx
│ │ ├── _ScopeListItem.zh.resx
│ │ ├── _ValidationSummary.da.resx
│ │ ├── _ValidationSummary.de.resx
│ │ ├── _ValidationSummary.en.resx
│ │ ├── _ValidationSummary.es.resx
│ │ ├── _ValidationSummary.fa.resx
│ │ ├── _ValidationSummary.fi.resx
│ │ ├── _ValidationSummary.fr.resx
│ │ ├── _ValidationSummary.nl.resx
│ │ ├── _ValidationSummary.pt.resx
│ │ ├── _ValidationSummary.ru.resx
│ │ ├── _ValidationSummary.sv.resx
│ │ └── _ValidationSummary.zh.resx
│ ├── Scripts
│ │ └── App
│ │ └── components
│ │ ├── CookieConsent.js
│ │ ├── Language.js
│ │ ├── Menu.js
│ │ └── Theme.js
│ ├── serilog.json
│ ├── Services
│ │ ├── AuditEventSink.cs
│ │ └── OpenIdClaimsMappingConfig.cs
│ ├── Skoruba.Duende.IdentityServer.STS.Identity.csproj
│ ├── Startup.cs
│ ├── Styles
│ │ ├── common
│ │ │ ├── _all.scss
│ │ │ ├── common.scss
│ │ │ ├── fonts.scss
│ │ │ ├── form.scss
│ │ │ ├── margin.css
│ │ │ ├── margin.min.css
│ │ │ ├── margin.scss
│ │ │ ├── padding.css
│ │ │ ├── padding.min.css
│ │ │ └── padding.scss
│ │ ├── controls
│ │ │ ├── _all.scss
│ │ │ ├── checkbox.scss
│ │ │ ├── cookieconsent.scss
│ │ │ ├── navbar.scss
│ │ │ ├── QRCode.scss
│ │ │ ├── radio.scss
│ │ │ ├── validation.summary.css
│ │ │ ├── validation.summary.min.css
│ │ │ └── validation.summary.scss
│ │ ├── pages
│ │ │ ├── _all.scss
│ │ │ ├── consent.scss
│ │ │ ├── grants.scss
│ │ │ └── logout.scss
│ │ ├── web.css
│ │ ├── web.min.css
│ │ └── web.scss
│ ├── tempkey.jwk
│ ├── ViewComponents
│ │ └── IdentityServerAdminLinkViewComponent.cs
│ ├── ViewModels
│ │ ├── Account
│ │ │ ├── ExternalLoginConfirmationViewModel.cs
│ │ │ ├── ExternalProvider.cs
│ │ │ ├── ForgotPasswordViewModel.cs
│ │ │ ├── LoggedOutViewModel.cs
│ │ │ ├── LoginInputModel.cs
│ │ │ ├── LoginViewModel.cs
│ │ │ ├── LoginWith2faViewModel.cs
│ │ │ ├── LoginWithRecoveryCodeViewModel.cs
│ │ │ ├── LogoutInputModel.cs
│ │ │ ├── LogoutViewModel.cs
│ │ │ ├── RedirectViewModel.cs
│ │ │ ├── RegisterConfirmationViewModel.cs
│ │ │ ├── RegisterViewModel.cs
│ │ │ ├── RegisterWithoutUsernameViewModel.cs
│ │ │ └── ResetPasswordViewModel.cs
│ │ ├── Consent
│ │ │ ├── ConsentInputModel.cs
│ │ │ ├── ConsentViewModel.cs
│ │ │ ├── ProcessConsentResult.cs
│ │ │ └── ScopeViewModel.cs
│ │ ├── Device
│ │ │ ├── DeviceAuthorizationInputModel.cs
│ │ │ └── DeviceAuthorizationViewModel.cs
│ │ ├── Diagnostics
│ │ │ └── DiagnosticsViewModel.cs
│ │ ├── Grants
│ │ │ └── GrantsViewModel.cs
│ │ ├── Home
│ │ │ └── ErrorViewModel.cs
│ │ └── Manage
│ │ ├── ChangePasswordViewModel.cs
│ │ ├── DeletePersonalDataViewModel.cs
│ │ ├── EnableAuthenticatorViewModel.cs
│ │ ├── ExternalLoginsViewModel.cs
│ │ ├── IndexViewModel.cs
│ │ ├── RemoveLoginViewModel.cs
│ │ ├── SetPasswordViewModel.cs
│ │ ├── ShowRecoveryCodesViewModel.cs
│ │ └── TwoFactorAuthenticationViewModel.cs
│ ├── Views
│ │ ├── Account
│ │ │ ├── ConfirmEmail.cshtml
│ │ │ ├── ExternalLoginConfirmation.cshtml
│ │ │ ├── ExternalLoginFailure.cshtml
│ │ │ ├── ForgotPasswordConfirmation.cshtml
│ │ │ ├── ForgotPassword.cshtml
│ │ │ ├── Lockout.cshtml
│ │ │ ├── LoggedOut.cshtml
│ │ │ ├── Login.cshtml
│ │ │ ├── LoginWith2fa.cshtml
│ │ │ ├── LoginWithRecoveryCode.cshtml
│ │ │ ├── Logout.cshtml
│ │ │ ├── RegisterConfirmation.cshtml
│ │ │ ├── Register.cshtml
│ │ │ ├── RegisterFailure.cshtml
│ │ │ ├── RegisterWithoutUsername.cshtml
│ │ │ ├── ResetPasswordConfirmation.cshtml
│ │ │ └── ResetPassword.cshtml
│ │ ├── Consent
│ │ │ └── Index.cshtml
│ │ ├── Device
│ │ │ ├── Success.cshtml
│ │ │ ├── UserCodeCapture.cshtml
│ │ │ └── UserCodeConfirmation.cshtml
│ │ ├── Diagnostics
│ │ │ └── Index.cshtml
│ │ ├── Grants
│ │ │ └── Index.cshtml
│ │ ├── Home
│ │ │ └── Index.cshtml
│ │ ├── Manage
│ │ │ ├── ChangePassword.cshtml
│ │ │ ├── DeletePersonalData.cshtml
│ │ │ ├── Disable2fa.cshtml
│ │ │ ├── DownloadPersonalData.cshtml
│ │ │ ├── EnableAuthenticator.cshtml
│ │ │ ├── ExternalLogins.cshtml
│ │ │ ├── GenerateRecoveryCodes.cshtml
│ │ │ ├── Index.cshtml
│ │ │ ├── LinkLoginFailure.cshtml
│ │ │ ├── PersonalData.cshtml
│ │ │ ├── ResetAuthenticator.cshtml
│ │ │ ├── SetPassword.cshtml
│ │ │ ├── ShowRecoveryCodes.cshtml
│ │ │ ├── _StatusMessage.cshtml
│ │ │ └── TwoFactorAuthentication.cshtml
│ │ ├── Shared
│ │ │ ├── Common
│ │ │ │ ├── ApplicationVersion.cshtml
│ │ │ │ ├── SelectLanguage.cshtml
│ │ │ │ ├── SelectTheme.cshtml
│ │ │ │ └── ThemeResources.cshtml
│ │ │ ├── Components
│ │ │ │ └── IdentityServerAdminLink
│ │ │ │ └── Default.cshtml
│ │ │ ├── Error.cshtml
│ │ │ ├── _Layout.cshtml
│ │ │ ├── Redirect.cshtml
│ │ │ ├── _ScopeListItem.cshtml
│ │ │ └── _ValidationSummary.cshtml
│ │ ├── _ViewImports.cshtml
│ │ └── _ViewStart.cshtml
│ └── wwwroot
│ ├── dist
│ │ ├── css
│ │ │ ├── bundle.min.css
│ │ │ ├── themes
│ │ │ │ ├── cerulean
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── cosmo
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── cyborg
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── darkly
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── flatly
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── journal
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── litera
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── lumen
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── lux
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── materia
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── minty
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── pulse
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── sandstone
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── simplex
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── sketchy
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── slate
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── solar
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── spacelab
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── superhero
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── united
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ └── yeti
│ │ │ │ └── bootstrap.min.css
│ │ │ ├── web.css
│ │ │ └── web.min.css
│ │ ├── fonts
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ ├── fontawesome-webfont.woff2
│ │ │ ├── open-iconic.eot
│ │ │ ├── open-iconic.otf
│ │ │ ├── open-iconic.svg
│ │ │ ├── open-iconic.ttf
│ │ │ └── open-iconic.woff
│ │ └── js
│ │ └── bundle.min.js
│ ├── favicon.ico
│ ├── images
│ │ └── skoruba-icon.png
│ └── js
│ ├── forgot-password.js
│ ├── qrcode.js
│ ├── qrcode.min.js
│ ├── signin-redirect.js
│ └── signout-redirect.js
├── templates
│ ├── 0-build-template.ps1
│ ├── 1-add-docker-support.ps1
│ ├── 2-publish-template.ps1
│ ├── 3-clean-up.ps1
│ ├── install.ps1
│ ├── template-build
│ │ ├── content
│ │ │ └── Skoruba.Duende.IdentityServer.Admin.sln
│ │ └── Skoruba.Duende.IdentityServer.Admin.Templates.nuspec
│ ├── template-docker
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin
│ │ │ └── Dockerfile
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.Api
│ │ │ └── Dockerfile
│ │ └── SkorubaDuende.IdentityServerAdmin.STS.Identity
│ │ └── Dockerfile
│ └── template-publish
│ ├── content
│ │ ├── docker-compose.dcproj
│ │ ├── docker-compose.override.yml
│ │ ├── docker-compose.vs.debug.yml
│ │ ├── docker-compose.vs.release.yml
│ │ ├── docker-compose.yml
│ │ ├── shared
│ │ │ ├── identitydata.json
│ │ │ ├── identityserverdata.json
│ │ │ ├── nginx
│ │ │ │ └── vhost.d
│ │ │ │ ├── admin.skoruba.local_location
│ │ │ │ └── sts.skoruba.local_location
│ │ │ └── serilog.json
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.sln
│ │ ├── SkorubaDuende.IdentityServerAdmin.AdminUI.sln
│ │ └── src
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin
│ │ │ ├── appsettings.json
│ │ │ ├── Configuration
│ │ │ │ ├── Database
│ │ │ │ │ └── MigrationAssemblyConfiguration.cs
│ │ │ │ └── Test
│ │ │ │ └── StartupTest.cs
│ │ │ ├── Dockerfile
│ │ │ ├── Helpers
│ │ │ │ └── StartupHelpers.cs
│ │ │ ├── identitydata.json
│ │ │ ├── identityserverdata.json
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── serilog.json
│ │ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.csproj
│ │ │ └── Startup.cs
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.Api
│ │ │ ├── appsettings.json
│ │ │ ├── Configuration
│ │ │ │ ├── AdminApiConfiguration.cs
│ │ │ │ ├── ApplicationParts
│ │ │ │ │ ├── GenericControllerRouteConvention.cs
│ │ │ │ │ └── GenericTypeControllerFeatureProvider.cs
│ │ │ │ ├── AuditLogging
│ │ │ │ │ ├── ApiAuditAction.cs
│ │ │ │ │ ├── ApiAuditSubject.cs
│ │ │ │ │ └── AuditLoggingConfiguration.cs
│ │ │ │ ├── Authorization
│ │ │ │ │ └── AuthorizeCheckOperationFilter.cs
│ │ │ │ ├── Constants
│ │ │ │ │ ├── AuthorizationConsts.cs
│ │ │ │ │ └── ConfigurationConsts.cs
│ │ │ │ └── Test
│ │ │ │ └── StartupTest.cs
│ │ │ ├── Controllers
│ │ │ │ ├── ApiResourcesController.cs
│ │ │ │ ├── ApiScopesController.cs
│ │ │ │ ├── ClientsController.cs
│ │ │ │ ├── IdentityProvidersController.cs
│ │ │ │ ├── IdentityResourcesController.cs
│ │ │ │ ├── KeysController.cs
│ │ │ │ ├── PersistedGrantsController.cs
│ │ │ │ ├── RolesController.cs
│ │ │ │ └── UsersController.cs
│ │ │ ├── Dockerfile
│ │ │ ├── Dtos
│ │ │ │ ├── ApiResources
│ │ │ │ │ ├── ApiResourceApiDto.cs
│ │ │ │ │ ├── ApiResourcePropertiesApiDto.cs
│ │ │ │ │ ├── ApiResourcePropertyApiDto.cs
│ │ │ │ │ ├── ApiResourcesApiDto.cs
│ │ │ │ │ ├── ApiSecretApiDto.cs
│ │ │ │ │ └── ApiSecretsApiDto.cs
│ │ │ │ ├── ApiScopes
│ │ │ │ │ ├── ApiScopeApiDto.cs
│ │ │ │ │ ├── ApiScopePropertiesApiDto.cs
│ │ │ │ │ ├── ApiScopePropertyApiDto.cs
│ │ │ │ │ └── ApiScopesApiDto.cs
│ │ │ │ ├── Clients
│ │ │ │ │ ├── ClientApiDto.cs
│ │ │ │ │ ├── ClientClaimApiDto.cs
│ │ │ │ │ ├── ClientClaimsApiDto.cs
│ │ │ │ │ ├── ClientCloneApiDto.cs
│ │ │ │ │ ├── ClientPropertiesApiDto.cs
│ │ │ │ │ ├── ClientPropertyApiDto.cs
│ │ │ │ │ ├── ClientsApiDto.cs
│ │ │ │ │ ├── ClientSecretApiDto.cs
│ │ │ │ │ └── ClientSecretsApiDto.cs
│ │ │ │ ├── IdentityProvider
│ │ │ │ │ ├── IdentityProviderApiDto.cs
│ │ │ │ │ └── IdentityProvidersApiDto.cs
│ │ │ │ ├── IdentityResources
│ │ │ │ │ ├── IdentityResourceApiDto.cs
│ │ │ │ │ ├── IdentityResourcePropertiesApiDto.cs
│ │ │ │ │ ├── IdentityResourcePropertyApiDto.cs
│ │ │ │ │ └── IdentityResourcesApiDto.cs
│ │ │ │ ├── Key
│ │ │ │ │ ├── KeyApiDto.cs
│ │ │ │ │ └── KeysApiDto.cs
│ │ │ │ ├── PersistedGrants
│ │ │ │ │ ├── PersistedGrantApiDto.cs
│ │ │ │ │ ├── PersistedGrantsApiDto.cs
│ │ │ │ │ ├── PersistedGrantSubjectApiDto.cs
│ │ │ │ │ └── PersistedGrantSubjectsApiDto.cs
│ │ │ │ ├── Roles
│ │ │ │ │ ├── RoleClaimApiDto.cs
│ │ │ │ │ └── RoleClaimsApiDto.cs
│ │ │ │ └── Users
│ │ │ │ ├── UserChangePasswordApiDto.cs
│ │ │ │ ├── UserClaimApiDto.cs
│ │ │ │ ├── UserClaimsApiDto.cs
│ │ │ │ ├── UserProviderApiDto.cs
│ │ │ │ ├── UserProviderDeleteApiDto.cs
│ │ │ │ ├── UserProvidersApiDto.cs
│ │ │ │ ├── UserRoleApiDto.cs
│ │ │ │ └── UserRolesApiDto.cs
│ │ │ ├── ExceptionHandling
│ │ │ │ ├── ApiError.cs
│ │ │ │ └── ControllerExceptionFilterAttribute.cs
│ │ │ ├── Helpers
│ │ │ │ ├── Localization
│ │ │ │ │ ├── GenericControllerLocalizer.cs
│ │ │ │ │ └── IGenericControllerLocalizer.cs
│ │ │ │ ├── StartupHelpers.cs
│ │ │ │ └── UrlHelpers.cs
│ │ │ ├── Mappers
│ │ │ │ ├── ApiResourceApiMapperProfile.cs
│ │ │ │ ├── ApiResourceApiMappers.cs
│ │ │ │ ├── ApiScopeApiMapperProfile.cs
│ │ │ │ ├── ApiScopeApiMappers.cs
│ │ │ │ ├── ClientApiMapperProfile.cs
│ │ │ │ ├── ClientApiMappers.cs
│ │ │ │ ├── IdentityMapperProfile.cs
│ │ │ │ ├── IdentityProviderApiMapperProfile.cs
│ │ │ │ ├── IdentityProviderApiMappers.cs
│ │ │ │ ├── IdentityResourceApiMapperProfile.cs
│ │ │ │ ├── IdentityResourceApiMappers.cs
│ │ │ │ ├── KeyApiMapperProfile.cs
│ │ │ │ ├── KeyApiMappers.cs
│ │ │ │ ├── PersistedGrantApiMapperProfile.cs
│ │ │ │ └── PersistedGrantApiMappers.cs
│ │ │ ├── Middlewares
│ │ │ │ └── AuthenticatedTestRequestMiddleware.cs
│ │ │ ├── Program.cs
│ │ │ ├── Properties
│ │ │ │ └── launchSettings.json
│ │ │ ├── Resources
│ │ │ │ ├── ApiErrorResource.Designer.cs
│ │ │ │ ├── ApiErrorResource.nl.resx
│ │ │ │ ├── ApiErrorResource.resx
│ │ │ │ ├── ApiErrorResources.cs
│ │ │ │ └── IApiErrorResources.cs
│ │ │ ├── serilog.json
│ │ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.Api.csproj
│ │ │ └── Startup.cs
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.MySql
│ │ │ ├── Helpers
│ │ │ │ └── MigrationAssembly.cs
│ │ │ ├── Migrations
│ │ │ │ ├── AuditLogging
│ │ │ │ │ ├── 20191120085753_DbInit.cs
│ │ │ │ │ ├── 20191120085753_DbInit.Designer.cs
│ │ │ │ │ ├── 20200419131142_ChangeAuditLogToLong.cs
│ │ │ │ │ ├── 20200419131142_ChangeAuditLogToLong.Designer.cs
│ │ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ │ ├── DataProtection
│ │ │ │ │ ├── 20200419131430_AddDataProtection.cs
│ │ │ │ │ ├── 20200419131430_AddDataProtection.Designer.cs
│ │ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ │ ├── Identity
│ │ │ │ │ ├── 20191120085611_DbInit.cs
│ │ │ │ │ ├── 20191120085611_DbInit.Designer.cs
│ │ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerConfiguration
│ │ │ │ │ ├── 20191120085701_DbInit.cs
│ │ │ │ │ ├── 20191120085701_DbInit.Designer.cs
│ │ │ │ │ ├── 20201108173253_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201108173253_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20210318073713_AddRequireResourceIndicator.cs
│ │ │ │ │ ├── 20210318073713_AddRequireResourceIndicator.Designer.cs
│ │ │ │ │ ├── 20211211141521_UpdateISKeysIDP.cs
│ │ │ │ │ ├── 20211211141521_UpdateISKeysIDP.Designer.cs
│ │ │ │ │ ├── 20220125140746_UpdateToIS62.cs
│ │ │ │ │ ├── 20220125140746_UpdateToIS62.Designer.cs
│ │ │ │ │ ├── 20230119113834_UpdateToIS621.cs
│ │ │ │ │ ├── 20230119113834_UpdateToIS621.Designer.cs
│ │ │ │ │ ├── 20240206153506_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206153506_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerGrants
│ │ │ │ │ ├── 20191120085729_DbInit.cs
│ │ │ │ │ ├── 20191120085729_DbInit.Designer.cs
│ │ │ │ │ ├── 20201108173143_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201108173143_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20211211141458_UpdateISKeysIDP.cs
│ │ │ │ │ ├── 20211211141458_UpdateISKeysIDP.Designer.cs
│ │ │ │ │ ├── 20230119113811_UpdateToIS621.cs
│ │ │ │ │ ├── 20230119113811_UpdateToIS621.Designer.cs
│ │ │ │ │ ├── 20240206153511_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206153511_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ │ └── Logging
│ │ │ │ ├── 20191120085635_DbInit.cs
│ │ │ │ ├── 20191120085635_DbInit.Designer.cs
│ │ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ │ └── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.MySql.csproj
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.PostgreSQL
│ │ │ ├── Helpers
│ │ │ │ └── MigrationAssembly.cs
│ │ │ ├── Migrations
│ │ │ │ ├── AuditLogging
│ │ │ │ │ ├── 20191120100220_DbInit.cs
│ │ │ │ │ ├── 20191120100220_DbInit.Designer.cs
│ │ │ │ │ ├── 20200419130247_ChangeAuditLogToLong.cs
│ │ │ │ │ ├── 20200419130247_ChangeAuditLogToLong.Designer.cs
│ │ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ │ ├── DataProtection
│ │ │ │ │ ├── 20200419131536_AddDataProtection.cs
│ │ │ │ │ ├── 20200419131536_AddDataProtection.Designer.cs
│ │ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ │ ├── Identity
│ │ │ │ │ ├── 20191120100035_DbInit.cs
│ │ │ │ │ ├── 20191120100035_DbInit.Designer.cs
│ │ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerConfiguration
│ │ │ │ │ ├── 20191120100129_DbInit.cs
│ │ │ │ │ ├── 20191120100129_DbInit.Designer.cs
│ │ │ │ │ ├── 20201108170812_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201108170812_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20210310153645_AddRequireResourceIndicator.cs
│ │ │ │ │ ├── 20210310153645_AddRequireResourceIndicator.Designer.cs
│ │ │ │ │ ├── 20211211153855_UpdateISKeysIDP.cs
│ │ │ │ │ ├── 20211211153855_UpdateISKeysIDP.Designer.cs
│ │ │ │ │ ├── 20220125145446_UpdateToIS6.cs
│ │ │ │ │ ├── 20220125145446_UpdateToIS6.Designer.cs
│ │ │ │ │ ├── 20230119113211_UpdateToIS61.cs
│ │ │ │ │ ├── 20230119113211_UpdateToIS61.Designer.cs
│ │ │ │ │ ├── 20240206155420_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206155420_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerGrants
│ │ │ │ │ ├── 20191120100155_DbInit.cs
│ │ │ │ │ ├── 20191120100155_DbInit.Designer.cs
│ │ │ │ │ ├── 20201108165927_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201108165927_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20211211153835_UpdateISKeysIDP.cs
│ │ │ │ │ ├── 20211211153835_UpdateISKeysIDP.Designer.cs
│ │ │ │ │ ├── 20230119113152_UpdateToIS61.cs
│ │ │ │ │ ├── 20230119113152_UpdateToIS61.Designer.cs
│ │ │ │ │ ├── 20240206155424_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206155424_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ │ └── Logging
│ │ │ │ ├── 20191120100104_DbInit.cs
│ │ │ │ ├── 20191120100104_DbInit.Designer.cs
│ │ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ │ └── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.PostgreSQL.csproj
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.Shared
│ │ │ ├── Constants
│ │ │ │ └── TableConsts.cs
│ │ │ ├── DbContexts
│ │ │ │ ├── AdminAuditLogDbContext.cs
│ │ │ │ ├── AdminIdentityDbContext.cs
│ │ │ │ ├── AdminLogDbContext.cs
│ │ │ │ ├── IdentityServerConfigurationDbContext.cs
│ │ │ │ ├── IdentityServerDataProtectionDbContext.cs
│ │ │ │ └── IdentityServerPersistedGrantDbContext.cs
│ │ │ ├── Entities
│ │ │ │ └── Identity
│ │ │ │ ├── UserIdentityClaim.cs
│ │ │ │ ├── UserIdentity.cs
│ │ │ │ ├── UserIdentityRoleClaim.cs
│ │ │ │ ├── UserIdentityRole.cs
│ │ │ │ ├── UserIdentityUserLogin.cs
│ │ │ │ ├── UserIdentityUserRole.cs
│ │ │ │ └── UserIdentityUserToken.cs
│ │ │ ├── Helpers
│ │ │ │ └── DbMigrationHelpers.cs
│ │ │ └── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.Shared.csproj
│ │ ├── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.SqlServer
│ │ │ ├── Helpers
│ │ │ │ └── MigrationAssembly.cs
│ │ │ ├── Migrations
│ │ │ │ ├── AuditLogging
│ │ │ │ │ ├── 20191119164022_DbInit.cs
│ │ │ │ │ ├── 20191119164022_DbInit.Designer.cs
│ │ │ │ │ ├── 20200419130339_ChangeAuditLogToLong.cs
│ │ │ │ │ ├── 20200419130339_ChangeAuditLogToLong.Designer.cs
│ │ │ │ │ └── AdminAuditLogDbContextModelSnapshot.cs
│ │ │ │ ├── DataProtection
│ │ │ │ │ ├── 20200221180348_DbInit.cs
│ │ │ │ │ ├── 20200221180348_DbInit.Designer.cs
│ │ │ │ │ └── IdentityServerDataProtectionDbContextModelSnapshot.cs
│ │ │ │ ├── Identity
│ │ │ │ │ ├── 20191119163918_DbInit.cs
│ │ │ │ │ ├── 20191119163918_DbInit.Designer.cs
│ │ │ │ │ └── AdminIdentityDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerConfiguration
│ │ │ │ │ ├── 20191119163952_DbInit.cs
│ │ │ │ │ ├── 20191119163952_DbInit.Designer.cs
│ │ │ │ │ ├── 20201030101938_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201030101938_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20210310151745_AddRequireResourceIndicator.cs
│ │ │ │ │ ├── 20210310151745_AddRequireResourceIndicator.Designer.cs
│ │ │ │ │ ├── 20211111141154_AddIdentityServerProviders.cs
│ │ │ │ │ ├── 20211111141154_AddIdentityServerProviders.Designer.cs
│ │ │ │ │ ├── 20220116154116_UpdateToIS6.cs
│ │ │ │ │ ├── 20220116154116_UpdateToIS6.Designer.cs
│ │ │ │ │ ├── 20221115182001_UpdateToIS61.cs
│ │ │ │ │ ├── 20221115182001_UpdateToIS61.Designer.cs
│ │ │ │ │ ├── 20240206133328_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206133328_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerConfigurationDbContextModelSnapshot.cs
│ │ │ │ ├── IdentityServerGrants
│ │ │ │ │ ├── 20191119164007_DbInit.cs
│ │ │ │ │ ├── 20191119164007_DbInit.Designer.cs
│ │ │ │ │ ├── 20201030101834_UpdateIdentityServerToVersion4.cs
│ │ │ │ │ ├── 20201030101834_UpdateIdentityServerToVersion4.Designer.cs
│ │ │ │ │ ├── 20211111131819_AddIdentityServerKeys.cs
│ │ │ │ │ ├── 20211111131819_AddIdentityServerKeys.Designer.cs
│ │ │ │ │ ├── 20221115181936_UpdateToIS61.cs
│ │ │ │ │ ├── 20221115181936_UpdateToIS61.Designer.cs
│ │ │ │ │ ├── 20240206133332_IdentityServerV7.cs
│ │ │ │ │ ├── 20240206133332_IdentityServerV7.Designer.cs
│ │ │ │ │ └── IdentityServerPersistedGrantDbContextModelSnapshot.cs
│ │ │ │ └── Logging
│ │ │ │ ├── 20191119163936_DbInit.cs
│ │ │ │ ├── 20191119163936_DbInit.Designer.cs
│ │ │ │ └── AdminLogDbContextModelSnapshot.cs
│ │ │ └── SkorubaDuende.IdentityServerAdmin.Admin.EntityFramework.SqlServer.csproj
│ │ ├── SkorubaDuende.IdentityServerAdmin.Shared
│ │ │ ├── Dtos
│ │ │ │ ├── Identity
│ │ │ │ │ ├── IdentityRoleClaimDto.cs
│ │ │ │ │ ├── IdentityRoleClaimsDto.cs
│ │ │ │ │ ├── IdentityRoleDto.cs
│ │ │ │ │ ├── IdentityRolesDto.cs
│ │ │ │ │ ├── IdentityUserClaimDto.cs
│ │ │ │ │ ├── IdentityUserClaimsDto.cs
│ │ │ │ │ ├── IdentityUserDto.cs
│ │ │ │ │ ├── IdentityUserProviderDto.cs
│ │ │ │ │ ├── IdentityUserProvidersDto.cs
│ │ │ │ │ ├── IdentityUserRolesDto.cs
│ │ │ │ │ └── IdentityUsersDto.cs
│ │ │ │ └── IdentityUserChangePasswordDto.cs
│ │ │ └── SkorubaDuende.IdentityServerAdmin.Shared.csproj
│ │ └── SkorubaDuende.IdentityServerAdmin.STS.Identity
│ │ ├── appsettings.json
│ │ ├── Configuration
│ │ │ ├── AccountOptions.cs
│ │ │ ├── AdminConfiguration.cs
│ │ │ ├── ApplicationParts
│ │ │ │ ├── GenericControllerRouteConvention.cs
│ │ │ │ └── GenericTypeControllerFeatureProvider.cs
│ │ │ ├── ConsentOptions.cs
│ │ │ ├── Constants
│ │ │ │ ├── AddressClaimConstants.cs
│ │ │ │ ├── AuthorizationConsts.cs
│ │ │ │ └── ConfigurationConsts.cs
│ │ │ ├── CultureConfiguration.cs
│ │ │ ├── ExternalProvidersConfiguration.cs
│ │ │ ├── Interfaces
│ │ │ │ └── IRootConfiguration.cs
│ │ │ ├── RootConfiguration.cs
│ │ │ └── Test
│ │ │ └── StartupTest.cs
│ │ ├── Controllers
│ │ │ ├── AccountController.cs
│ │ │ ├── ConsentController.cs
│ │ │ ├── DeviceController.cs
│ │ │ ├── DiagnosticsController.cs
│ │ │ ├── GrantsController.cs
│ │ │ ├── HomeController.cs
│ │ │ └── ManageController.cs
│ │ ├── Dockerfile
│ │ ├── gulpfile.js
│ │ ├── Helpers
│ │ │ ├── ApplicationSignInManager.cs
│ │ │ ├── DelegationGrantValidator.cs
│ │ │ ├── Extensions.cs
│ │ │ ├── IdentityProvidersHelpers.cs
│ │ │ ├── IdentityServerBuilderExtensions.cs
│ │ │ ├── KeyValuePairExtensions.cs
│ │ │ ├── Localization
│ │ │ │ ├── GenericServiceLocalizer.cs
│ │ │ │ ├── IGenericControllerLocalizer.cs
│ │ │ │ └── LoginPolicyResolutionLocalizer.cs
│ │ │ ├── Md5HashHelper.cs
│ │ │ ├── OpenidClaimHelpers.cs
│ │ │ ├── OpenIDProfile.cs
│ │ │ ├── SecurityHeadersAttribute.cs
│ │ │ ├── StartupHelpers.cs
│ │ │ ├── TagHelpers
│ │ │ │ ├── GravatarTagHelper.cs
│ │ │ │ └── SwitchTagHelper.cs
│ │ │ └── UserResolver.cs
│ │ ├── package.json
│ │ ├── package-lock.json
│ │ ├── Program.cs
│ │ ├── Properties
│ │ │ └── launchSettings.json
│ │ ├── Resources
│ │ │ ├── Controllers
│ │ │ │ ├── AccountController.da.resx
│ │ │ │ ├── AccountController.de.resx
│ │ │ │ ├── AccountController.en.resx
│ │ │ │ ├── AccountController.es.resx
│ │ │ │ ├── AccountController.fa.resx
│ │ │ │ ├── AccountController.fi.resx
│ │ │ │ ├── AccountController.fr.resx
│ │ │ │ ├── AccountController.nl.resx
│ │ │ │ ├── AccountController.pt.resx
│ │ │ │ ├── AccountController.ru.resx
│ │ │ │ ├── AccountController.sv.resx
│ │ │ │ ├── AccountController.zh.resx
│ │ │ │ ├── ManageController.da.resx
│ │ │ │ ├── ManageController.de.resx
│ │ │ │ ├── ManageController.en.resx
│ │ │ │ ├── ManageController.es.resx
│ │ │ │ ├── ManageController.fa.resx
│ │ │ │ ├── ManageController.fi.resx
│ │ │ │ ├── ManageController.fr.resx
│ │ │ │ ├── ManageController.nl.resx
│ │ │ │ ├── ManageController.pt.resx
│ │ │ │ ├── ManageController.ru.resx
│ │ │ │ ├── ManageController.sv.resx
│ │ │ │ └── ManageController.zh.resx
│ │ │ └── Views
│ │ │ ├── Account
│ │ │ │ ├── ConfirmEmail.da.resx
│ │ │ │ ├── ConfirmEmail.de.resx
│ │ │ │ ├── ConfirmEmail.en.resx
│ │ │ │ ├── ConfirmEmail.es.resx
│ │ │ │ ├── ConfirmEmail.fa.resx
│ │ │ │ ├── ConfirmEmail.fi.resx
│ │ │ │ ├── ConfirmEmail.fr.resx
│ │ │ │ ├── ConfirmEmail.nl.resx
│ │ │ │ ├── ConfirmEmail.pt.resx
│ │ │ │ ├── ConfirmEmail.ru.resx
│ │ │ │ ├── ConfirmEmail.sv.resx
│ │ │ │ ├── ConfirmEmail.zh.resx
│ │ │ │ ├── ExternalLoginConfirmation.da.resx
│ │ │ │ ├── ExternalLoginConfirmation.de.resx
│ │ │ │ ├── ExternalLoginConfirmation.en.resx
│ │ │ │ ├── ExternalLoginConfirmation.es.resx
│ │ │ │ ├── ExternalLoginConfirmation.fa.resx
│ │ │ │ ├── ExternalLoginConfirmation.fi.resx
│ │ │ │ ├── ExternalLoginConfirmation.fr.resx
│ │ │ │ ├── ExternalLoginConfirmation.nl.resx
│ │ │ │ ├── ExternalLoginConfirmation.pt.resx
│ │ │ │ ├── ExternalLoginConfirmation.ru.resx
│ │ │ │ ├── ExternalLoginConfirmation.sv.resx
│ │ │ │ ├── ExternalLoginConfirmation.zh.resx
│ │ │ │ ├── ExternalLoginFailure.da.resx
│ │ │ │ ├── ExternalLoginFailure.de.resx
│ │ │ │ ├── ExternalLoginFailure.en.resx
│ │ │ │ ├── ExternalLoginFailure.es.resx
│ │ │ │ ├── ExternalLoginFailure.fa.resx
│ │ │ │ ├── ExternalLoginFailure.fi.resx
│ │ │ │ ├── ExternalLoginFailure.fr.resx
│ │ │ │ ├── ExternalLoginFailure.nl.resx
│ │ │ │ ├── ExternalLoginFailure.pt.resx
│ │ │ │ ├── ExternalLoginFailure.ru.resx
│ │ │ │ ├── ExternalLoginFailure.sv.resx
│ │ │ │ ├── ExternalLoginFailure.zh.resx
│ │ │ │ ├── ForgotPasswordConfirmation.da.resx
│ │ │ │ ├── ForgotPasswordConfirmation.de.resx
│ │ │ │ ├── ForgotPasswordConfirmation.en.resx
│ │ │ │ ├── ForgotPasswordConfirmation.es.resx
│ │ │ │ ├── ForgotPasswordConfirmation.fa.resx
│ │ │ │ ├── ForgotPasswordConfirmation.fi.resx
│ │ │ │ ├── ForgotPasswordConfirmation.fr.resx
│ │ │ │ ├── ForgotPasswordConfirmation.nl.resx
│ │ │ │ ├── ForgotPasswordConfirmation.pt.resx
│ │ │ │ ├── ForgotPasswordConfirmation.ru.resx
│ │ │ │ ├── ForgotPasswordConfirmation.sv.resx
│ │ │ │ ├── ForgotPasswordConfirmation.zh.resx
│ │ │ │ ├── ForgotPassword.da.resx
│ │ │ │ ├── ForgotPassword.de.resx
│ │ │ │ ├── ForgotPassword.en.resx
│ │ │ │ ├── ForgotPassword.es.resx
│ │ │ │ ├── ForgotPassword.fa.resx
│ │ │ │ ├── ForgotPassword.fi.resx
│ │ │ │ ├── ForgotPassword.fr.resx
│ │ │ │ ├── ForgotPassword.nl.resx
│ │ │ │ ├── ForgotPassword.pt.resx
│ │ │ │ ├── ForgotPassword.ru.resx
│ │ │ │ ├── ForgotPassword.sv.resx
│ │ │ │ ├── ForgotPassword.zh.resx
│ │ │ │ ├── Lockout.da.resx
│ │ │ │ ├── Lockout.de.resx
│ │ │ │ ├── Lockout.en.resx
│ │ │ │ ├── Lockout.es.resx
│ │ │ │ ├── Lockout.fa.resx
│ │ │ │ ├── Lockout.fi.resx
│ │ │ │ ├── Lockout.fr.resx
│ │ │ │ ├── Lockout.nl.resx
│ │ │ │ ├── Lockout.pt.resx
│ │ │ │ ├── Lockout.ru.resx
│ │ │ │ ├── Lockout.sv.resx
│ │ │ │ ├── Lockout.zh.resx
│ │ │ │ ├── LoggedOut.da.resx
│ │ │ │ ├── LoggedOut.de.resx
│ │ │ │ ├── LoggedOut.en.resx
│ │ │ │ ├── LoggedOut.es.resx
│ │ │ │ ├── LoggedOut.fa.resx
│ │ │ │ ├── LoggedOut.fi.resx
│ │ │ │ ├── LoggedOut.fr.resx
│ │ │ │ ├── LoggedOut.nl.resx
│ │ │ │ ├── LoggedOut.pt.resx
│ │ │ │ ├── LoggedOut.ru.resx
│ │ │ │ ├── LoggedOut.sv.resx
│ │ │ │ ├── LoggedOut.zh.resx
│ │ │ │ ├── Login.da.resx
│ │ │ │ ├── Login.de.resx
│ │ │ │ ├── Login.en.resx
│ │ │ │ ├── Login.es.resx
│ │ │ │ ├── Login.fa.resx
│ │ │ │ ├── Login.fi.resx
│ │ │ │ ├── Login.fr.resx
│ │ │ │ ├── Login.nl.resx
│ │ │ │ ├── Login.pt.resx
│ │ │ │ ├── Login.ru.resx
│ │ │ │ ├── Login.sv.resx
│ │ │ │ ├── LoginWith2fa.da.resx
│ │ │ │ ├── LoginWith2fa.de.resx
│ │ │ │ ├── LoginWith2fa.en.resx
│ │ │ │ ├── LoginWith2fa.es.resx
│ │ │ │ ├── LoginWith2fa.fa.resx
│ │ │ │ ├── LoginWith2fa.fi.resx
│ │ │ │ ├── LoginWith2fa.fr.resx
│ │ │ │ ├── LoginWith2fa.nl.resx
│ │ │ │ ├── LoginWith2fa.pt.resx
│ │ │ │ ├── LoginWith2fa.ru.resx
│ │ │ │ ├── LoginWith2fa.sv.resx
│ │ │ │ ├── LoginWith2fa.zh.resx
│ │ │ │ ├── LoginWithRecoveryCode.da.resx
│ │ │ │ ├── LoginWithRecoveryCode.de.resx
│ │ │ │ ├── LoginWithRecoveryCode.en.resx
│ │ │ │ ├── LoginWithRecoveryCode.es.resx
│ │ │ │ ├── LoginWithRecoveryCode.fa.resx
│ │ │ │ ├── LoginWithRecoveryCode.fi.resx
│ │ │ │ ├── LoginWithRecoveryCode.fr.resx
│ │ │ │ ├── LoginWithRecoveryCode.nl.resx
│ │ │ │ ├── LoginWithRecoveryCode.pt.resx
│ │ │ │ ├── LoginWithRecoveryCode.ru.resx
│ │ │ │ ├── LoginWithRecoveryCode.sv.resx
│ │ │ │ ├── LoginWithRecoveryCode.zh.resx
│ │ │ │ ├── Login.zh.resx
│ │ │ │ ├── Logout.da.resx
│ │ │ │ ├── Logout.de.resx
│ │ │ │ ├── Logout.en.resx
│ │ │ │ ├── Logout.es.resx
│ │ │ │ ├── Logout.fa.resx
│ │ │ │ ├── Logout.fi.resx
│ │ │ │ ├── Logout.fr.resx
│ │ │ │ ├── Logout.nl.resx
│ │ │ │ ├── Logout.pt.resx
│ │ │ │ ├── Logout.ru.resx
│ │ │ │ ├── Logout.sv.resx
│ │ │ │ ├── Logout.zh.resx
│ │ │ │ ├── RegisterConfirmation.da.resx
│ │ │ │ ├── RegisterConfirmation.de.resx
│ │ │ │ ├── RegisterConfirmation.en.resx
│ │ │ │ ├── RegisterConfirmation.es.resx
│ │ │ │ ├── RegisterConfirmation.fa.resx
│ │ │ │ ├── RegisterConfirmation.fi.resx
│ │ │ │ ├── RegisterConfirmation.fr.resx
│ │ │ │ ├── RegisterConfirmation.nl.resx
│ │ │ │ ├── RegisterConfirmation.pt.resx
│ │ │ │ ├── RegisterConfirmation.ru.resx
│ │ │ │ ├── RegisterConfirmation.sv.resx
│ │ │ │ ├── RegisterConfirmation.zh.resx
│ │ │ │ ├── Register.da.resx
│ │ │ │ ├── Register.de.resx
│ │ │ │ ├── Register.en.resx
│ │ │ │ ├── Register.es.resx
│ │ │ │ ├── RegisterFailure.da.resx
│ │ │ │ ├── RegisterFailure.de.resx
│ │ │ │ ├── RegisterFailure.es.resx
│ │ │ │ ├── RegisterFailure.fa.resx
│ │ │ │ ├── RegisterFailure.fr.resx
│ │ │ │ ├── RegisterFailure.pt.resx
│ │ │ │ ├── RegisterFailure.resx
│ │ │ │ ├── RegisterFailure.sv.resx
│ │ │ │ ├── RegisterFailure.zh.resx
│ │ │ │ ├── Register.fa.resx
│ │ │ │ ├── Register.fi.resx
│ │ │ │ ├── Register.fr.resx
│ │ │ │ ├── Register.nl.resx
│ │ │ │ ├── Register.pt.resx
│ │ │ │ ├── Register.ru.resx
│ │ │ │ ├── Register.sv.resx
│ │ │ │ ├── RegisterWithoutUserName.da.resx
│ │ │ │ ├── RegisterWithoutUserName.de.resx
│ │ │ │ ├── RegisterWithoutUserName.en.resx
│ │ │ │ ├── RegisterWithoutUserName.es.resx
│ │ │ │ ├── RegisterWithoutUserName.fa.resx
│ │ │ │ ├── RegisterWithoutUserName.fi.resx
│ │ │ │ ├── RegisterWithoutUserName.fr.resx
│ │ │ │ ├── RegisterWithoutUserName.nl.resx
│ │ │ │ ├── RegisterWithoutUserName.pt.resx
│ │ │ │ ├── RegisterWithoutUserName.ru.resx
│ │ │ │ ├── RegisterWithoutUserName.sv.resx
│ │ │ │ ├── RegisterWithoutUserName.zh.resx
│ │ │ │ ├── Register.zh.resx
│ │ │ │ ├── ResetPasswordConfirmation.da.resx
│ │ │ │ ├── ResetPasswordConfirmation.de.resx
│ │ │ │ ├── ResetPasswordConfirmation.en.resx
│ │ │ │ ├── ResetPasswordConfirmation.es.resx
│ │ │ │ ├── ResetPasswordConfirmation.fa.resx
│ │ │ │ ├── ResetPasswordConfirmation.fi.resx
│ │ │ │ ├── ResetPasswordConfirmation.fr.resx
│ │ │ │ ├── ResetPasswordConfirmation.nl.resx
│ │ │ │ ├── ResetPasswordConfirmation.pt.resx
│ │ │ │ ├── ResetPasswordConfirmation.ru.resx
│ │ │ │ ├── ResetPasswordConfirmation.sv.resx
│ │ │ │ ├── ResetPasswordConfirmation.zh.resx
│ │ │ │ ├── ResetPassword.da.resx
│ │ │ │ ├── ResetPassword.de.resx
│ │ │ │ ├── ResetPassword.en.resx
│ │ │ │ ├── ResetPassword.es.resx
│ │ │ │ ├── ResetPassword.fa.resx
│ │ │ │ ├── ResetPassword.fi.resx
│ │ │ │ ├── ResetPassword.fr.resx
│ │ │ │ ├── ResetPassword.nl.resx
│ │ │ │ ├── ResetPassword.pt.resx
│ │ │ │ ├── ResetPassword.ru.resx
│ │ │ │ ├── ResetPassword.sv.resx
│ │ │ │ └── ResetPassword.zh.resx
│ │ │ ├── Consent
│ │ │ │ ├── Index.da.resx
│ │ │ │ ├── Index.de.resx
│ │ │ │ ├── Index.en.resx
│ │ │ │ ├── Index.es.resx
│ │ │ │ ├── Index.fa.resx
│ │ │ │ ├── Index.fi.resx
│ │ │ │ ├── Index.fr.resx
│ │ │ │ ├── Index.nl.resx
│ │ │ │ ├── Index.pt.resx
│ │ │ │ ├── Index.ru.resx
│ │ │ │ ├── Index.sv.resx
│ │ │ │ └── Index.zh.resx
│ │ │ ├── Device
│ │ │ │ ├── Success.da.resx
│ │ │ │ ├── Success.de.resx
│ │ │ │ ├── Success.en.resx
│ │ │ │ ├── Success.es.resx
│ │ │ │ ├── Success.fa.resx
│ │ │ │ ├── Success.fi.resx
│ │ │ │ ├── Success.fr.resx
│ │ │ │ ├── Success.nl.resx
│ │ │ │ ├── Success.pt.resx
│ │ │ │ ├── Success.ru.resx
│ │ │ │ ├── Success.sv.resx
│ │ │ │ ├── Success.zh.resx
│ │ │ │ ├── UserCodeCapture.da.resx
│ │ │ │ ├── UserCodeCapture.de.resx
│ │ │ │ ├── UserCodeCapture.en.resx
│ │ │ │ ├── UserCodeCapture.es.resx
│ │ │ │ ├── UserCodeCapture.fa.resx
│ │ │ │ ├── UserCodeCapture.fi.resx
│ │ │ │ ├── UserCodeCapture.fr.resx
│ │ │ │ ├── UserCodeCapture.nl.resx
│ │ │ │ ├── UserCodeCapture.pt.resx
│ │ │ │ ├── UserCodeCapture.ru.resx
│ │ │ │ ├── UserCodeCapture.sv.resx
│ │ │ │ ├── UserCodeCapture.zh.resx
│ │ │ │ ├── UserCodeConfirmation.da.resx
│ │ │ │ ├── UserCodeConfirmation.de.resx
│ │ │ │ ├── UserCodeConfirmation.en.resx
│ │ │ │ ├── UserCodeConfirmation.es.resx
│ │ │ │ ├── UserCodeConfirmation.fa.resx
│ │ │ │ ├── UserCodeConfirmation.fi.resx
│ │ │ │ ├── UserCodeConfirmation.fr.resx
│ │ │ │ ├── UserCodeConfirmation.nl.resx
│ │ │ │ ├── UserCodeConfirmation.pt.resx
│ │ │ │ ├── UserCodeConfirmation.ru.resx
│ │ │ │ ├── UserCodeConfirmation.sv.resx
│ │ │ │ └── UserCodeConfirmation.zh.resx
│ │ │ ├── Diagnostics
│ │ │ │ ├── Index.da.resx
│ │ │ │ ├── Index.de.resx
│ │ │ │ ├── Index.en.resx
│ │ │ │ ├── Index.es.resx
│ │ │ │ ├── Index.fa.resx
│ │ │ │ ├── Index.fi.resx
│ │ │ │ ├── Index.fr.resx
│ │ │ │ ├── Index.nl.resx
│ │ │ │ ├── Index.pt.resx
│ │ │ │ ├── Index.ru.resx
│ │ │ │ ├── Index.sv.resx
│ │ │ │ └── Index.zh.resx
│ │ │ ├── Grants
│ │ │ │ ├── Index.da.resx
│ │ │ │ ├── Index.de.resx
│ │ │ │ ├── Index.en.resx
│ │ │ │ ├── Index.es.resx
│ │ │ │ ├── Index.fa.resx
│ │ │ │ ├── Index.fi.resx
│ │ │ │ ├── Index.fr.resx
│ │ │ │ ├── Index.nl.resx
│ │ │ │ ├── Index.pt.resx
│ │ │ │ ├── Index.ru.resx
│ │ │ │ ├── Index.sv.resx
│ │ │ │ └── Index.zh.resx
│ │ │ ├── Home
│ │ │ │ ├── Index.da.resx
│ │ │ │ ├── Index.de.resx
│ │ │ │ ├── Index.en.resx
│ │ │ │ ├── Index.es.resx
│ │ │ │ ├── Index.fa.resx
│ │ │ │ ├── Index.fi.resx
│ │ │ │ ├── Index.fr.resx
│ │ │ │ ├── Index.nl.resx
│ │ │ │ ├── Index.pt.resx
│ │ │ │ ├── Index.ru.resx
│ │ │ │ ├── Index.sv.resx
│ │ │ │ └── Index.zh.resx
│ │ │ ├── Manage
│ │ │ │ ├── ChangePassword.da.resx
│ │ │ │ ├── ChangePassword.de.resx
│ │ │ │ ├── ChangePassword.en.resx
│ │ │ │ ├── ChangePassword.es.resx
│ │ │ │ ├── ChangePassword.fa.resx
│ │ │ │ ├── ChangePassword.fi.resx
│ │ │ │ ├── ChangePassword.fr.resx
│ │ │ │ ├── ChangePassword.nl.resx
│ │ │ │ ├── ChangePassword.pt.resx
│ │ │ │ ├── ChangePassword.ru.resx
│ │ │ │ ├── ChangePassword.sv.resx
│ │ │ │ ├── ChangePassword.zh.resx
│ │ │ │ ├── DeletePersonalData.da.resx
│ │ │ │ ├── DeletePersonalData.de.resx
│ │ │ │ ├── DeletePersonalData.en.resx
│ │ │ │ ├── DeletePersonalData.es.resx
│ │ │ │ ├── DeletePersonalData.fa.resx
│ │ │ │ ├── DeletePersonalData.fi.resx
│ │ │ │ ├── DeletePersonalData.fr.resx
│ │ │ │ ├── DeletePersonalData.nl.resx
│ │ │ │ ├── DeletePersonalData.pt.resx
│ │ │ │ ├── DeletePersonalData.ru.resx
│ │ │ │ ├── DeletePersonalData.sv.resx
│ │ │ │ ├── DeletePersonalData.zh.resx
│ │ │ │ ├── Disable2fa.da.resx
│ │ │ │ ├── Disable2fa.de.resx
│ │ │ │ ├── Disable2fa.en.resx
│ │ │ │ ├── Disable2fa.es.resx
│ │ │ │ ├── Disable2fa.fa.resx
│ │ │ │ ├── Disable2fa.fi.resx
│ │ │ │ ├── Disable2fa.fr.resx
│ │ │ │ ├── Disable2fa.nl.resx
│ │ │ │ ├── Disable2fa.pt.resx
│ │ │ │ ├── Disable2fa.ru.resx
│ │ │ │ ├── Disable2fa.sv.resx
│ │ │ │ ├── Disable2fa.zh.resx
│ │ │ │ ├── DownloadPersonalData.da.resx
│ │ │ │ ├── DownloadPersonalData.de.resx
│ │ │ │ ├── DownloadPersonalData.en.resx
│ │ │ │ ├── DownloadPersonalData.es.resx
│ │ │ │ ├── DownloadPersonalData.fa.resx
│ │ │ │ ├── DownloadPersonalData.fi.resx
│ │ │ │ ├── DownloadPersonalData.fr.resx
│ │ │ │ ├── DownloadPersonalData.nl.resx
│ │ │ │ ├── DownloadPersonalData.pt.resx
│ │ │ │ ├── DownloadPersonalData.ru.resx
│ │ │ │ ├── DownloadPersonalData.sv.resx
│ │ │ │ ├── DownloadPersonalData.zh.resx
│ │ │ │ ├── EnableAuthenticator.da.resx
│ │ │ │ ├── EnableAuthenticator.de.resx
│ │ │ │ ├── EnableAuthenticator.en.resx
│ │ │ │ ├── EnableAuthenticator.es.resx
│ │ │ │ ├── EnableAuthenticator.fa.resx
│ │ │ │ ├── EnableAuthenticator.fi.resx
│ │ │ │ ├── EnableAuthenticator.fr.resx
│ │ │ │ ├── EnableAuthenticator.nl.resx
│ │ │ │ ├── EnableAuthenticator.pt.resx
│ │ │ │ ├── EnableAuthenticator.ru.resx
│ │ │ │ ├── EnableAuthenticator.sv.resx
│ │ │ │ ├── EnableAuthenticator.zh.resx
│ │ │ │ ├── ExternalLogins.da.resx
│ │ │ │ ├── ExternalLogins.de.resx
│ │ │ │ ├── ExternalLogins.en.resx
│ │ │ │ ├── ExternalLogins.es.resx
│ │ │ │ ├── ExternalLogins.fa.resx
│ │ │ │ ├── ExternalLogins.fi.resx
│ │ │ │ ├── ExternalLogins.fr.resx
│ │ │ │ ├── ExternalLogins.nl.resx
│ │ │ │ ├── ExternalLogins.pt.resx
│ │ │ │ ├── ExternalLogins.ru.resx
│ │ │ │ ├── ExternalLogins.sv.resx
│ │ │ │ ├── ExternalLogins.zh.resx
│ │ │ │ ├── GenerateRecoveryCodes.da.resx
│ │ │ │ ├── GenerateRecoveryCodes.de.resx
│ │ │ │ ├── GenerateRecoveryCodes.en.resx
│ │ │ │ ├── GenerateRecoveryCodes.es.resx
│ │ │ │ ├── GenerateRecoveryCodes.fa.resx
│ │ │ │ ├── GenerateRecoveryCodes.fi.resx
│ │ │ │ ├── GenerateRecoveryCodes.fr.resx
│ │ │ │ ├── GenerateRecoveryCodes.nl.resx
│ │ │ │ ├── GenerateRecoveryCodes.pt.resx
│ │ │ │ ├── GenerateRecoveryCodes.ru.resx
│ │ │ │ ├── GenerateRecoveryCodes.sv.resx
│ │ │ │ ├── GenerateRecoveryCodes.zh.resx
│ │ │ │ ├── Index.da.resx
│ │ │ │ ├── Index.de.resx
│ │ │ │ ├── Index.en.resx
│ │ │ │ ├── Index.es.resx
│ │ │ │ ├── Index.fa.resx
│ │ │ │ ├── Index.fi.resx
│ │ │ │ ├── Index.fr.resx
│ │ │ │ ├── Index.nl.resx
│ │ │ │ ├── Index.pt.resx
│ │ │ │ ├── Index.ru.resx
│ │ │ │ ├── Index.sv.resx
│ │ │ │ ├── Index.zh.resx
│ │ │ │ ├── LinkLoginFailure.da.resx
│ │ │ │ ├── LinkLoginFailure.de.resx
│ │ │ │ ├── LinkLoginFailure.en.resx
│ │ │ │ ├── LinkLoginFailure.es.resx
│ │ │ │ ├── LinkLoginFailure.fa.resx
│ │ │ │ ├── LinkLoginFailure.fi.resx
│ │ │ │ ├── LinkLoginFailure.fr.resx
│ │ │ │ ├── LinkLoginFailure.nl.resx
│ │ │ │ ├── LinkLoginFailure.pt.resx
│ │ │ │ ├── LinkLoginFailure.ru.resx
│ │ │ │ ├── LinkLoginFailure.sv.resx
│ │ │ │ ├── LinkLoginFailure.zh.resx
│ │ │ │ ├── PersonalData.da.resx
│ │ │ │ ├── PersonalData.de.resx
│ │ │ │ ├── PersonalData.en.resx
│ │ │ │ ├── PersonalData.es.resx
│ │ │ │ ├── PersonalData.fa.resx
│ │ │ │ ├── PersonalData.fi.resx
│ │ │ │ ├── PersonalData.fr.resx
│ │ │ │ ├── PersonalData.nl.resx
│ │ │ │ ├── PersonalData.pt.resx
│ │ │ │ ├── PersonalData.ru.resx
│ │ │ │ ├── PersonalData.sv.resx
│ │ │ │ ├── PersonalData.zh.resx
│ │ │ │ ├── ResetAuthenticator.da.resx
│ │ │ │ ├── ResetAuthenticator.de.resx
│ │ │ │ ├── ResetAuthenticator.en.resx
│ │ │ │ ├── ResetAuthenticator.es.resx
│ │ │ │ ├── ResetAuthenticator.fa.resx
│ │ │ │ ├── ResetAuthenticator.fi.resx
│ │ │ │ ├── ResetAuthenticator.fr.resx
│ │ │ │ ├── ResetAuthenticator.nl.resx
│ │ │ │ ├── ResetAuthenticator.pt.resx
│ │ │ │ ├── ResetAuthenticator.ru.resx
│ │ │ │ ├── ResetAuthenticator.sv.resx
│ │ │ │ ├── ResetAuthenticator.zh.resx
│ │ │ │ ├── SetPassword.da.resx
│ │ │ │ ├── SetPassword.de.resx
│ │ │ │ ├── SetPassword.en.resx
│ │ │ │ ├── SetPassword.es.resx
│ │ │ │ ├── SetPassword.fa.resx
│ │ │ │ ├── SetPassword.fi.resx
│ │ │ │ ├── SetPassword.fr.resx
│ │ │ │ ├── SetPassword.nl.resx
│ │ │ │ ├── SetPassword.pt.resx
│ │ │ │ ├── SetPassword.ru.resx
│ │ │ │ ├── SetPassword.sv.resx
│ │ │ │ ├── SetPassword.zh.resx
│ │ │ │ ├── ShowRecoveryCodes.da.resx
│ │ │ │ ├── ShowRecoveryCodes.de.resx
│ │ │ │ ├── ShowRecoveryCodes.en.resx
│ │ │ │ ├── ShowRecoveryCodes.es.resx
│ │ │ │ ├── ShowRecoveryCodes.fa.resx
│ │ │ │ ├── ShowRecoveryCodes.fi.resx
│ │ │ │ ├── ShowRecoveryCodes.fr.resx
│ │ │ │ ├── ShowRecoveryCodes.nl.resx
│ │ │ │ ├── ShowRecoveryCodes.pt.resx
│ │ │ │ ├── ShowRecoveryCodes.ru.resx
│ │ │ │ ├── ShowRecoveryCodes.sv.resx
│ │ │ │ ├── ShowRecoveryCodes.zh.resx
│ │ │ │ ├── TwoFactorAuthentication.da.resx
│ │ │ │ ├── TwoFactorAuthentication.de.resx
│ │ │ │ ├── TwoFactorAuthentication.en.resx
│ │ │ │ ├── TwoFactorAuthentication.es.resx
│ │ │ │ ├── TwoFactorAuthentication.fa.resx
│ │ │ │ ├── TwoFactorAuthentication.fi.resx
│ │ │ │ ├── TwoFactorAuthentication.fr.resx
│ │ │ │ ├── TwoFactorAuthentication.nl.resx
│ │ │ │ ├── TwoFactorAuthentication.pt.resx
│ │ │ │ ├── TwoFactorAuthentication.ru.resx
│ │ │ │ ├── TwoFactorAuthentication.sv.resx
│ │ │ │ └── TwoFactorAuthentication.zh.resx
│ │ │ └── Shared
│ │ │ ├── Common
│ │ │ │ ├── SelectLanguage.da.resx
│ │ │ │ ├── SelectLanguage.de.resx
│ │ │ │ ├── SelectLanguage.en.resx
│ │ │ │ ├── SelectLanguage.es.resx
│ │ │ │ ├── SelectLanguage.fa.resx
│ │ │ │ ├── SelectLanguage.fi.resx
│ │ │ │ ├── SelectLanguage.fr.resx
│ │ │ │ ├── SelectLanguage.nl.resx
│ │ │ │ ├── SelectLanguage.pt.resx
│ │ │ │ ├── SelectLanguage.ru.resx
│ │ │ │ ├── SelectLanguage.sv.resx
│ │ │ │ └── SelectLanguage.zh.resx
│ │ │ ├── Components
│ │ │ │ └── IdentityServerAdminLink
│ │ │ │ ├── Default.da.resx
│ │ │ │ ├── Default.de.resx
│ │ │ │ ├── Default.en.resx
│ │ │ │ ├── Default.es.resx
│ │ │ │ ├── Default.fa.resx
│ │ │ │ ├── Default.fi.resx
│ │ │ │ ├── Default.fr.resx
│ │ │ │ ├── Default.nl.resx
│ │ │ │ ├── Default.pt.resx
│ │ │ │ ├── Default.ru.resx
│ │ │ │ ├── Default.sv.resx
│ │ │ │ └── Default.zh.resx
│ │ │ ├── Error.da.resx
│ │ │ ├── Error.de.resx
│ │ │ ├── Error.en.resx
│ │ │ ├── Error.es.resx
│ │ │ ├── Error.fa.resx
│ │ │ ├── Error.fi.resx
│ │ │ ├── Error.fr.resx
│ │ │ ├── Error.nl.resx
│ │ │ ├── Error.pt.resx
│ │ │ ├── Error.ru.resx
│ │ │ ├── Error.sv.resx
│ │ │ ├── Error.zh.resx
│ │ │ ├── _Layout.da.resx
│ │ │ ├── _Layout.de.resx
│ │ │ ├── _Layout.en.resx
│ │ │ ├── _Layout.es.resx
│ │ │ ├── _Layout.fa.resx
│ │ │ ├── _Layout.fi.resx
│ │ │ ├── _Layout.fr.resx
│ │ │ ├── _Layout.nl.resx
│ │ │ ├── _Layout.pt.resx
│ │ │ ├── _Layout.ru.resx
│ │ │ ├── _Layout.sv.resx
│ │ │ ├── _Layout.zh.resx
│ │ │ ├── Redirect.da.resx
│ │ │ ├── Redirect.de.resx
│ │ │ ├── Redirect.en.resx
│ │ │ ├── Redirect.es.resx
│ │ │ ├── Redirect.fa.resx
│ │ │ ├── Redirect.fi.resx
│ │ │ ├── Redirect.fr.resx
│ │ │ ├── Redirect.nl.resx
│ │ │ ├── Redirect.pt.resx
│ │ │ ├── Redirect.ru.resx
│ │ │ ├── Redirect.sv.resx
│ │ │ ├── Redirect.zh.resx
│ │ │ ├── _ScopeListItem.da.resx
│ │ │ ├── _ScopeListItem.de.resx
│ │ │ ├── _ScopeListItem.en.resx
│ │ │ ├── _ScopeListItem.es.resx
│ │ │ ├── _ScopeListItem.fa.resx
│ │ │ ├── _ScopeListItem.fi.resx
│ │ │ ├── _ScopeListItem.fr.resx
│ │ │ ├── _ScopeListItem.nl.resx
│ │ │ ├── _ScopeListItem.pt.resx
│ │ │ ├── _ScopeListItem.ru.resx
│ │ │ ├── _ScopeListItem.sv.resx
│ │ │ ├── _ScopeListItem.zh.resx
│ │ │ ├── _ValidationSummary.da.resx
│ │ │ ├── _ValidationSummary.de.resx
│ │ │ ├── _ValidationSummary.en.resx
│ │ │ ├── _ValidationSummary.es.resx
│ │ │ ├── _ValidationSummary.fa.resx
│ │ │ ├── _ValidationSummary.fi.resx
│ │ │ ├── _ValidationSummary.fr.resx
│ │ │ ├── _ValidationSummary.nl.resx
│ │ │ ├── _ValidationSummary.pt.resx
│ │ │ ├── _ValidationSummary.ru.resx
│ │ │ ├── _ValidationSummary.sv.resx
│ │ │ └── _ValidationSummary.zh.resx
│ │ ├── Scripts
│ │ │ └── App
│ │ │ └── components
│ │ │ ├── CookieConsent.js
│ │ │ ├── Language.js
│ │ │ ├── Menu.js
│ │ │ └── Theme.js
│ │ ├── serilog.json
│ │ ├── Services
│ │ │ ├── AuditEventSink.cs
│ │ │ └── OpenIdClaimsMappingConfig.cs
│ │ ├── SkorubaDuende.IdentityServerAdmin.STS.Identity.csproj
│ │ ├── Startup.cs
│ │ ├── Styles
│ │ │ ├── common
│ │ │ │ ├── _all.scss
│ │ │ │ ├── common.scss
│ │ │ │ ├── fonts.scss
│ │ │ │ ├── form.scss
│ │ │ │ ├── margin.css
│ │ │ │ ├── margin.min.css
│ │ │ │ ├── margin.scss
│ │ │ │ ├── padding.css
│ │ │ │ ├── padding.min.css
│ │ │ │ └── padding.scss
│ │ │ ├── controls
│ │ │ │ ├── _all.scss
│ │ │ │ ├── checkbox.scss
│ │ │ │ ├── cookieconsent.scss
│ │ │ │ ├── navbar.scss
│ │ │ │ ├── QRCode.scss
│ │ │ │ ├── radio.scss
│ │ │ │ ├── validation.summary.css
│ │ │ │ ├── validation.summary.min.css
│ │ │ │ └── validation.summary.scss
│ │ │ ├── pages
│ │ │ │ ├── _all.scss
│ │ │ │ ├── consent.scss
│ │ │ │ ├── grants.scss
│ │ │ │ └── logout.scss
│ │ │ ├── web.css
│ │ │ ├── web.min.css
│ │ │ └── web.scss
│ │ ├── tempkey.jwk
│ │ ├── ViewComponents
│ │ │ └── IdentityServerAdminLinkViewComponent.cs
│ │ ├── ViewModels
│ │ │ ├── Account
│ │ │ │ ├── ExternalLoginConfirmationViewModel.cs
│ │ │ │ ├── ExternalProvider.cs
│ │ │ │ ├── ForgotPasswordViewModel.cs
│ │ │ │ ├── LoggedOutViewModel.cs
│ │ │ │ ├── LoginInputModel.cs
│ │ │ │ ├── LoginViewModel.cs
│ │ │ │ ├── LoginWith2faViewModel.cs
│ │ │ │ ├── LoginWithRecoveryCodeViewModel.cs
│ │ │ │ ├── LogoutInputModel.cs
│ │ │ │ ├── LogoutViewModel.cs
│ │ │ │ ├── RedirectViewModel.cs
│ │ │ │ ├── RegisterConfirmationViewModel.cs
│ │ │ │ ├── RegisterViewModel.cs
│ │ │ │ ├── RegisterWithoutUsernameViewModel.cs
│ │ │ │ └── ResetPasswordViewModel.cs
│ │ │ ├── Consent
│ │ │ │ ├── ConsentInputModel.cs
│ │ │ │ ├── ConsentViewModel.cs
│ │ │ │ ├── ProcessConsentResult.cs
│ │ │ │ └── ScopeViewModel.cs
│ │ │ ├── Device
│ │ │ │ ├── DeviceAuthorizationInputModel.cs
│ │ │ │ └── DeviceAuthorizationViewModel.cs
│ │ │ ├── Diagnostics
│ │ │ │ └── DiagnosticsViewModel.cs
│ │ │ ├── Grants
│ │ │ │ └── GrantsViewModel.cs
│ │ │ ├── Home
│ │ │ │ └── ErrorViewModel.cs
│ │ │ └── Manage
│ │ │ ├── ChangePasswordViewModel.cs
│ │ │ ├── DeletePersonalDataViewModel.cs
│ │ │ ├── EnableAuthenticatorViewModel.cs
│ │ │ ├── ExternalLoginsViewModel.cs
│ │ │ ├── IndexViewModel.cs
│ │ │ ├── RemoveLoginViewModel.cs
│ │ │ ├── SetPasswordViewModel.cs
│ │ │ ├── ShowRecoveryCodesViewModel.cs
│ │ │ └── TwoFactorAuthenticationViewModel.cs
│ │ ├── Views
│ │ │ ├── Account
│ │ │ │ ├── ConfirmEmail.cshtml
│ │ │ │ ├── ExternalLoginConfirmation.cshtml
│ │ │ │ ├── ExternalLoginFailure.cshtml
│ │ │ │ ├── ForgotPasswordConfirmation.cshtml
│ │ │ │ ├── ForgotPassword.cshtml
│ │ │ │ ├── Lockout.cshtml
│ │ │ │ ├── LoggedOut.cshtml
│ │ │ │ ├── Login.cshtml
│ │ │ │ ├── LoginWith2fa.cshtml
│ │ │ │ ├── LoginWithRecoveryCode.cshtml
│ │ │ │ ├── Logout.cshtml
│ │ │ │ ├── RegisterConfirmation.cshtml
│ │ │ │ ├── Register.cshtml
│ │ │ │ ├── RegisterFailure.cshtml
│ │ │ │ ├── RegisterWithoutUsername.cshtml
│ │ │ │ ├── ResetPasswordConfirmation.cshtml
│ │ │ │ └── ResetPassword.cshtml
│ │ │ ├── Consent
│ │ │ │ └── Index.cshtml
│ │ │ ├── Device
│ │ │ │ ├── Success.cshtml
│ │ │ │ ├── UserCodeCapture.cshtml
│ │ │ │ └── UserCodeConfirmation.cshtml
│ │ │ ├── Diagnostics
│ │ │ │ └── Index.cshtml
│ │ │ ├── Grants
│ │ │ │ └── Index.cshtml
│ │ │ ├── Home
│ │ │ │ └── Index.cshtml
│ │ │ ├── Manage
│ │ │ │ ├── ChangePassword.cshtml
│ │ │ │ ├── DeletePersonalData.cshtml
│ │ │ │ ├── Disable2fa.cshtml
│ │ │ │ ├── DownloadPersonalData.cshtml
│ │ │ │ ├── EnableAuthenticator.cshtml
│ │ │ │ ├── ExternalLogins.cshtml
│ │ │ │ ├── GenerateRecoveryCodes.cshtml
│ │ │ │ ├── Index.cshtml
│ │ │ │ ├── LinkLoginFailure.cshtml
│ │ │ │ ├── PersonalData.cshtml
│ │ │ │ ├── ResetAuthenticator.cshtml
│ │ │ │ ├── SetPassword.cshtml
│ │ │ │ ├── ShowRecoveryCodes.cshtml
│ │ │ │ ├── _StatusMessage.cshtml
│ │ │ │ └── TwoFactorAuthentication.cshtml
│ │ │ ├── Shared
│ │ │ │ ├── Common
│ │ │ │ │ ├── ApplicationVersion.cshtml
│ │ │ │ │ ├── SelectLanguage.cshtml
│ │ │ │ │ ├── SelectTheme.cshtml
│ │ │ │ │ └── ThemeResources.cshtml
│ │ │ │ ├── Components
│ │ │ │ │ └── IdentityServerAdminLink
│ │ │ │ │ └── Default.cshtml
│ │ │ │ ├── Error.cshtml
│ │ │ │ ├── _Layout.cshtml
│ │ │ │ ├── Redirect.cshtml
│ │ │ │ ├── _ScopeListItem.cshtml
│ │ │ │ └── _ValidationSummary.cshtml
│ │ │ ├── _ViewImports.cshtml
│ │ │ └── _ViewStart.cshtml
│ │ └── wwwroot
│ │ ├── dist
│ │ │ ├── css
│ │ │ │ ├── bundle.min.css
│ │ │ │ ├── themes
│ │ │ │ │ ├── cerulean
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── cosmo
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── cyborg
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── darkly
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── flatly
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── journal
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── litera
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── lumen
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── lux
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── materia
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── minty
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── pulse
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── sandstone
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── simplex
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── sketchy
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── slate
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── solar
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── spacelab
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── superhero
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ ├── united
│ │ │ │ │ │ └── bootstrap.min.css
│ │ │ │ │ └── yeti
│ │ │ │ │ └── bootstrap.min.css
│ │ │ │ ├── web.css
│ │ │ │ └── web.min.css
│ │ │ ├── fonts
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ ├── fontawesome-webfont.woff2
│ │ │ │ ├── open-iconic.eot
│ │ │ │ ├── open-iconic.otf
│ │ │ │ ├── open-iconic.svg
│ │ │ │ ├── open-iconic.ttf
│ │ │ │ └── open-iconic.woff
│ │ │ └── js
│ │ │ └── bundle.min.js
│ │ ├── favicon.ico
│ │ ├── images
│ │ │ └── skoruba-icon.png
│ │ └── js
│ │ ├── forgot-password.js
│ │ ├── qrcode.js
│ │ ├── qrcode.min.js
│ │ ├── signin-redirect.js
│ │ └── signout-redirect.js
│ └── Skoruba.Duende.IdentityServer.Admin.Templates.nuspec
└── tests
├── Skoruba.Duende.IdentityServer.Admin.Api.IntegrationTests
│ ├── Common
│ │ ├── AuthenticationConsts.cs
│ │ ├── HttpClientExtensions.cs
│ │ └── WebApplicationFactoryExtensions.cs
│ ├── Skoruba.Duende.IdentityServer.Admin.Api.IntegrationTests.csproj
│ └── Tests
│ ├── ApiResourcesControllerTests.cs
│ ├── Base
│ │ ├── BaseClassFixture.cs
│ │ └── TestFixture.cs
│ ├── ClientsControllerTests.cs
│ ├── IdentityResourcesControllerTests.cs
│ ├── RolesControllerTests.cs
│ └── UsersControllerTests.cs
├── Skoruba.Duende.IdentityServer.Admin.Api.UnitTests
│ ├── Mappers
│ │ ├── ApiResourceMappers.cs
│ │ ├── ApiScopeMappers.cs
│ │ ├── ClientMappers.cs
│ │ ├── IdentityProviderMappers.cs
│ │ ├── IdentityResourceMappers.cs
│ │ ├── KeyMappers.cs
│ │ └── PersistedGrantMappers.cs
│ ├── Mocks
│ │ ├── ApiResourceApiDtoMock.cs
│ │ ├── ApiScopeApiDtoMock.cs
│ │ ├── ClientDtoApiMock.cs
│ │ ├── IdentityProviderApiDtoMock.cs
│ │ ├── IdentityResourceApiDtoMock.cs
│ │ ├── KeyApiDtoMock.cs
│ │ └── PersistedGrantApiDtoMock.cs
│ └── Skoruba.Duende.IdentityServer.Admin.Api.UnitTests.csproj
├── Skoruba.Duende.IdentityServer.Admin.IntegrationTests
│ ├── Common
│ │ ├── AntiforgeryHelper.cs
│ │ ├── HttpClientExtensions.cs
│ │ ├── RoutesConstants.cs
│ │ └── WebApplicationFactoryExtensions.cs
│ ├── Skoruba.Duende.IdentityServer.Admin.IntegrationTests.csproj
│ └── Tests
│ ├── Base
│ │ ├── BaseClassFixture.cs
│ │ └── TestFixture.cs
│ ├── ConfigurationControllerTests.cs
│ ├── GrantControllerTests.cs
│ ├── HomeControllerTests.cs
│ ├── IdentityControllerTests.cs
│ └── LogControllerTests.cs
├── Skoruba.Duende.IdentityServer.Admin.UnitTests
│ ├── Controllers
│ │ ├── ConfigurationControllerTests.cs
│ │ ├── HomeControllerTests.cs
│ │ └── IdentityControllerTests.cs
│ ├── Helpers
│ │ ├── IdentityErrorDescriberFallbackTestData.cs
│ │ ├── IdentityErrorDescriberTestData.cs
│ │ └── IdentityErrorDescriberTests.cs
│ ├── Mappers
│ │ ├── ApiResourceMappers.cs
│ │ ├── ClientMappers.cs
│ │ ├── IdentityProviderMappers.cs
│ │ ├── IdentityResourceMappers.cs
│ │ ├── KeyMappers.cs
│ │ ├── LogMappers.cs
│ │ └── PersistedGrantMappers.cs
│ ├── Mocks
│ │ ├── ApiResourceDtoMock.cs
│ │ ├── ApiResourceMock.cs
│ │ ├── ApiScopeDtoMock.cs
│ │ ├── ApiScopeMock.cs
│ │ ├── ClientDtoMock.cs
│ │ ├── ClientMock.cs
│ │ ├── IdentityDtoMock.cs
│ │ ├── IdentityMock.cs
│ │ ├── IdentityProviderDtoMock.cs
│ │ ├── IdentityProviderMock.cs
│ │ ├── IdentityResourceDtoMock.cs
│ │ ├── IdentityResourceMock.cs
│ │ ├── KeyDtoMock.cs
│ │ ├── KeyMock.cs
│ │ ├── LogDtoMock.cs
│ │ ├── LogMock.cs
│ │ ├── PersistedGrantDtoMock.cs
│ │ └── PersistedGrantMock.cs
│ ├── Repositories
│ │ ├── ApiResourceRepositoryTests.cs
│ │ ├── ApiScopeRepositoryTests.cs
│ │ ├── ClientRepositoryTests.cs
│ │ ├── IdentityResourceRepositoryTests.cs
│ │ └── PersistedGrantRepositoryTests.cs
│ ├── Services
│ │ ├── ApiResourceServiceTests.cs
│ │ ├── ApiScopeServiceTests.cs
│ │ ├── ClientServiceTests.cs
│ │ ├── IdentityResourceServiceTests.cs
│ │ ├── IdentityServiceTests.cs
│ │ └── PersistedGrantServiceTests.cs
│ └── Skoruba.Duende.IdentityServer.Admin.UnitTests.csproj
└── Skoruba.Duende.IdentityServer.STS.Identity.IntegrationTests
├── Common
│ ├── AntiForgeryHelper.cs
│ ├── CookiesHelper.cs
│ ├── RequestHelper.cs
│ ├── RoutesConstants.cs
│ └── WebApplicationFactoryExtensions.cs
├── Mocks
│ └── UserMocks.cs
├── Skoruba.Duende.IdentityServer.STS.Identity.IntegrationTests.csproj
└── Tests
├── AccountControllerTests.cs
├── Base
│ ├── BaseClassFixture.cs
│ └── TestFixture.cs
├── DiagnosticsControllerTests.cs
├── GrantsControllerTests.cs
├── HomeControllerTests.cs
├── IdentityServerTests.cs
└── ManageControllerTests.cs
539 directories, 3879 files
标签:
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论