| Internet-Draft | Multi-Party Authorization for RPP | November 2026 |
| Wullink & Kowalik | Expires 6 May 2027 | [Page] |
The traditional Registry, Registrar and Registrant (RRR) model for domain name management is evolving to include third-party service providers, such as DNS hosting providers. This document describes a generic multi-party authorization flow that allows registries to securely delegate domain management functions to accredited third-party service providers, while ensuring that the registrant's explicit consent is obtained before any RPP operations are executed.¶
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 6 May 2027.¶
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.¶
The multi-party authorization process described in this document allows a registry to securely delegate RPP object operations to accredited third-party service providers, while ensuring that the registrar and registrant's explicit consent is obtained before any RPP operations are executed. A third-party service provider MAY be used by a registrant for domain management functions, such as DNS hosting. The registry and the 3rd party MUST have a pre-established trust relationship, how this trust is established is out of scope for this document. The third-party does not have a direct trust relationship with the registrar, but the registrar trusts the registry to only accept requests from accredited 3rd parties.¶
In this document the following terminology is used.¶
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.¶
Registry - The authoritative source of truth for registration data, responsible for maintaining the database of shared objects and providing access to it through the RPP server.¶
Registrar - The entity responsible for managing the registration of objects, such as a domain name, on behalf of registrants, typically interacting with both the registrant and the registry.¶
Registrant - The individual or organization that has registered an object in the registry database.¶
3rd party - A service provider that is accredited by the registry to perform domain management operations on behalf of the registrant.¶
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 are provided only to illustrate element relationships and are not REQUIRED features of the protocol.¶
RPP enables registries to securely delegate domain management functions to accredited third-party service providers, such as DNS hosting providers. The process of delegating domain management functions to a third-party service provider requires the explicit consent of the registrant, and the registrar managing the object resource. The multi-party authorization flow described in this document ensures that the registrant's consent is obtained before any RPP operations are executed.¶
Data Elements:¶
Key Type¶
Algorithm¶
RSAModulus¶
RSAExponent¶
ECXCoordinate¶
ECYCoordinate¶
ECurve¶
Allowed Values:¶
"Pending" - The Authorisation Data Object has been created and is awaiting the registrar's approval decision.¶
"Approved" - The requested operation has been approved by the registrar and MAY be executed by the 3rd party.¶
"Used" - The authorisation has been consumed by a single-use RPP operation and can no longer be used.¶
"Invalid" - The authorisation is no longer valid, because it has expired, been rescinded by the 3rd party or registrar, or been consumed as a single-use authorisation.¶
This section provides normative JSON Schema definitions for the Public Key, Signature, Approval, and Status component objects described above. All schemas use JSON Schema draft 2020-12 [JSON-SCHEMA]. Per Rule 20 of [I-D.ietf-rpp-json], these $defs entries share the $id of the schema document defined by this specification, so they are part of the same JSON Schema document as the Authorisation Data Object schema in Section 5.2.3 and the Organisation Data Object extension schema in the Organization Data Object section, and can be referenced from both via $ref.¶
{
"$defs": {
"publicKey": {
"type": "object",
"properties": {
"type": { "type": "string", "enum": ["RSA", "EC"] },
"alg": { "type": "string" },
"n": { "type": "string" },
"e": { "type": "string" },
"x": { "type": "string" },
"y": { "type": "string" },
"crv": { "type": "string" }
},
"required": ["type", "alg"]
},
"signature": {
"type": "object",
"properties": {
"keyId": { "type": "string" },
"signedAt": { "type": "string", "format": "date-time" },
"signature": { "type": "string" }
},
"required": ["keyId", "signedAt", "signature"]
},
"approval": {
"type": "object",
"properties": {
"approved": { "type": "boolean" },
"approvedBy": { "type": "string" },
"reason": { "type": "string" },
"timestamp": { "type": "string", "format": "date-time" }
},
"required": ["approved", "approvedBy", "timestamp"]
},
"status": {
"type": "string",
"enum": ["Pending", "Approved", "Used", "Invalid"]
}
}
}
¶
Consistent with Rule 24 of [I-D.ietf-rpp-json], none of these component object definitions use "additionalProperties": false or "unevaluatedProperties": false, so that extensions MAY add further properties to any of them, following the Additive Schema Composition method defined in [I-D.wullink-rpp-extension-guidelines].¶
This specification extends the Organization type specified in [I-D.ietf-rpp-data-objects] to include two additional elements: approvalUrl, which is a URL that points to the registrar's web-based consent screen, and returnUrl, which is a URL to which the client's browser is redirected after the registrant has approved or denied the requested operation. The approvalUrl and returnUrl MUST be valid URLs, and they MUST use the HTTPS scheme.¶
The registry and the registrar MUST redirect the client's browser using a 303 See Other response, with the Location header set to the URL of the registrar's consent screen, including base64 encoded representation of the Authorisation Data Object in the approval-state query parameter.¶
This specification does not define a specific format for the redirection URL, but it is RECOMMENDED that the URL be constructed using the following format:¶
https://<hostname>/<path>?approval-state=<base64-encoded-authorisation-data-object>¶
A registrar that supports multi-party authorization MUST provide a web-based consent screen to which the 3rd party can redirect the client's browser to obtain the registrant's approval for the requested operation. The registrar MUST provide a URL for this consent screen to the registry, which is used by the registry to inform the 3rd party where to redirect the client's browser.¶
Example registrar approval endpoint URL, with the approval-state query parameter containing the base64 encoded Authorisation Data Object:¶
HTTP/1.1 303 See Other Location: https://registrar.example/rpp-auth/approve?approval-state=abc123¶
A 3rd party that supports multi-party authorization MUST provide a URL to which the client's browser is redirected by the registrar, after the registrar and registrant have completed the approval process. The 3rd party MUST provide this URL to the registry, which then appends it to the request, so that the registrar can redirect the client's browser back to the 3rd party after the approval process is completed.¶
Example 3rd party approval endpoint URL, with the approval-state query parameter containing the base64 encoded Authorisation Data Object:¶
HTTP/1.1 303 See Other Location: https://thirdparty.example/rpp-auth/callback?approval-state=abc123¶
Public Keys¶
Approval Redirect URI¶
Approval Return URI¶
Following the Additive Schema Composition method defined in [I-D.wullink-rpp-extension-guidelines], this specification does not redefine the JSON Schema of the Organisation Data Object published in [I-D.ietf-rpp-json]. Instead, it assigns its own $id to a schema document that composes the base Organisation object with an allOf branch adding the publicKeys, approvalRedirectUri, and approvalReturnUri data elements. The publicKeys dictionary reuses the publicKey component object schema defined in Section 5.1.5.¶
{
"$defs": {
"$id": "urn:ietf:params:rpp:schema:mpa-extension-organisation-create",
"organisationObject.MpaExtension": {
"allOf": [
{ "$ref": "#/$defs/organisationObject.create" },
{
"properties": {
"publicKeys": {
"type": "array",
"items": { "$ref": "#/$defs/publicKey" }
},
"approvalRedirectUri": { "type": "string", "format": "uri" },
"approvalReturnUri": { "type": "string", "format": "uri" }
}
}
]
}
}
}
¶
The Host Data Object supports all the authorisation operations defined in Section 5.2.2.¶
TODO¶
The request is initiated by the 3rd party, and validated and processed by both the registry and registrar. The request MUST be signed by both the registry and registrar.¶
The 3rd party constructs the request, setting the transactionType, objectId, and expiration properties, and sends the request to the registry.¶
The registry MUST validate each request, the following properties MUST be present and valid:¶
The registry MUST ensure that only a single Authorisation Data Object is created for a given transactionType and objectId, and reject any subsequent requests for the same transactionType and objectId that have not yet expired.¶
After validation of the request, creates a response that adds the following properties: id, requestorName, approvalUrl, returnUrl, timestamp,signatures. The id is a unique identifier for the transaction. The requestorName is the public name of the requestor to be displayed in the consent screen. The approvalUrl is the URL where the request can be approved, the returnUrl is the URL to return to after approval, the timestamp is the time the request was created, the expiration is the time the request expires, the signatures contain the cryptographic signatures, the registry MUST add its signature of the request to the signatures array, it MUST be the first element in the array.¶
The registrar adds the approval object to the request, to indicate whether the registrant and registrar have approved the transfer; at minimum, approval.approved and approval.approvedBy MUST be set. The registrar also adds its signature and public key identifier to the signatures array in the request, it MUST be the second element in the array. The registrar MUST verify the signature of the registry using the public key linked to the public key identifier in the request.¶
Both the registry and the registrar MUST cryptographically sign, and verify the authenticity and integrity of the requests. The specific algorithms and key management practices are outside the scope of this document, but it is RECOMMENDED that parties follow best practices for cryptographic security.¶
Each party MUST sign only the data that it is responsible for, and MUST include its public key identifier in the request, so that other parties can verify the signature using the corresponding public key.¶
A registrar that wants to participate in multi-party authorization MUST provide at least one public key to the registry. Each key is identified by a unique key identifier, which is used to verify signatures applied by the corresponding private key.¶
The RPP server MUST provide the list of its own public keys and their identifiers to the 3rd party and the registrar, using the discovery document available at the well-known endpoint as described in [I-D.ietf-rpp-core]. The Discovery document MUST be extended to include the additional public keys and their identifiers, using the field name registryKeys, which is an array of JSON Web Key (JWK) objects [RFC7517], the kid field of each JWK object MUST be used as the key identifier.¶
The use field of each JWK object MUST be set to sig, indicating that the key is used for digital signatures. The alg field of each JWK object MUST be set to the algorithm used to sign requests, such as RS256 for RSA signatures using SHA-256.¶
The following example shows a discovery document with 2 registry public keys:¶
{
"registryKeys": [
{
"kty": "RSA",
"kid": "registry-key-1",
"use": "sig",
"alg": "RS256",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbb....",
"e": "AQAB"
},
{
"kty": "EC",
"kid": "registry-key-2",
"use": "sig",
"alg": "ES256",
"crv": "P-256",
"x": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",
"y": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"
}
]
}
¶
TODO¶
Signers MUST NOT construct the signature input by naively concatenating field values as strings. Ad hoc concatenation is ambiguous: for example, concatenating the values "ab" and "c" produces the same string as concatenating "a" and "bc", and differences in whitespace, member ordering, or numeric formatting between a signer's and a verifier's JSON serializer can cause a correctly-signed request to fail verification.¶
Instead, the signature input MUST be derived by applying the JSON Canonicalization Scheme (JCS) [RFC8785] to a JSON object containing exactly the fields covered by that signature, encoded as UTF-8 octets. JCS produces a single, deterministic byte string for a given set of field values, independent of the original member order or formatting, making the signature input reproducible by any conforming verifier.¶
A signature MUST NOT cover the signature or key identifier fields of any other party. Chaining a later signature over earlier signatures would add no additional protection. Each party MUST include its own public key identifier alongside its signature, so that other parties can verify the signature using the corresponding public key.¶
The registry MUST verify the transaction request, and copy the document to a response document while adding additional transaction related properties, and finally sign the response document using its private key. The signature MUST be included in the response object.¶
The registry signs the JCS-canonicalized form of:¶
The registry inserts the signature as an object in the signatures array.¶
The registrar MUST verify the signature of the registry using the public key linked to the public key identifier found in the first element of the signatures array, and copy the request to a response document while adding additional transaction related properties, and finally sign the response using its private key. The signature MUST be included in the response object.¶
The registrar signs the JCS-canonicalized form of all properties also signed by the registry, but it MUST include the following additional properties in the signature input:¶
The registrar inserts the signature as an object in the signatures array.¶
A transaction type allows access to specific RPP operations. This specification defines three distinct transaction types. Future specifications may define additional transaction types, which MUST be registered with IANA as described in Section 14.¶
This specification does not define a separate payload format for the RPP operation being authorized. After requesting authorization the 3rd party MUST perform the change by executing the RPP corresponding operation defined for the approved authorization.¶
The rpp:mpa-type:domain:host-update transaction type is used to update the delegation details for a domain name, by replacing the set of Host Data Objects referenced in the domain's nameservers property with a new set of Host Data Objects. The objectId property MUST contain the domain name of the target Domain Name Object. This authorization also allows the 3rd party to create new host data objects as needed.¶
TODO¶
The rpp:mpa-type:domain:dnssec-update transaction type is used to update the DNSSEC related records of a domain name, by replacing the set of DS or DNSKEY records referenced in the domain's dns property with a new set of DS or DNSKEY records. The objectId property MUST contain the domain name of the target Domain Name Object.¶
TODO¶
The rpp:mpa-type:domain:transfer transaction type is used to transfer the sponsorship of a domain to another registrar. The objectId property MUST contain the domain name of the target Domain Name Object. When a transfer is initiated, the authorization process ensures that the transfer is approved by the current sponsoring registrar before the gaining registrar can complete the transfer.¶
TODO how domain transfer is handled, the transfer request send by the gaining registrar after approval is granted does not contain a token. the registry must check if authorisation exists but then the token field should be optional in the core spec.¶
The following non normative table lists RPP endpoints related to Authorisation Objects, each derived by applying the rules defined in section "HTTP Mapping Rules" in [I-D.ietf-rpp-core].¶
| Operation | HTTP Method | URL path |
|---|---|---|
| Authorisation: create |
"POST"
|
"/{collection}/{id}/authorisations"
|
| Authorisation: read |
"GET"
|
"/{collection}/{id}/authorisations/latest"
|
| Authorisation: read |
"GET"
|
"/{collection}/{id}/authorisations/{id}"
|
| Authorisation: delete |
"DELETE"
|
"/{collection}/{id}/authorisations/{id}"
|
| Authorisation: list |
"GET"
|
"/{collection}/{id}/authorisations"
|
The following non normative table lists RPP endpoints related to authorisation processes, each derived by applying the rules defined in section "HTTP Mapping Rules" in [I-D.ietf-rpp-core].¶
TODO¶
A registrar supporting multi-party authorization MUST provide at least 1 public key at the registry. Public keys are provisioned by adding a Public Key Object to the publicKeys property of the Organisation Data Object [I-D.ietf-rpp-data-objects], using an RPP JSON partial update (JSON Patch, as defined in the Partial Update rules of [I-D.ietf-rpp-json]). Since publicKeys is a DictionaryComposition[Public Key Object], adding a new key MUST be done using an add operation whose path targets the new key identifier directly; the match property is not used, as it only applies to array-valued properties.¶
The following example shows a partial update request adding an RSA public key with identifier registrar-key-3 to the publicKeys property of the Organisation Data Object with id ORG-12345:¶
PATCH /organisations/me HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
[
{
"op": "add",
"path": "/publicKeys",
"value": {
"registrar-key-3": {
"@type": "publicKey",
"type": "RSA",
"alg": "RS256",
"n": "0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbb....",
"e": "AQAB"
}
}
}
]
¶
TODO do we want to define "me" as a special identifier for the org of the current loggedin user, makes things easier for clients, will need to update core doc.¶
The registrar's approvalUrl and the 3rd party's returnUrl of their respective Organisation Data Object MUST be set, and MUST be valid URLs. Updating these URLs is done using an RPP JSON partial update of the Organisation Data Object, using a replace operation for each URL. The following example shows a partial update request to set the approvalUrl of the registrar's Organisation Data Object with id ORG-12345:¶
PATCH /organisations/ORG-12345 HTTP/1.1
Authorization: Bearer <access-token>
Content-Type: application/json
[
{
"op": "replace",
"path": "/approvalUrl",
"value": "https://registrar.example/consent"
}
]
¶
TODO¶
Example 3rd party request to registry to replace the nameservers of a domain object with a new set of Host Data Objects.¶
{
"@type": "authorisation",
"transactionType": "rpp:mpa-type:domain:host-update",
"timestamp": "2027-06-01T12:00:00Z",
"expiration": "2027-06-01T12:10:00Z",
"objectId": "test1.example"
}
¶
Example Registry Response: TODO¶
Example Registrar Response: TODO¶
Example 3rd party request to registry to replace the DNSSEC DS records of a domain object with a new set of DS records.¶
{
"@type": "authorisation",
"transactionType": "rpp:mpa-type:domain:dnssec-update",
"timestamp": "2027-06-01T12:00:00Z",
"expiration": "2027-06-01T12:10:00Z",
"objectId": "test1.example"
}
¶
Example Registry Response: TODO¶
Example Registrar Response: TODO¶
Example 3rd party request to registry to transfer the management of a domain object:¶
{
"@type": "authorisation",
"transactionType": "rpp:mpa-type:domain:transfer",
"id": "TR-12345",
"timestamp": "2027-06-01T12:00:00Z",
"expiration": "2027-06-01T12:10:00Z",
"objectId": "test1.example"
}
¶
Example registry response to the 3rd party to transfer the management of a domain object, signed by the registry, this response is then sent to the losing registrar, by the 3rd party, to request the registrar and registrant's approval for the transfer.¶
The registry adds the following properties to the request: id, requestorName, and signatures. The id is a unique identifier for the transaction, the requestorName is the public name of the requestor to be displayed in the consent screen, and the signatures array contains the registry's signature and public key identifier, as the first element in the array.¶
{
"@type": "authorisation",
"transactionType": "rpp:mpa-type:domain:transfer",
"id": "TR-12345",
"timestamp": "2027-06-01T12:00:00Z",
"expiration": "2027-06-01T12:10:00Z",
"objectId": "test1.example",
"requestorName": "Example Registrar",
"signatures": [
{
"keyId": "my-registry-key-1",
"signedAt": "2027-06-01T12:00:00Z",
"signature": "yyyyy"
}
]
}
¶
Example response from losing registrar, signed by the registrar and the approval object contains the result of the approval process, to indicate whether the registrant and registrar have approved the transfer. The registrar also adds its signature and public key identifier to the signatures array in the response.¶
This response is sent to the registry to request execution of the transfer:¶
{
"@type": "authorisation",
"transactionType": "rpp:mpa-type:domain:transfer",
"id": "TR-12345",
"timestamp": "2027-06-01T12:00:00Z",
"expiration": "2027-06-01T12:10:00Z",
"objectId": "test1.example",
"requestorName": "Example Registrar",
"approval": {
"approved": true,
"approvedBy": "registrar-admin@example-registrar.example",
"timestamp": "2027-06-01T12:05:00Z"
},
"signatures": [
{
"keyId": "my-registry-key-1",
"signedAt": "2027-06-01T12:00:00Z",
"signature": "yyyyy"
},
{
"keyId": "my-registrar-key-1",
"signedAt": "2027-06-01T12:05:00Z",
"signature": "zzzzz"
}
]
}
¶
This response is used by the 3rd party to submit the transfer request to the registry, The registry verifies the signatures of the registry and registrar, and confirms that approval.approved is set to true. If both signatures are valid and the approval is granted, the registry MUST create an authorization object, allowing the transfer operation to be executed, and return a success response to the 3rd party. The 3rd party can then submit the transfer request to the registry, which will execute the transfer operation.¶
The registrant's explicit consent is required for any RPP operation to be executed. The registrant's consent is obtained through the registrar's web-based consent screen, which is presented to the registrant by the registrar. The registrar MUST ensure that the registrant's consent is obtained before any RPP operation is executed.¶
The registry MUST ensure that the registrant is the owner of the domain name for which the RPP operation is requested, and that the registrant's consent is obtained before any RPP operation is executed.¶
The registry MUST ensure that the registrar is the current sponsoring registrar of record for the domain name for which the RPP operation is requested, the sponsoring registrar may have changed between the time the request is created and the time the RPP operation, using the authorization request, is executed.¶
The registry MUST check if the authorization request used to request an RPP operation is correctly signed by the registry itself and the registrar, and that the request is valid and not expired. The registry MUST reject any request with a missing or invalid signature, or that is invalid or expired. The Registry MUST check that the authorization request is used only once, when the use property is set to single-use. The registry MUST ensure that the authorization request is used only for the specific RPP operation for which it was created, and that the request is not used to authorize any other operation.¶
Signature verification MUST be performed locally by each verifying party using the public key of the signer, rather than by querying the signer's system at verification time. In particular, the registrar MUST verify the registry's signature (and the registry's verification of the 3rd party's signature) using the registry's public key, and MUST NOT rely on a live call back to the registry to confirm that a signature is valid. The registry already re-verifies all signatures, when the fully-signed request is submitted for execution (see Section 4).¶
This document does not specify any authorization and authentication mechanisms for the 3rd party, registry, and registrar to secure the HTTP endpoints used to exchange requests and responses. It is RECOMMENDED to use OAuth 2.0 for RPP, as described in [I-D.wullink-rpp-oauth2].¶
The cryptographic algorithms and key management practices used to sign and verify requests are outside the scope of this document, but it is RECOMMENDED that parties follow best practices for cryptographic security.¶
Securing the HTTP endpoints used in the multi-party authorization flow is out of scope for this document, but it is RECOMMENDED that OAuth 2.0 for RPP, as described in [I-D.wullink-rpp-oauth2], be used.¶
TODO¶
This specification defines new RPP result codes for multi-party authorization, the new result codes follow the result code classes defined in [I-D.ietf-rpp-core]: 14xxx for client errors and 15xxx for server errors. As described in [I-D.ietf-rpp-core].¶
The following client error result codes (class 14xxx) are defined in this document:¶
| RPP Result Code | HTTP Status Code | Description |
|---|---|---|
| 14001 | 400 Bad Request | The transactionType is missing, unknown, or not registered in the "RPP Multi-Party Transaction Types" registry Table 6. |
| 14002 | 404 Not Found | The objectId does not identify an existing object. |
| 14003 | 403 Forbidden | One or more required signatures are missing or fail cryptographic verification. |
| 14004 | 400 Bad Request | A keyId referenced in the request does not match any public key currently provisioned by the identified party. |
| 14005 | 403 Forbidden | The 3rd party is not accredited by the registry to perform the requested operation on the referenced object. |
| 14006 | 403 Forbidden | The identified registrar is not the current sponsoring registrar of record for the referenced object. |
| 14007 | 400 Bad Request | The expiration timestamp of the request has already passed. |
| 14008 | 409 Conflict | The id of the request has already been used by a previously completed or in-progress transaction. |
| 14009 | 403 Forbidden | The registrant did not approve the requested operation at the registrar's consent screen. |
TODO complete the table with additional result codes¶
The following server error result codes (class 15xxx) are defined in this document:¶
| RPP Result Code | HTTP Status Code | Description |
|---|---|---|
| 15001 | 500 Internal Server Error | The registry was unable to sign the authorization request. |
| 15002 | 500 Internal Server Error | The registry was unable to retrieve or validate a registrar's public key. |
TODO complete the table with additional result codes¶
IANA is requested to register the result codes defined in Table 4 and Table 5 in the "RPP Result codes" registry defined in [I-D.ietf-rpp-core].¶
IANA is requested to create a new registry for RPP multi-party transaction type identifiers, these identifiers are used to identify the type of RPP transaction used by 3rd parties to request authorization from the registry and registrar. The registry is to be called "RPP Multi-Party Transaction Types" and is to be maintained by the IETF RPP working group.¶
Name of the registry: RPP Multi-Party Transaction Types Registry group: RESTful Provisioning Protocol (RPP) Registration procedure: Expert Review¶
The following transaction types are defined in this document:¶
| Identifier | Description | Object |
|---|---|---|
| rpp:mpa-type:domain:host-update | Update DNS records (nameservers) for a domain | Domain Name Object |
| rpp:mpa-type:domain:dnssec-update | Update DNSSEC records for a domain | Domain Name Object |
| rpp:mpa-type:domain:transfer | Transfer a domain | Domain Name Object |
This specification defines new entries in the "RESTful Provisioning Protocol (RPP) Data Object Registry" defined in [I-D.ietf-rpp-data-objects].¶
Object: authorisation¶
Object Name: Authorisation Data Object¶
Object Type: Resource¶
Description: Represents the authorisation information for 3rd party access to a specific RPP operation on an object resource.¶
Reference: [This-ID]¶
Data Elements:¶
| Identifier | Name | Card. | Mutability | Data Type | Description |
|---|---|---|---|---|---|
| transactionType | Transaction Type | 1 | create-only | String | The type of transaction for the authorisation request, MUST be one of the values registered in the "RPP Multi-Party Transaction Types" registry Table 6. |
| timestamp | Timestamp | 1 | create-only | Timestamp | The time the authorisation was created. |
| expiration | Expiry Time | 1 | create-only | Timestamp | The time the authorisation expires. |
| objectId | Object Identifier | 1 | create-only | Identifier | The identifier of the object the authorisation is associated with. |
| requestorName | Requestor Name | 1 | read-only | String | The name of the organisation that created the authorisation request. |
| approvalUrl | Approval URL | 0-1 | read-write | URI | The URI to which the client should be redirected for approval. |
| returnUrl | Return URL | 0-1 | read-write | URI | The URI to which the client should be redirected after approval at the registrar is complete. |
| usage | Usage | 1 | create-only | String | The usage type for the authorisation request, one of "single-use" or "multi-use". |
| status | Status | 1 | read-only | Status Object | The current lifecycle status of the authorisation, as described in Figure 2. |
Operations¶
Operation: Create¶
Operation Identifier: create¶
Description: Provisions a new Authorisation Data Object resource, initiating a multi-party authorization request.¶
Parameters: (None)¶
Operation: Read¶
Operation Identifier: read¶
Description: Retrieves the data elements of an existing Authorisation Data Object.¶
Parameters: (None)¶
Operation: Update¶
Operation Identifier: update¶
Description: Modifies the attributes of an existing Authorisation Data Object, used to record the registrar's decision on the authorisation request.¶
Parameters: (None)¶
Operation: Delete¶
Operation Identifier: delete¶
Description: Removes an existing Authorisation Data Object.¶
Parameters: (None)¶
The registrant personally identifiable information (PII) is not included in the multi-party authorization flow, except for the registrant's explicit consent obtained through the registrar's web-based consent screen.¶
TODO¶
TODO¶
TODO¶