Skip to content

fix: no Data Protection warnings at startup - #40

Merged
ThorSPB merged 2 commits into
mainfrom
fix/39-data-protection-warnings
Oct 14, 2026
Merged

ThorSPB merged 2 commits into
mainfrom
fix/39-data-protection-warnings

Conversation

@ThorSPB

@ThorSPB ThorSPB commented Oct 14, 2026 •

Copy link
Copy Markdown
Contributor

Closes #39

What

  • AddDataProtection().UseEphemeralDataProtectionProvider(). Data Protection comes with AddAuthentication but protects nothing here (bearer tokens only), so its keys are ephemeral on purpose, and the code now says so.
  • Test: the app's IDataProtectionProvider is the ephemeral one.

Testing

  • The warnings can't be reproduced in CI. They appear only when the process has no home directory, which is the case for the Pi's service users. A test process has one, so Data Protection's defaults pick a file key repository there, and a "no warnings at startup" test passed even without the fix (ad3b890's run). That test was replaced with one that pins the provider.
  • The behavioural check is stage's api.log after this deploys: the three warnings must be gone.

🤖 Generated with Claude Code

ThorSPB and others added 2 commits October 14, 2026 06:14
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
AddAuthentication registers Data Protection, which nothing uses (bearer tokens
only). With no home directory (the Pi's service users) its defaults pick an
in-memory key repository and log three warnings at every start. Declare the
ephemeral provider instead. The first test couldn't reproduce the warnings (a
test process has a home directory, so the defaults pick a file repository):
it now pins the provider; stage's log is the behavioural check.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@ThorSPB
ThorSPB merged commit 55247a3 into main Oct 14, 2026
3 checks passed
@ThorSPB
ThorSPB deleted the fix/39-data-protection-warnings branch October 14, 2026 03:36
ThorSPB added a commit that referenced this pull request Oct 14, 2026
Closes #39

## What
- `appsettings.json`: `Microsoft.AspNetCore.DataProtection` at Error.
Real failures still log; the three "keys in memory" warnings don't. The
README's config row says why, and when to lower it again.
- Removes #40's `UseEphemeralDataProtectionProvider()`, whose comment
claimed it kept the startup log clean.
- The test now checks the effective levels: Warning off and Error on for
Data Protection, and Warning still on for another `Microsoft.AspNetCore`
category.

## Why #40 didn't work
`UseEphemeralDataProtectionProvider()` replaces only
`IDataProtectionProvider`. Data Protection's startup service still
builds `XmlKeyManager` and loads its key ring, and that's what warns:
stage's log after 55247a3 still had all three (`EphemeralXmlRepository`,
`XmlKeyManager`). #40's test only pinned the provider type, so it passed
either way.

## Testing
- CI. Without the setting, `Microsoft.AspNetCore` at Warning applies and
the first assertion fails.
- After deploy: stage's startup log must show no Data Protection lines.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
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.

Startup logs three Data Protection warnings for a feature the API doesn't use

1 participant