This is a preview release of IdentityServer 8.1. It builds on Duende Spaces 1.0.0-preview.6 and Duende Storage 2.0.0-preview.6.
Breaking changes
- Add Spaces from the IdentityServer builder. Call
AddSpaces(configure)orAddSpaces(storageInstanceId, configure)on the IdentityServer builder, instead ofservices.AddSpaces()plus a separateConfigure<SpacesOptions>. - Spaces and the Entity Framework stores can't be combined. The Entity Framework stores keep one database for all spaces, so a host that uses Spaces with the Entity Framework configuration or operational store now fails at startup. Use
AddConfigurationStorage()andAddOperationalStorage()with Spaces. - Data protection is partitioned by space. With Spaces, everything IdentityServer protects (cookies, PAR requests, server-side session tickets, DPoP nonces and so on) is bound to its space. Values protected before upgrading keep working in the Default space only. Signing keys stay readable in every space. See the Duende Spaces 1.0.0-preview.6 release notes.
What's changed
- Expired data is cleaned up in every storage database. The purge of expired data and the outbox processor now run for every database registered with
AddStorage, not only whenAddOperationalStorageis used. For example, expired passkey challenges in a User Management database are now purged. - The storage purge follows the registered
TimeProvider. - The IdentityServer conformance report uses Duende.ConformanceReport 0.3.0, which checks PAR, loopback redirects, discovery and the signing algorithm options in more detail.
- The XML docs for
EnableJwtRequestUrilink to guidance on protecting against SSRF.
Fixes
- Dynamic providers no longer keep outdated options after a provider is changed, or deleted and re-created under the same scheme, while other requests are in flight.
Full Changelog: is-8.1.0-preview.4...is-8.1.0-preview.6