适用于 Duende IdentityServer 和 ASP.NET Core Identity 的现代管理用户界面
适用于 Duende IdentityServer 和 ASP.NET Core Identity 的现代管理用户界面
[!IMPORTANT]
Version 3.0.0 is here
Version 3.0.0 is the stable release of Skoruba Duende IdentityServer Admin. It delivers a completely redesigned administration experience built with React, TypeScript, Tailwind CSS, shadcn/ui, and .NET 10.
See the roadmap and changelog for release history and upcoming features.
| Area | Highlights | |
|---|---|---|
| New Admin UI | React, TypeScript, Tailwind CSS, and shadcn/ui | |
| ⚙️ | Modern backend | .NET 10 and Duende IdentityServer 7.4.7 |
| Monitoring | Dashboards, configuration rules, and issue tracking | |
| Client management | Improved workflows and guided client creation wizard | |
| Authentication | Passkey support in STS Identity | |
| Mapping | Mapperly-based mapping pipeline and customization points | |
| ️ | Security | Hardened audit logging and stronger validation |
| Quality | Expanded Playwright UI, Admin API, STS, repository, and audit test coverage |
dotnet new TemplateExplore the redesigned administration experience, built with Tailwind CSS and shadcn/ui components.
Define and track configuration rules for clients, API resources, and identity resources:
Note: Using older .NET versions may cause 502.5 errors on IIS or application startup failures.
Database note:
This template includes default EF migrations. Review them and back up your database before applying.
ℹ️ Migration note from IdentityServer4.Admin:
TheUserSecretsIdfor Admin, Admin API, and STS projects remains the same as in the olderSkoruba.IdentityServer4.Adminsolution to ease config migration. If you still have secrets from the old project on your machine, they will be reused (e.g.,ApplySeedcould point at your old DB). Change or clear user secrets if you need isolation.
dotnet new install Skoruba.Duende.IdentityServer.Admin.Templates::3.0.0
dotnet new skoruba.duende.isadmin \
--name MyProject \
--title MyProject \
--adminemail "[email protected]" \
--adminpassword "Passw0rd-123" \
--adminrole MyRole \
--adminclientid MyClientId \
--adminclientsecret MyClientSecret \
--dockersupport true \
--requirepushedauthorization true
| Option | Description |
|---|---|
--name |
Project name |
--title |
Admin UI title and footer text |
--adminemail |
Initial admin email |
--adminpassword |
Initial admin password |
--adminrole |
Role name used for admin authorization |
--adminclientid |
Client ID for the Admin UI OIDC client |
--adminclientsecret |
Client secret for the Admin UI OIDC client |
--dockersupport |
Include Docker support (true / false) |
--requirepushedauthorization |
Require PAR for admin client (true / false, default true). Note: PAR requires Duende IdentityServer Business Edition or higher. More info |
Note: This section is for developers who want to clone and contribute to the repository. If you want to use the template, see the section above.
The solution contains three runnable services:
| Service | Project | Purpose |
|---|---|---|
| STS | Skoruba.Duende.IdentityServer.STS.Identity |
IdentityServer + authentication |
| Admin API | Skoruba.Duende.IdentityServer.Admin.Api |
REST API backend |
| Admin UI | Skoruba.Duende.IdentityServer.Admin |
SPA host |
git clone https://github.com/skoruba/Duende.IdentityServer.Admin
cd Duende.IdentityServer.Admin
cd src/Skoruba.Duende.IdentityServer.Admin.UI.Client
npm install
cd ../..
Open three terminals and run:
# Terminal 1: STS (IdentityServer)
cd src/Skoruba.Duende.IdentityServer.STS.Identity
dotnet run
# Terminal 2: Admin API
cd src/Skoruba.Duende.IdentityServer.Admin.Api
dotnet run
# Terminal 3: Admin UI Host
cd src/Skoruba.Duende.IdentityServer.Admin
dotnet run
| Service | URL |
|---|---|
| STS | https://localhost:44310 |
| Admin API | https://localhost:44302 |
| Admin UI | Check console output (usually https://localhost:7127) |
By default, database migrations and seed data are enabled in Admin API (
ApplyDatabaseMigrations,ApplySeed).
Tip: For the fastest onboarding, use the
dotnet runapproach above. Docker requires custom domain and certificates.
Update your hosts file to resolve skoruba.local:
Windows: C:\Windows\System32\drivers\etc\hosts
Linux / macOS: /etc/hosts
127.0.0.1 skoruba.local sts.skoruba.local admin.skoruba.local admin-api.skoruba.local
Use mkcert to generate self-signed local certificates.
cd shared/nginx/certs
mkcert --install
copy $env:LOCALAPPDATA\mkcert\rootCA-key.pem ./cacerts.pem
copy $env:LOCALAPPDATA\mkcert\rootCA.pem ./cacerts.crt
# Generate skoruba.local certificates
mkcert -cert-file skoruba.local.crt -key-file skoruba.local.key skoruba.local *.skoruba.local
mkcert -pkcs12 skoruba.local.pfx skoruba.local *.skoruba.local
cd shared/nginx/certs
mkcert -install
# Copy root certificates (adjust paths for your system)
# macOS: ~/Library/Application\ Support/mkcert/
# Linux: ~/.local/share/mkcert/
cp "$(mkcert -CAROOT)/rootCA-key.pem" ./cacerts.pem
cp "$(mkcert -CAROOT)/rootCA.pem" ./cacerts.crt
# Generate skoruba.local certificates
mkcert -cert-file skoruba.local.crt -key-file skoruba.local.key skoruba.local *.skoruba.local
mkcert -pkcs12 skoruba.local.pfx skoruba.local *.skoruba.local
docker-compose build
docker-compose up -d
Docker setup is based on bravecobra's repository – thanks!
Docker images are available on Docker Hub.
To publish images, check build/publish-docker-images.ps1 and update the profile name.
The solution uses the following DbContext classes:
AdminIdentityDbContext – ASP.NET Core Identity dataAdminLogDbContext – Logging dataIdentityServerConfigurationDbContext – IdentityServer configuration storeIdentityServerPersistedGrantDbContext – IdentityServer operational storeAuditLoggingDbContext – Audit loggingIdentityServerDataProtectionDbContext – Data protection keysAdminConfigurationDbContext – Admin configuration and monitoring (added in v3.0.0)Switch providers in appsettings.json:
"DatabaseProviderConfiguration": {
"ProviderType": "SqlServer"
}
SQL Server (LocalDB):
Data Source=(LocalDb)\\MSSQLLocalDB;database=DuendeIdentityServerAdmin;trusted_connection=yes;
PostgreSQL:
Server=localhost;Port=5432;Database=DuendeIdentityServerAdmin;User Id=sa;Password=#;
Note: Initial migrations are included in the repository.
Use the PowerShell script in
暂无开放 Issues,或尚未同步最近议题。