Skip to content

ForgePoint.Identity: IdentityServer4 continuation for .NET 8/10 - #1

Merged
joneja09 merged 8 commits into
mainfrom
cursor/upgrade-identityserver4-dotnet-2dda
Aug 26, 2026
Merged

ForgePoint.Identity: IdentityServer4 continuation for .NET 8/10#1
joneja09 merged 8 commits into
mainfrom
cursor/upgrade-identityserver4-dotnet-2dda

Conversation

@joneja09

@joneja09 joneja09 commented Aug 26, 2026

Copy link
Copy Markdown
Owner

ForgePoint.Identity is a ForgePoint Labs Apache-2.0 continuation of IdentityServer4, upgraded for .NET 8/10.

Why

IdentityServer4 stopped at 4.1.2 on .NET Core 3.1. This line retargets the libraries and hosts, includes the CVE-2024-39694 local-URL fix, and adds PAR plus health checks. The product is ForgePoint.Identity: new package IDs and ForgePoint.Identity.* namespaces. AddIdentityServer() and IdentityServer* type names stay so the protocol surface is familiar.

Existing apps can swap packages and run scripts/upgrade-namespaces (see docs/upgrade.md). Preview with --dry-run. The rewriter updates usings, namespaces, EF snapshot CLR names, and PackageReference/PackageId values. It does not rename AddIdentityServer, friend-test assemblies, or on-disk IdentityServer4*.csproj file names.

This project is not affiliated with or endorsed by Duende Software or the original IdentityServer4 authors.

What changed

  • NuGet ids: ForgePoint.Identity, .Storage, .EntityFramework, .EntityFramework.Storage, .AspNetIdentity
  • Namespaces: IdentityServer4.*ForgePoint.Identity.*
  • Upgrade script and guide for package ids, usings, and EF snapshots (scripts/upgrade-namespaces, docs/upgrade.md)
  • Repo ./build.sh drops cached forgepoint.identity* nupkgs so a same-height MinVer rebuild is actually restored
  • Libraries target net8.0;net10.0; hosts, samples, and tests target net10.0
  • IsLocalUrl rejects control characters and embedded backslashes (CVE-2024-39694)
  • IClock / DefaultClock (TimeProvider) replace ASP.NET ISystemClock
  • Pushed Authorization Requests (RFC 9126) at /connect/par
  • Health checks via AddHealthChecks().AddIdentityServer()
  • IdentityModel 8 JWT/JWK compatibility
  • Handwritten EF entity/model mapping; AutoMapper removed

Test plan

  • python3 scripts/upgrade-namespaces/test_rewrite.py (8 tests)
  • Full ./build.sh after package rebrand
  • Full ./build.sh after namespace rename: 740 unit + 296 integration (1 skip) + EF Storage 13+80 + EF 4
  • Packed nupkgs use ForgePoint.Identity* ids; DLLs expose ForgePoint.Identity.* namespaces; no AutoMapper
Open in Web Open in Cursor 

cursoragent and others added 3 commits August 26, 2026 14:15
Retarget libraries to net8.0 and net10.0, replace ISystemClock with
IClock/TimeProvider, and fix CVE-2024-39694 local URL validation.

Add RFC 9126 pushed authorization at /connect/par and an
AddIdentityServer health check. Adapt JWT/JWK handling for
IdentityModel 8 (strict JSON, JsonElement payloads, Newtonsoft JWK
fallback) so existing secrets and request objects still work.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
Qualify Microsoft.IdentityModel.Tokens.JsonWebKey so it is not
confused with IdentityServer4.Models.JsonWebKey. Send private_key_jwt
client assertions as POST body for IdentityModel 6. Adapt EF tests to
AutoMapper 13 and .NET 10 LINQ SelectMany ambiguity.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
AutoMapper 13 is not licensed for this project and produced restore
warnings. Public ToModel/ToEntity APIs are unchanged; AutoMapper
profiles are removed as a 10.x breaking change.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
@cursor cursor Bot changed the title Upgrade IdentityServer4 to .NET 8 and .NET 10 Upgrade IdentityServer4 to .NET 8/10 (PAR, health checks, no AutoMapper) Aug 26, 2026
cursoragent and others added 2 commits August 26, 2026 14:38
Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
Publish as ForgePoint Labs packages while keeping IdentityServer4
namespaces and AddIdentityServer() for drop-in source compatibility.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
@cursor cursor Bot changed the title Upgrade IdentityServer4 to .NET 8/10 (PAR, health checks, no AutoMapper) ForgePoint.Identity: IdentityServer4 continuation for .NET 8/10 Aug 26, 2026
cursoragent and others added 3 commits August 26, 2026 15:06
C# namespaces are now ForgePoint.Identity.* while AddIdentityServer()
and IdentityServer* type names stay. A Python rewriter plus docs cover
package ids, usings, and EF snapshots for existing apps.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
tools/ is gitignored for local .NET CLI tools, so the rewriter lives
in scripts/upgrade-namespaces instead.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
Package rewrite now only touches PackageReference/PackageId values, friend
assemblies stay IdentityServer4.*, and the repo build drops cached
ForgePoint.Identity nupkgs so same-height MinVer packs are actually used.

Co-authored-by: Jeff Jones <joneja09@users.noreply.github.com>
@joneja09
joneja09 marked this pull request as ready for review August 26, 2026 17:07
@joneja09
joneja09 merged commit 343dc82 into main Aug 26, 2026
@joneja09
joneja09 deleted the cursor/upgrade-identityserver4-dotnet-2dda branch August 26, 2026 17:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants