Skip to content

Harden hosted issuer flows and support scoped application credentials - #30

Merged
eliasjpr merged 2 commits into
masterfrom
codex/hosted-issuer-migration
Oct 31, 2026
Merged

eliasjpr merged 2 commits into
masterfrom
codex/hosted-issuer-migration

Conversation

@eliasjpr

Copy link
Copy Markdown
Collaborator

Hosted applications need client-bound authorization codes, OIDC nonce preservation, scoped machine tokens, and per-request issuance controls before adopting Authly across multiple resources.

This change binds codes to their client and purpose, separates OIDC nonce from consent CSRF state, reads issuer/TTL configuration at issuance, preserves client-credentials scopes, and supports Basic authentication at the token endpoint. Trusted issuance options provide an explicit audience, expiry, scalar application claims, and optional refresh issuance. It also adds signing-key identifiers with retiring public keys, subject-backed UserInfo, a consent rendering hook, and configurable grant restrictions.

Compatibility: refresh_token is now nullable and omitted when disabled. Existing callers retain refresh issuance by default. Codes issued before this change lack the required client/type binding and must be restarted. Discovery now reports the configured issuer and only implemented client authentication methods.

Validation: Crystal 1.22.2; 598 examples, 0 failures/errors; formatting and git diff checks pass. Tests cover cross-client redemption, token-purpose confusion, nonce through consent/redemption, configured lifetimes, scope escalation, per-resource audiences, Basic authentication, disabled grants, key rotation, consent replay, and UserInfo subject binding.

JoobQUI production cutover remains gated on upstream review and application integration testing.

@eliasjpr
eliasjpr marked this pull request as ready for review October 31, 2026 20:06
@eliasjpr
eliasjpr merged commit b905b25 into master Oct 31, 2026
3 checks passed
@eliasjpr
eliasjpr deleted the codex/hosted-issuer-migration branch October 31, 2026 20:09
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