Skip to content

CTE - delegated authorization#1215

Open
dlozlla wants to merge 7 commits into
auth0:mainfrom
dlozlla:feat/cte-delegated-authorization
Open

CTE - delegated authorization#1215
dlozlla wants to merge 7 commits into
auth0:mainfrom
dlozlla:feat/cte-delegated-authorization

Conversation

@dlozlla
Copy link
Copy Markdown
Contributor

@dlozlla dlozlla commented May 18, 2026

Description

Doc changes for the Custom Token Exchange - Delegated Authorization feature

Consider this google docs with changes to be considered on CTE trigger point api and event objects to.

This PR also includes changes for https://auth0.com/docs/api/authentication/custom-token-exchange/get-token

References

https://auth0team.atlassian.net/browse/ROAD-1696

Checklist

  • I've read and followed CONTRIBUTING.md.
  • I've tested the site build for this change locally.
  • I've made appropriate docs updates for any code or config changes.
  • I've coordinated with the Product Docs and/or Docs Management team about non-trivial changes.

@dlozlla dlozlla requested review from a team as code owners May 18, 2026 16:24
Comment thread main/docs/api/authentication/custom-token-exchange/get-token.mdx Outdated
Comment thread main/docs/api/authentication/custom-token-exchange/get-token.mdx Outdated
Comment thread main/docs/authenticate/custom-token-exchange/configure-custom-token-exchange.mdx Outdated
Comment thread main/docs/authenticate/custom-token-exchange/cte-attack-protection.mdx Outdated
Comment thread main/docs/authenticate/custom-token-exchange/cte-example-use-cases.mdx Outdated

Other extension parameters are ignored, although they are included in the `event.request.body` in the corresponding Action.
Your CTE Action is responsible for securely validating the `actor_token` — applying the same rigor (e.g., cryptographic signature verification) as you would for the `subject_token`. When `actor_token_type` is `urn:ietf:params:oauth:token-type:id_token`, Auth0 performs this validation automatically.
</Note>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
</Note>
</Callout>

When an actor is set for the transaction, refresh tokens are not issued regardless of requested scopes. The `offline_access` scope is excluded from the response. This is by design: delegated tokens should not outlive the immediate exchange, ensuring that each subsequent access request goes through the CTE Action's authorization logic to re-validate the delegation.

Other extension parameters are ignored, although they are included in the `event.request.body` in the corresponding Action.
Your CTE Action is responsible for securely validating the `actor_token` — applying the same rigor (e.g., cryptographic signature verification) as you would for the `subject_token`. When `actor_token_type` is `urn:ietf:params:oauth:token-type:id_token`, Auth0 performs this validation automatically.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Your CTE Action is responsible for securely validating the `actor_token` applying the same rigor (e.g., cryptographic signature verification) as you would for the `subject_token`. When `actor_token_type` is `urn:ietf:params:oauth:token-type:id_token`, Auth0 performs this validation automatically.
Your CTE Action is responsible for securely validating the `actor_token` by applying the same rigor (e.g., cryptographic signature verification) as you would for the `subject_token`. When `actor_token_type` is `urn:ietf:params:oauth:token-type:id_token`, Auth0 performs this validation automatically.

dlozlla and others added 2 commits May 19, 2026 09:56

`setActor()` can be called regardless of whether the request includes an `actor_token`. The `actor_token` parameter is one way for the calling application to pass actor information to the Action, but the actor identity can also be embedded in the `subject_token` itself or obtained through other custom means within the Action code.

When the request does include `actor_token` and `actor_token_type`, these values are available in [`event.transaction`](/docs/customize/actions/explore-triggers/signup-and-login-triggers/custom-token-exchange-trigger/custom-token-exchange-event-object#event-transaction). If `actor_token_type` is `urn:ietf:params:oauth:token-type:id_token` and the token is a valid Auth0 ID token from the same tenant, the server automatically validates the token and populates `event.transaction.actor_token_user` with the actor’s user profile.
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess we have the same issue for this link too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh, no issue here as we reference an existing field.

Disregard my comment

dlozlla and others added 2 commits May 22, 2026 20:21
Co-authored-by: Lucy Zhou <141781699+lrzhou25@users.noreply.github.com>
@TateLyman
Copy link
Copy Markdown

CI readback on the failing Lychee job: the link check itself appears clean from the log; it reports only two 200 redirects:

  • https://auth0.com/docs/customize/actions -> /actions-overview
  • https://auth0.com/pricing/ -> /pricing

The failing line is from the comment-posting step, not from Lychee finding a broken URL:

Resource not accessible by integration - https://docs.github.com/rest/issues/comments#create-an-issue-comment

So this looks like a workflow/token-permission issue for the sticky PR comment action on this PR, rather than a docs link failure.

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