There is a category of security bug that produces no error, no log entry, and no failing test. A token that should have been rejected gets a 200 instead, and the only way anyone finds out is by reading the auth configuration line by line, usually after something has already gone wrong.

Most of these live inside one class: TokenValidationParameters. Its defaults are good. The trouble is that its defaults are also easy to turn off, and the moments when people turn them off tend to be the moments they are trying to make an error message go away.

This article walks the five settings that get skipped most, what each one actually checks, what turning it off silently allows, and what the correct .NET 8 configuration looks like. At the end there is a checklist you can run against your own codebase in about two minutes.

The baseline

Here is a complete, correct JWT bearer setup for a .NET 8 minimal API. Everything below refers back to this.