Skip to content

feat: redeem offline credentials for DIAL_NATIVE services and report honest status - #1821

Merged
DmytroZaichenkoDev merged 1 commit into
developmentfrom
feat/dial-native-redemption
Aug 12, 2026
Merged

feat: redeem offline credentials for DIAL_NATIVE services and report honest status#1821
DmytroZaichenkoDev merged 1 commit into
developmentfrom
feat/dial-native-redemption

Conversation

@DmytroZaichenkoDev

@DmytroZaichenkoDev DmytroZaichenkoDev commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Part 4/4 of the offline-delegation split (replaces #1815). Based on #1820.

Wires DIAL_NATIVE into on-behalf-of retrieval: redemption requires an administrator's consent record (only one the consent endpoint wrote counts), then acts through the owner's offline credentials, refreshed via the offline client of the issuing identity provider. Failures stay distinguishable: missing/rejected owner credentials → permanent 409, unreachable IdP → retryable 502, lost provider config → 503. Status becomes honest for DIAL-native services: app level reflects consent, user level reflects the caller's offline credentials (ExternalServiceStatusEnricher).

The final state of this stack matches #1815 (verified e2e on Keycloak and Entra ID) except for review-driven cleanups made during the split.

🤖 Generated with Claude Code

@ai-dial-actions

This comment has been minimized.

astsiapanay
astsiapanay previously approved these changes Aug 12, 2026
@ai-dial-actions

This comment has been minimized.

@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-redemption branch from f87dbff to 662e7fe Compare August 12, 2026 13:00
@ai-dial-actions

This comment has been minimized.

@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-redemption branch from 662e7fe to bfb37e3 Compare August 12, 2026 13:16
Base automatically changed from feat/dial-native-admin-consent to development August 12, 2026 13:24
…honest status

Wires DIAL_NATIVE into the on-behalf-of retrieval: redemption requires an
administrator's consent record (only a record the consent endpoint wrote
counts — never a leftover credential), then acts through the owner's
platform-wide offline credentials, refreshed via the offline client of the
identity provider that issued them. Failures stay distinguishable: missing or
rejected owner credentials are a permanent 409 until the owner reconnects,
an unreachable identity provider is a retryable 502, and a lost provider
configuration is a 503. Status reporting becomes honest for DIAL-native
services: app level reflects the admin's consent and user level reflects the
caller's offline credentials, memoized per response by
ExternalServiceStatusEnricher across the deployment, application and
external-service listings.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@DmytroZaichenkoDev
DmytroZaichenkoDev force-pushed the feat/dial-native-redemption branch from bfb37e3 to e23daa0 Compare August 12, 2026 13:24
@DmytroZaichenkoDev
DmytroZaichenkoDev merged commit db53ddf into development Aug 12, 2026
9 checks passed
@DmytroZaichenkoDev
DmytroZaichenkoDev deleted the feat/dial-native-redemption branch August 12, 2026 13:41
@ai-dial-actions

Copy link
Copy Markdown
Contributor

⚠️ Dependency review workflow failed - results may be outdated. Check logs

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.

3 participants