Skip to content

Align with a production identity provider - #4

Merged
fw2568 merged 4 commits into
mainfrom
feature/idp-token-alignment
Oct 24, 2026
Merged

fw2568 merged 4 commits into
mainfrom
feature/idp-token-alignment

Conversation

@fw2568

@fw2568 fw2568 commented Oct 24, 2026

Copy link
Copy Markdown
Contributor

The worker now accepts RS256 next to ES256 tokens, and the client types its assertion client-authentication+jwt. A production identity provider (OpenIddict) requires both. Tested end to end against the dbosoft staging identity provider with org-scoped clients.

That test also found a bug: the worker's SignalR claim separated peers with a line break. SignalR passes claims to the worker as HTTP headers, so every client listing two or more peers failed to connect. Peers are now separated by /.

Clients from older packages send untyped assertions, which the identity provider refuses, so they need the new client package.

…yped client assertions

The worker validated only ES256 access tokens; a production issuer (e.g. OpenIddict) signs
RS256. Accept both RS256 and ES256 — both asymmetric, with the key type matched to the
algorithm, so no algorithm-confusion risk — while HMAC and unsigned tokens stay refused.

Client assertions now carry the header typ=client-authentication+jwt (RFC 8725 explicit
typing), which such issuers require, and the development BasicIdentityProvider now requires
that typ too so it matches. The identity-provider contract doc is updated accordingly (RS256
or ES256, RSA or EC JWKS, the assertion typ).
The worker-configuration table-section text still said the worker accepts
ES256 tokens only; it accepts RS256 and ES256. Align the wording with the
validation change.
SignalR hands claims to the worker as HTTP headers; a line break there broke the connection of every client listing two or more peers.
@fw2568
fw2568 merged commit a2b3c06 into main Oct 24, 2026
2 checks passed
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.

1 participant