You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This change addresses the reviewed operational and security gaps in NetCoreApplicationTemplate while preserving the existing 2.x architecture and
configuration model.
The updates tighten readiness semantics, improve audit-reconciliation health
reporting, harden rate-limiting behavior, make path-exclusion configuration fully
replaceable, and strengthen the default authentication cookie posture.
Changes
Audit integrity health
Added a configurable HealthStaleAfter threshold to audit reconciliation.
Treats a missing LastRunUtc as degraded health when reconciliation is enabled.
Treats reconciliation as degraded when the last successful run exceeds the
configured staleness threshold.
Includes reconciliation age in health-check diagnostic data.
Added focused coverage for the stale / never-run health paths.
Readiness separation
Removed application-audit-integrity from the ready health-check tag.
Added a dedicated /health/audit-integrity endpoint.
Keeps audit-integrity incidents visible to operators without automatically
removing otherwise serviceable replicas from traffic.
Database readiness
Added a database connectivity health check when application data access is
enabled.
Tags the database check with ready, so /health/ready now reflects whether
the configured application database is reachable.
Leaves readiness lightweight when data access is explicitly disabled.
Rate limiting
Normalizes native IPv6 client addresses to their /64 network prefix so a
client cannot obtain fresh buckets merely by rotating interface identifiers.
Normalizes IPv4-mapped IPv6 addresses back to IPv4.
Partitions the named concurrency policy by client and endpoint rather than
sharing one limiter across every caller of an endpoint.
Added tests covering IPv6 /64 normalization and partition separation.
Configuration binding
Explicit ExcludedPathPrefixes configuration for request logging now replaces
the CLR default list instead of being appended to it.
The same replacement behavior now applies to security-header exclusions.
This allows consumers to deliberately remove defaults such as /health or /metrics.
Authentication cookie hardening
Secure authentication sessions now use:
__Host-ProjectTemplate.Web.Authentication
Explicitly sets:
Secure
Path=/
no cookie domain
HttpOnly
SameSite=Lax
The Development-only insecure HTTP override retains the legacy non-__Host-
cookie name because the __Host- contract requires Secure.
Documentation
Updated health-check, audit-reconciliation, rate-limiting, authentication, and
changelog documentation to describe the new behavior and operational guidance.
Notes
The previously reported SUPPORT.md release-tense issue no longer applies to the
current repository state because 2.10.0 has already been published.
Validation
Recommended validation:
dotnet build --configuration Release
dotnet test --configuration Release
Test run summary: Passed!
total: 505
failed: 0
succeeded: 505
skipped: 0
duration: 13s 336ms
Align changelog entry with the corrected 2.10.0 release status
CHANGELOG.md:126
This entry says .github/SUPPORT.md was corrected because the 2.10.0 release-tense issue was fixed, but the accompanying SUPPORT diff reintroduces the upcoming 2.10.0/latest 2.9.0 wording. Once the release status is reconciled, update or remove this changelog entry so it describes the actual change.
The previous commit renamed the readiness mapping instead of the audit
mapping, so /health/ready returned 404, /health/audit-integrity ran the
readiness checks, and audit checks were only served at the undocumented
/health/audit route. Map /health/ready to checks tagged ready, map
/health/audit-integrity to checks tagged audit, and drop /health/audit.
Add a regression test that registers an unhealthy check under each tag
and verifies it affects only the endpoint that selects that tag.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This change addresses the reviewed operational and security gaps in
NetCoreApplicationTemplatewhile preserving the existing 2.x architecture andconfiguration model.
The updates tighten readiness semantics, improve audit-reconciliation health
reporting, harden rate-limiting behavior, make path-exclusion configuration fully
replaceable, and strengthen the default authentication cookie posture.
Changes
Audit integrity health
HealthStaleAfterthreshold to audit reconciliation.LastRunUtcas degraded health when reconciliation is enabled.configured staleness threshold.
Readiness separation
application-audit-integrityfrom thereadyhealth-check tag./health/audit-integrityendpoint.removing otherwise serviceable replicas from traffic.
Database readiness
enabled.
ready, so/health/readynow reflects whetherthe configured application database is reachable.
Rate limiting
/64network prefix so aclient cannot obtain fresh buckets merely by rotating interface identifiers.
sharing one limiter across every caller of an endpoint.
/64normalization and partition separation.Configuration binding
ExcludedPathPrefixesconfiguration for request logging now replacesthe CLR default list instead of being appended to it.
/healthor/metrics.Authentication cookie hardening
Secure authentication sessions now use:
__Host-ProjectTemplate.Web.AuthenticationExplicitly sets:
SecurePath=/HttpOnlySameSite=LaxThe Development-only insecure HTTP override retains the legacy non-
__Host-cookie name because the
__Host-contract requiresSecure.Documentation
Updated health-check, audit-reconciliation, rate-limiting, authentication, and
changelog documentation to describe the new behavior and operational guidance.
Notes
The previously reported
SUPPORT.mdrelease-tense issue no longer applies to thecurrent repository state because
2.10.0has already been published.Validation
Recommended validation: