| Internet-Draft | Secure Delegation Management for RPP | April 2026 |
| Wullink & Kowalik | Expires 1 November 2026 | [Page] |
This document describes how OAuth 2.0 [RFC6749] enables a third party, such as a DNS Operator, to manage delegation (name server) details for a domain on behalf of the registrant using the RESTful Provisioning Protocol (RPP). It extends the RPP OAuth 2.0 authorization model defined in [I-D.wullink-rpp-oauth2] with mechanisms specific to third-party delegation management via the RESTful Provisioning Protocol (RPP) [I-D.wullink-rpp-core].¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 1 November 2026.¶
Copyright (c) 2026 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
NOTE: This is a very early draft of how third-party delegation management could work in RPP. It is added here to provide an idea of the possible delegation flow and to facilitate discussion. This document is expected to be significantly revised and updated as the delegation management flow and the security mechanisms are further developed and refined.¶
In the domain name system, delegation refers to the assignment of name servers responsible for a DNS zone. The registry holds authoritative delegation data. The name server (NS) records and associated glue records for each domain in its database. Ordinarily only the sponsoring registrar, acting on behalf of the registrant, may update this data via the RPP API.¶
An increasingly common operational pattern is for a registrant to host their DNS with a dedicated DNS Operator that is not the sponsoring registrar. When the registrant wants the DNS Operator to manage their delegation settings it is inconvenient and error-prone to require the registrant to relay every change through their registrar or configure it manually using registrar provided tools. Instead, the registrant should be able to grant the DNS Operator limited, revocable authority to update delegation data directly at the registry using the RPP API.¶
This document defines a mechanism based on OAuth 2.0 federation that enables this pattern securely and without any bilateral arrangement between the DNS Operator and the registrar. The registrant authenticates at the registrar's Authorization Server (AS) and grants explicit, domain-scoped consent for the DNS Operator to manage delegation data. The registrar's AS issues a signed access token that the DNS Operator presents to the registry when submitting an RPP domain update requests. The registry validates the token locally using the registrar's AS public key and authorises the update if the token is valid.¶
In this document the following terminology is used.¶
RESTful Provisioning Protocol or RPP - The protocol described in this document.¶
URL - A Uniform Resource Locator as defined in [RFC3986].¶
Resource - An object having a type, data, and possible relationship to other resources, identified by a URL.¶
RPP client - An HTTP user agent performing an RPP request.¶
RPP server - An HTTP server responsible for processing requests and returning results in any supported media type.¶
JWT - JSON Web Token as defined in [RFC7519].¶
Registrant - The holder of a registered domain name, who has an account at the sponsoring registrar.¶
Registrar - The accredited sponsoring registrar for a domain. The registrar operates an Authorization Server and maintains registrant accounts.¶
Registry - The authoritative operator of the top-level domain, operating the RPP server. The registry stores delegation data and validates access tokens.¶
DNS Operator - A third party (not the registrar) that manages DNS zones on behalf of registrants. The registrant has an account at the DNS Operator. The DNS Operator uses the RPP API to update delegation data at the registry.¶
Authorization Server (AS) - An OAuth 2.0 authorization server, operated by the registrar, that authenticates registrants and issues access tokens authorizing third parties to act on their behalf.¶
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT","SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC2119].¶
In examples, indentation and white space in examples are provided only to illustrate element relationships and are not REQUIRED features of the protocol.¶
All example requests assume an RPP server using HTTP version 2 is listening on the standard HTTPS port on host rpp.example. An authorization token has been provided by an out of band process and MUST be used by the client to authenticate each request.¶
A registrant has registered foo.example through Registrar A and has also signed up with DNS Operator B to host the DNS zones for foo.example. The registrant wants DNS Operator B to be able to update the name servers for foo.example in the registry database without having to route every change through Registrar A.¶
The desired outcome is:¶
foo.example at the registry directly.¶
RPP OAuth 2.0 scopes are defined in [I-D.wullink-rpp-oauth2]. Delegation management introduces new delegation specific scopes: delegation:read. This scope grants the bearer the right to update delegation data (name servers and glue records) for a specific domain, as further constrained by the authorization_details claim.¶
Table Table 2 defines the the new OAuth 2.0 scopes for Delegation Management. Each scope grants a specific set of permissions on the RPP domain resource. The registry MUST enforce that the access token presented in a delegation update request contains the appropriate scope(s) for the requested operation.¶
| Scope | Data Object | Operations Granted |
|---|---|---|
delegation:read
|
Domain Name | Read delegation data |
delegation:update
|
Domain Name | Update delegation data |
The delegation management flow uses the same RPP-specific claims defined in [I-D.wullink-rpp-oauth2]. No new claims are introduced for delegation management.¶
The delegation management mechanism uses the registry as the central trust anchor, operating as a hub-and-spoke topology. Registrars establish a trust relationship with the registry during accreditation. DNS Operators MUST also be pre-registered with the registry in order to obtain access to the RPP API. No bilateral arrangement between the DNS Operator and the registrar is required; all delegation authority flows through the registrant's explicit consent at the registrar's AS.¶
Registry as trust anchor. As part of registrar onboarding, each registrar that operates its own AS (i.e., maintains registrant accounts) MUST register its AS metadata with the registry. This includes at minimum:¶
The registry stores this metadata as part of the registrar's profile and makes it available to approved DNS operators as part of the delegation update flow.¶
Token validation without bilateral trust. When the registry receives a delegation update request carrying a JWT issued by the registrar's AS, it validates the token locally using the registrar's AS public key that was registered at onboarding. No runtime call to the registrar or its AS is required. The registry already trusts that public key because it was registered through the accreditation process.¶
DNS Operator. The DNS Operator MUST be pre-registered with the registry to gain access to the RPP API. This pre-registration grants the DNS Operator the credentials necessary to query the RPP registrar info endpoint (to look up the sponsoring registrar's AS URI for a given domain) and to submit delegation update requests on behalf of a registrant. The DNS Operator does not require any pre-existing relationship with the registrar; the only registrar-side requirement is that the registrar's AS accepts the DNS Operator's redirect_uri as a valid OAuth 2.0 client redirect URI.¶
Security properties. This model provides the following guarantees:¶
The delegation management flow uses the OAuth 2.0 Authorization Code grant Section 4.1 to obtain explicit, domain-scoped registrant consent directly from the registrar's AS. The primary method for conveying the authorization scope is Rich Authorization Requests (RAR) [RFC9396].¶
Before redirecting the registrant, the DNS Operator MUST first query the registry's discovery endpoint to resolve the sponsoring registrar's AS authorization URI for the domain. The sponsoring registrar is identified from the domain's current registrar data in the registry.¶
The authorization request MUST convey the specific domain and the set of requested actions so that the registrar's AS can present the registrant with an accurate consent screen.¶
The following diagram illustrates the complete delegation management flow:¶
Client DNS Operator Registry Registrar
(Registrant) (Trust Anchor) AS
| | | |
: --- Onboarding ---------------------------------- :
| | | |
| | 1. Register | |
| | DNS Operator | |
| | account | |
| +--------------->| |
| | | |
| | 2. Account | |
| | credentials | |
| | returned | |
| |<---------------| |
| | | |
| | | 3. Register AS |
| | | URI + JWKS pubkey|
| | |<-----------------|
| | | |
: --- Delegation management time ------------------- :
| | | |
| 4. Request | | |
| delegation | | |
| mgmt for | | |
| foo.example | | |
+-------------->| | |
| | | |
| | 5. Discover | |
| | Reg. AS URI | |
| | for domain | |
| +--------------->| |
| | | |
| | 6. AS URI | |
| | returned | |
| |<---------------| |
| | | |
| 7. Redirect | | |
| to Registrar | | |
| AS | | |
|<--------------| | |
| | | |
| 8. Auth & | | |
| approve | | |
| delegation | | |
| scope | | |
+-------------------------------------------------->|
| | | |
| 9. Auth code | | |
| + redirect to | | |
| DNS Op | | |
| callback URI | | |
|<--------------------------------------------------|
| | | |
| 10. Follow | | |
| redirect | | |
| (auth code | | |
| delivered) | | |
+-------------->| | |
| | | |
| | 11. Exchange | |
| | auth code for | |
| | access token | |
| | (back-channel) | |
| +---------------------------------->|
| | | |
| | 12. JWT signed | |
| | by Registrar AS| |
| |<----------------------------------|
| | | |
| | 13. Delegation | |
| | update request | |
| | + Bearer JWT | |
| +--------------->| |
| | | |
| | | 14. Validate JWT |
| | | using cached Reg.|
| | | JWKS pubkey |
| | | (no runtime call)|
| | | |
| | | 15. Notify |
| | 16. Update. | Registrar |
| | result |----------------->|
| |<---------------| |
| | | |
| 17. Delegation| | |
| update | | |
| confirmed | | |
|<--------------| | |
| | | |
The steps in the diagram are as follows:¶
foo.example.¶
authorization_details parameter of type delegation with object_type: "domain", object_identifier: "foo.example" (RAR, [RFC9396]). The DNS Operator's callback URI MUST be included as the OAuth 2.0 redirect_uri.¶
authorization_details claim that echoes the received authorization_details claim.¶
Authorization header. The request targets the delegation sub-resource of the domain (e.g., PATCH /domains/foo.example/delegation).¶
authorization_details claim contains an object_identifier that matches the domain in the request.¶
foo.example and returns the result to the DNS Operator.¶
The RPP Data Object Catalog is extended to include each registrar's AS metadata.¶
authorization_server for each registrar that operates its own AS. It contains the metadata necessary for a DNS Operator to interact with the registrar's AS, including the authorization endpoint URI and JWKS URI or public key material.¶
TODO Add model of the actual data objects for delegation management, e.g. the delegation sub-resource of the domain object, and the expected request and response formats for delegation update requests.¶
TODO¶
The Secure Delegation Management mechanism relies on the following RPP endpoints:¶
PATCH /domains/{domainId}/delegation).¶
TODO¶
TODO¶
Token scope. Tokens issued in this flow are scoped to a single domain name and to the specific set of actions granted by the registrant. The registry MUST reject tokens that do not contain an authorization_details object whose object_identifier exactly matches the domain in the request URL.¶
Token lifetime. Access tokens for delegation management MAY have a longer lifetime than tokens used for single-use operations such as object transfers, since they may be used for repeated updates. However, token lifetime MUST be bounded. Registrar ASs SHOULD issue tokens with a lifetime appropriate for the expected operational pattern, and MUST support token revocation.¶
Revocation. Registrars MUST support token revocation ([RFC7009]) so that registrants can revoke a DNS Operator's access at any time. The registry MUST check token revocation status before processing delegation update requests if the registrar's AS publishes a revocation endpoint.¶
Consent granularity. The RAR authorization_details object allows the registrant to see exactly which domain and which actions they are consenting to. Registrar ASs MUST surface this information clearly on the consent screen.¶
TODO¶