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
Completes device authorization for the given `userCode`.
31
+
Completes device authorization for the given `userCode`. Note that `ConsentResponse.RememberConsent` is always treated as `false` in device flow. Consent is never persisted across device flow sessions. This follows [RFC 8628](https://www.rfc-editor.org/rfc/rfc8628) security guidance, since the device initiating the flow is different from the device where the user authenticates.
The `GetAllSchemeNamesAsync()` API returns a list of `IdentityProviderName` objects, which contain the scheme name and
134
+
The `GetAllSchemeNamesAsync` API returns a read-only collection of `IdentityProviderName` objects, which contain the scheme name and
135
135
display name of the provider and can be used on the login page, or in other places where you need this information.
136
136
137
137
In the [IdentityServer Quickstart UI](https://github.com/DuendeSoftware/products/tree/main/identity-server/templates/src/UI/Pages/Account/Login/Index.cshtml.cs#l193-l210),
@@ -438,7 +438,33 @@ A new `Duende.IdentityServer.ConformanceReport` package generates an HTML report
438
438
IdentityServer deployment against OAuth 2.1 and FAPI 2.0 specifications. See the
439
439
[Conformance Report documentation](/identityserver/diagnostics/conformance-report/) for details.
440
440
441
-
## Step 6: Done!
441
+
### Device Flow Consent Is No Longer Remembered
442
+
443
+
The device flow consent UI no longer offers a "Remember My Decision" option. `ConsentResponse.RememberConsent` is now always set to `false` during device flow authorization.
444
+
445
+
This change follows [RFC 8628](https://www.rfc-editor.org/rfc/rfc8628) security guidance: because the device initiating the flow is different from the device where the user authenticates, persisting consent creates a cross-device phishing risk.
446
+
447
+
**If you use the Duende UI templates for device flow**, this change is already applied. If you maintain a custom device flow consent page, remove the "remember consent" checkbox and ensure `ConsentResponse.RememberConsent` is set to `false` when calling `IDeviceFlowInteractionService.HandleRequestAsync`.
448
+
449
+
## Step 6: Behavioral Changes
450
+
451
+
### Secret Validator Log Level Changed from Error to Debug
452
+
453
+
In `ApiSecretValidator` and `ClientSecretValidator`, "not found" log entries (e.g., "No API secret found", "No client with id '...' found") have been downgraded from `Error` to `Debug`. These outcomes are expected during the introspection endpoint's fallback authentication pattern and are not genuine errors.
454
+
455
+
To compensate, `Warning`-level log entries have been added at the token endpoint, token revocation endpoint, and backchannel authentication endpoint when client validation fails, so genuine authentication failures remain visible to operators.
456
+
457
+
**Impact:** If your monitoring or alerting watches for `Error`-level log entries from `ApiSecretValidator` or `ClientSecretValidator` to detect authentication failures, those alerts will no longer trigger. Update your alerting to watch for `Warning`-level entries at the endpoint level instead.
458
+
459
+
### Audience Validation Now Accepts Single-Element Arrays
460
+
461
+
When `StrictClientAssertionAudienceValidation` is enabled (or when a client assertion uses the `client-authentication+jwt` token type), the `aud` claim in `private_key_jwt` client assertions may now be either a plain string or a single-element JSON array containing the issuer identifier. Previously, only a plain string was accepted.
462
+
463
+
This aligns with [draft-ietf-oauth-rfc7523bis](https://datatracker.ietf.org/doc/draft-ietf-oauth-rfc7523bis/), which permits the issuer identifier as the sole audience value in either form. Multi-element arrays are still rejected.
464
+
465
+
**Impact:** Clients that send the `aud` claim as a single-element array (e.g., `"aud": ["https://your-issuer"]`) will now pass strict audience validation where they previously would have failed. No action is required unless you relied on the stricter behavior.
466
+
467
+
## Step 7: Done!
442
468
443
469
That's it. Of course, at this point you can and should test that your IdentityServer is updated and
0 commit comments