draft-ietf-regext-rdap-openid-10.txt | draft-ietf-regext-rdap-openid-11.txt | |||
---|---|---|---|---|
REGEXT Working Group S. Hollenbeck | REGEXT Working Group S. Hollenbeck | |||
Internet-Draft Verisign Labs | Internet-Draft Verisign Labs | |||
Intended status: Standards Track 8 February 2022 | Intended status: Standards Track 24 February 2022 | |||
Expires: 12 August 2022 | Expires: 28 August 2022 | |||
Federated Authentication for the Registration Data Access Protocol | Federated Authentication for the Registration Data Access Protocol | |||
(RDAP) using OpenID Connect | (RDAP) using OpenID Connect | |||
draft-ietf-regext-rdap-openid-10 | draft-ietf-regext-rdap-openid-11 | |||
Abstract | Abstract | |||
The Registration Data Access Protocol (RDAP) provides "RESTful" web | The Registration Data Access Protocol (RDAP) provides "RESTful" web | |||
services to retrieve registration metadata from domain name and | services to retrieve registration metadata from domain name and | |||
regional internet registries. RDAP allows a server to make access | regional internet registries. RDAP allows a server to make access | |||
control decisions based on client identity, and as such it includes | control decisions based on client identity, and as such it includes | |||
support for client identification features provided by the Hypertext | support for client identification features provided by the Hypertext | |||
Transfer Protocol (HTTP). Identification methods that require | Transfer Protocol (HTTP). Identification methods that require | |||
clients to obtain and manage credentials from every RDAP server | clients to obtain and manage credentials from every RDAP server | |||
skipping to change at page 1, line 42 ¶ | skipping to change at page 1, line 42 ¶ | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
This Internet-Draft will expire on 12 August 2022. | This Internet-Draft will expire on 28 August 2022. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2022 IETF Trust and the persons identified as the | Copyright (c) 2022 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
extracted from this document must include Revised BSD License text as | extracted from this document must include Revised BSD License text as | |||
described in Section 4.e of the Trust Legal Provisions and are | described in Section 4.e of the Trust Legal Provisions and are | |||
provided without warranty as described in the Revised BSD License. | provided without warranty as described in the Revised BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
1.1. Problem Statement . . . . . . . . . . . . . . . . . . . . 3 | 1.1. Problem Statement . . . . . . . . . . . . . . . . . . . . 3 | |||
1.2. Proposal . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1.2. Proposal . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 4 | |||
3. Federated Authentication for RDAP . . . . . . . . . . . . . . 4 | 3. Federated Authentication for RDAP . . . . . . . . . . . . . . 4 | |||
3.1. RDAP and OpenID Connect . . . . . . . . . . . . . . . . . 5 | 3.1. RDAP and OpenID Connect . . . . . . . . . . . . . . . . . 5 | |||
3.1.1. Terminology . . . . . . . . . . . . . . . . . . . . . 5 | 3.1.1. Terminology . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1.2. Overview . . . . . . . . . . . . . . . . . . . . . . 5 | 3.1.2. Overview . . . . . . . . . . . . . . . . . . . . . . 5 | |||
3.1.3. RDAP Authentication and Authorization Steps . . . . . 6 | 3.1.3. RDAP Authentication and Authorization Steps . . . . . 6 | |||
3.1.3.1. Provider Discovery . . . . . . . . . . . . . . . 6 | 3.1.3.1. Provider Discovery . . . . . . . . . . . . . . . 7 | |||
3.1.3.2. Authentication Request . . . . . . . . . . . . . 7 | 3.1.3.2. Authentication Request . . . . . . . . . . . . . 7 | |||
3.1.3.3. End-User Authorization . . . . . . . . . . . . . 7 | 3.1.3.3. End-User Authorization . . . . . . . . . . . . . 8 | |||
3.1.3.4. Authorization Response and Validation . . . . . . 8 | 3.1.3.4. Authorization Response and Validation . . . . . . 8 | |||
3.1.3.5. Token Processing . . . . . . . . . . . . . . . . 8 | 3.1.3.5. Token Processing . . . . . . . . . . . . . . . . 8 | |||
3.1.3.6. Delivery of User Information . . . . . . . . . . 8 | 3.1.3.6. Delivery of User Information . . . . . . . . . . 8 | |||
3.1.4. Specialized Claims for RDAP . . . . . . . . . . . . . 8 | 3.1.4. Specialized Claims for RDAP . . . . . . . . . . . . . 9 | |||
3.1.4.1. Stated Purpose . . . . . . . . . . . . . . . . . 8 | 3.1.4.1. Stated Purpose . . . . . . . . . . . . . . . . . 9 | |||
3.1.4.2. Do Not Track . . . . . . . . . . . . . . . . . . 9 | 3.1.4.2. Do Not Track . . . . . . . . . . . . . . . . . . 10 | |||
4. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 10 | 4. Protocol Parameters . . . . . . . . . . . . . . . . . . . . . 10 | |||
4.1. Client Login . . . . . . . . . . . . . . . . . . . . . . 10 | 4.1. Data Structures . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.1. Clients with Limited User Interfaces . . . . . . . . 13 | 4.1.1. Session . . . . . . . . . . . . . . . . . . . . . . . 11 | |||
4.1.1.1. OAuth 2.0 Device Authorization Grant . . . . . . 13 | 4.1.2. Device Info . . . . . . . . . . . . . . . . . . . . . 12 | |||
4.1.1.2. UI-limited Client Login . . . . . . . . . . . . . 13 | 4.2. Client Login . . . . . . . . . . . . . . . . . . . . . . 13 | |||
4.1.1.3. UI-limited Client Login Polling . . . . . . . . . 15 | 4.2.1. Clients with Limited User Interfaces . . . . . . . . 15 | |||
4.2. Session Status . . . . . . . . . . . . . . . . . . . . . 15 | 4.2.1.1. UI-constrained Client Login . . . . . . . . . . . 15 | |||
4.3. Client Logout . . . . . . . . . . . . . . . . . . . . . . 18 | 4.2.1.2. UI-constrained Client Login Polling . . . . . . . 16 | |||
4.4. Token Exchange . . . . . . . . . . . . . . . . . . . . . 18 | 4.3. Session Status . . . . . . . . . . . . . . . . . . . . . 17 | |||
4.5. Parameter Processing . . . . . . . . . . . . . . . . . . 19 | 4.4. Session Refresh . . . . . . . . . . . . . . . . . . . . . 18 | |||
5. RDAP Query Processing . . . . . . . . . . . . . . . . . . . . 19 | 4.5. Client Logout . . . . . . . . . . . . . . . . . . . . . . 20 | |||
6. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 19 | 4.6. Parameter Processing . . . . . . . . . . . . . . . . . . 21 | |||
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 20 | 5. Token Exchange . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
7.1. RDAP Extensions Registry . . . . . . . . . . . . . . . . 20 | 6. RDAP Query Processing . . . . . . . . . . . . . . . . . . . . 21 | |||
7.2. JSON Web Token Claims Registry . . . . . . . . . . . . . 20 | 7. RDAP Conformance . . . . . . . . . . . . . . . . . . . . . . 22 | |||
7.3. RDAP Query Purpose Registry . . . . . . . . . . . . . . . 21 | 8. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 22 | |||
8. Implementation Status . . . . . . . . . . . . . . . . . . . . 23 | 8.1. RDAP Extensions Registry . . . . . . . . . . . . . . . . 22 | |||
9. Security Considerations . . . . . . . . . . . . . . . . . . . 24 | 8.2. JSON Web Token Claims Registry . . . . . . . . . . . . . 23 | |||
9.1. Authentication and Access Control . . . . . . . . . . . . 24 | 8.3. RDAP Query Purpose Registry . . . . . . . . . . . . . . . 23 | |||
10. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 24 | 9. Implementation Status . . . . . . . . . . . . . . . . . . . . 25 | |||
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 24 | 9.1. Editor Implementation . . . . . . . . . . . . . . . . . . 26 | |||
11.1. Normative References . . . . . . . . . . . . . . . . . . 24 | 9.2. Verisign Labs . . . . . . . . . . . . . . . . . . . . . . 26 | |||
11.2. Informative References . . . . . . . . . . . . . . . . . 26 | 9.3. Viagenie . . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 27 | 10. Security Considerations . . . . . . . . . . . . . . . . . . . 27 | |||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 27 | 10.1. Authentication and Access Control . . . . . . . . . . . 28 | |||
11. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 28 | ||||
12.1. Normative References . . . . . . . . . . . . . . . . . . 28 | ||||
12.2. Informative References . . . . . . . . . . . . . . . . . 30 | ||||
Appendix A. Change Log . . . . . . . . . . . . . . . . . . . . . 31 | ||||
Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 31 | ||||
1. Introduction | 1. Introduction | |||
The Registration Data Access Protocol (RDAP) provides "RESTful" web | The Registration Data Access Protocol (RDAP) provides "RESTful" web | |||
services to retrieve registration metadata from domain name and | services to retrieve registration metadata from domain name and | |||
regional internet registries. RDAP allows a server to make access | regional internet registries. RDAP allows a server to make access | |||
control decisions based on client identity, and as such it includes | control decisions based on client identity, and as such it includes | |||
support for client identification features provided by the Hypertext | support for client identification features provided by the Hypertext | |||
Transfer Protocol (HTTP) [RFC7230]. | Transfer Protocol (HTTP) [RFC7230]. | |||
skipping to change at page 4, line 8 ¶ | skipping to change at page 4, line 18 ¶ | |||
identifier issued by a recognized provider who is able to | identifier issued by a recognized provider who is able to | |||
authenticate and validate the user. The identifiers issued by social | authenticate and validate the user. The identifiers issued by social | |||
media services, for example, can be used. Users who require higher | media services, for example, can be used. Users who require higher | |||
levels of service (and who are willing to share more information | levels of service (and who are willing to share more information | |||
about them self to gain access to that service) can secure | about them self to gain access to that service) can secure | |||
identifiers from specialized providers who are or will be able to | identifiers from specialized providers who are or will be able to | |||
provide more detailed information about the user. Server operators | provide more detailed information about the user. Server operators | |||
can then make access control decisions based on the identification | can then make access control decisions based on the identification | |||
information provided by the user. | information provided by the user. | |||
A federated authentication system would make it easier to operate and | A federated authentication system in which an RDAP server outsources | |||
use RDAP by re-using existing identifiers to provide a basic level of | identification and authentication services to a trusted OpenID | |||
access. It can also provide the ability to collect additional user | Provider would make it easier to operate and use RDAP by re-using | |||
identification information, and that information can be shared with | existing identifiers to provide a basic level of access. It can also | |||
the consent of the user. This document describes a federated | provide the ability to collect additional user identification | |||
information, and that information can be shared with the consent of | ||||
the user. This type of system allows an RDAP server to make access | ||||
control decisions based on the nature of a query and the identity, | ||||
authentication, and authorization information that is received from | ||||
the OpenID Provider. This document describes a federated | ||||
authentication system for RDAP based on OpenID Connect [OIDC] that | authentication system for RDAP based on OpenID Connect [OIDC] that | |||
meets all of these needs. | meets all of these needs. | |||
2. Conventions Used in This Document | 2. Conventions Used in This Document | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in BCP | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
skipping to change at page 5, line 48 ¶ | skipping to change at page 6, line 13 ¶ | |||
OpenID Connect requires completion of the following steps: | OpenID Connect requires completion of the following steps: | |||
1. An RDAP client sends an RDAP "help" query to an RDAP server to | 1. An RDAP client sends an RDAP "help" query to an RDAP server to | |||
determine the type of OpenID Authorization Server that's used by | determine the type of OpenID Authorization Server that's used by | |||
the RDAP server. This information is returned in the | the RDAP server. This information is returned in the | |||
rdapConformance section of the response. A value of | rdapConformance section of the response. A value of | |||
"rdap_openidc_local_level_0" indicates that the server uses a | "rdap_openidc_local_level_0" indicates that the server uses a | |||
local Authorization Server. A value of | local Authorization Server. A value of | |||
"rdap_openidc_remote_level_0" indicates that the server uses a | "rdap_openidc_remote_level_0" indicates that the server uses a | |||
remote Authorization Server. | remote Authorization Server. | |||
2. An RDAP client (acting as an OpenID End-User) sends a "login" | 2. An RDAP client (acting as an OpenID End-User) sends an RDAP | |||
request (see Section 4.1) to an RDAP server. The request MUST | "login" request to an RDAP server as described in Section 4.2. | |||
include an "id" query parameter if the server uses only a remote | ||||
Authorization Server. The "id" query parameter is OPTIONAL if | ||||
the server uses a local Authorization Server. | ||||
3. The RDAP server (acting as an OpenID Relying Party (RP)) | 3. The RDAP server (acting as an OpenID Relying Party (RP)) | |||
prepares an Authentication Request containing the desired | prepares an Authentication Request containing the desired | |||
request parameters. | request parameters. | |||
4. The RDAP server sends the RDAP client and Authentication Request | 4. The RDAP server sends the RDAP client and Authentication Request | |||
to an Authorization Server operated by an OpenID Provider (OP) | to an Authorization Server operated by an OpenID Provider (OP) | |||
using an HTTP redirect. | using an HTTP redirect. | |||
5. The Authorization Server authenticates the End-User. | 5. The Authorization Server authenticates the End-User. | |||
6. The Authorization Server obtains End-User consent/authorization. | 6. The Authorization Server obtains End-User consent/authorization. | |||
7. The Authorization Server sends the RDAP Client back to the RDAP | 7. The Authorization Server sends the RDAP Client back to the RDAP | |||
server with an Authorization Code using an HTTP redirect. | server with an Authorization Code using an HTTP redirect. | |||
8. The RDAP server requests a response using the Authorization Code | 8. The RDAP server requests a response using the Authorization Code | |||
at the Token Endpoint. | at the Token Endpoint. | |||
9. The RDAP server receives a response that contains an ID Token | 9. The RDAP server receives a response that contains an ID Token | |||
and Access Token in the response body. | and Access Token in the response body. | |||
10. The RDAP server validates the ID Token and retrieves the claims | 10. The RDAP server validates the ID Token and retrieves the claims | |||
associated with the end-user's identity. | associated with the End-User's identity. | |||
The RDAP server can then make identification, authorization, and | The RDAP server can then make identification, authorization, and | |||
access control decisions based on end-user identity information and | access control decisions based on End-User identity information and | |||
local policies. Note that OpenID Connect describes different process | local policies. Note that OpenID Connect describes different process | |||
flows for other types of clients, such as script-based or command | flows for other types of clients, such as script-based or command | |||
line clients. | line clients. | |||
3.1.3. RDAP Authentication and Authorization Steps | 3.1.3. RDAP Authentication and Authorization Steps | |||
End-Users MUST possess an identifier (an OpenID) issued by an OP to | End-Users MUST possess an identifier (an OpenID) issued by an OP to | |||
use OpenID Connect with RDAP. An OP SHOULD include support for the | use OpenID Connect with RDAP. An OP SHOULD include support for the | |||
claims described in Section 3.1.4 to provide additional information | claims described in Section 3.1.4 to provide additional information | |||
needed for RDAP End-User authorization. OpenID Connect requires RPs | needed for RDAP End-User authorization. OpenID Connect requires RPs | |||
to register with OPs to use OpenID Connect services for an End-User. | to register with OPs to use OpenID Connect services for an End-User. | |||
That process is described by the "OpenID Connect Dynamic Client | The registration process is often completed using out-of-band | |||
Registration" protocol [OIDCR]. | methods, but it is also possible to use the automated method | |||
described by the "OpenID Connect Dynamic Client Registration" | ||||
protocol [OIDCR]. The parties involved can use any method that is | ||||
mutually acceptable. | ||||
3.1.3.1. Provider Discovery | 3.1.3.1. Provider Discovery | |||
An RDAP server/RP needs to be able to map an End-User's identifier to | An RDAP server/RP needs to be able to map an End-User's identifier to | |||
an OP. This can be accomplished using the OPTIONAL "OpenID Connect | an OP. This can be accomplished using the OPTIONAL "OpenID Connect | |||
Discovery" protocol [OIDCD], but that protocol is not widely | Discovery" protocol [OIDCD], but that protocol is not widely | |||
implemented and can be unreliable. Out-of-band methods are also | implemented. Out-of-band methods are also possible and can be more | |||
possible and can be more dependable. For example, an RP can support | dependable. For example, an RP can support a limited number of OPs | |||
a limited number of OPs and maintain internal associations of those | and maintain internal associations of those identifiers with the OPs | |||
identifiers with the OPs that issued them. An RP can also ask an | that issued them. An RP can also ask an End-User to identify the OP | |||
end-user to identify the OP that issued their identifier as part of | that issued their identifier as part of an RDAP query workflow. In | |||
an RDAP query workflow. In this case, the RP will need to maintain | this case, the RP will need to maintain state for the association | |||
state for the association between the user's identifier and the OP in | between the user's identifier and the OP in order to process later | |||
order to process later queries that rely on passing the access token | queries that rely on passing the access token and user identifier as | |||
and user identifier as authorization parameters. An RP MAY use any | authorization parameters. An RP MAY use any provider discovery | |||
provider discovery approach that is suitable for its operating | approach that is suitable for its operating environment. | |||
environment. | ||||
3.1.3.2. Authentication Request | 3.1.3.2. Authentication Request | |||
Once the OP is known, an RP MUST form an Authentication Request and | Once the OP is known, an RP MUST form an Authentication Request and | |||
send it to the OP as described in Section 3 of the OpenID Connect | send it to the OP as described in Section 3 of the OpenID Connect | |||
Core protocol [OIDCC]. The authentication path followed | Core protocol [OIDCC]. The authentication path followed | |||
(authorization, implicit, or hybrid) will depend on the | (authorization, implicit, or hybrid) will depend on the | |||
Authentication Request response_type set by the RP. The remainder of | Authentication Request response_type set by the RP. The remainder of | |||
the processing steps described here assume that the Authorization | the processing steps described here assume that the Authorization | |||
Code Flow is being used by setting "response_type=code" in the | Code Flow is being used by setting "response_type=code" in the | |||
skipping to change at page 8, line 23 ¶ | skipping to change at page 8, line 37 ¶ | |||
3.1.3.5. Token Processing | 3.1.3.5. Token Processing | |||
The RP sends a Token Request using the Authorization Grant to a Token | The RP sends a Token Request using the Authorization Grant to a Token | |||
Endpoint to obtain a Token Response containing an Access Token, ID | Endpoint to obtain a Token Response containing an Access Token, ID | |||
Token, and an OPTIONAL Refresh Token. The RP MUST validate the Token | Token, and an OPTIONAL Refresh Token. The RP MUST validate the Token | |||
Response. This process is described in Section 3.1.3 of the OpenID | Response. This process is described in Section 3.1.3 of the OpenID | |||
Connect Core protocol [OIDCC]. | Connect Core protocol [OIDCC]. | |||
3.1.3.6. Delivery of User Information | 3.1.3.6. Delivery of User Information | |||
The set of Claims can be retrieved by sending a request to a UserInfo | The set of claims can be retrieved by sending a request to a UserInfo | |||
Endpoint using the Access Token. The Claims MAY be returned in the | Endpoint using the Access Token. The claims MAY be returned in the | |||
ID Token. The process of retrieving Claims from a UserInfo Endpoint | ID Token. The process of retrieving claims from a UserInfo Endpoint | |||
is described in Section 5.3 of the OpenID Connect Core protocol | is described in Section 5.3 of the OpenID Connect Core protocol | |||
[OIDCC]. | [OIDCC]. | |||
OpenID Connect specified a set of standard Claims in Section 5.1. | OpenID Connect specifies a set of standard claims in Section 5.1. | |||
Additional Claims for RDAP are described in Section 3.1.4. | Additional claims for RDAP are described in Section 3.1.4. | |||
3.1.4. Specialized Claims for RDAP | 3.1.4. Specialized Claims for RDAP | |||
OpenID Connect claims are pieces of information used to make | OpenID Connect claims are pieces of information used to make | |||
assertions about an entity. Section 5 of the OpenID Connect Core | assertions about an entity. Section 5 of the OpenID Connect Core | |||
protocol [OIDCC] describes a set of standard claims that can be used | protocol [OIDCC] describes a set of standard claims that can be used | |||
to identify a person. Section 5.1.2 notes that additional claims MAY | to identify a person. Section 5.1.2 notes that additional claims MAY | |||
be used, and it describes a method to create them. | be used, and it describes a method to create them. The set of claims | |||
that are specific to RDAP are associated with an OAuth scope request | ||||
parameter value (see Section 3.3 of RFC 6749 ([RFC6749])) of "rdap". | ||||
3.1.4.1. Stated Purpose | 3.1.4.1. Stated Purpose | |||
There are communities of RDAP users and operators who wish to make | There are communities of RDAP users and operators who wish to make | |||
and validate claims about a user's "need to know" when it comes to | and validate claims about a user's "need to know" when it comes to | |||
requesting access to a resource. For example, a law enforcement | requesting access to a resource. For example, a law enforcement | |||
agent or a trademark attorney may wish to be able to assert that they | agent or a trademark attorney may wish to be able to assert that they | |||
have a legal right to access a protected resource, and a server | have a legal right to access a protected resource, and a server | |||
operator will need to be able to receive and validate that claim. | operator will need to be able to receive and validate that claim. | |||
These needs can be met by defining and using an additional "purpose" | These needs can be met by defining and using an additional "purpose" | |||
skipping to change at page 9, line 34 ¶ | skipping to change at page 10, line 7 ¶ | |||
characters from "a" to "z", and the underscore ("_") character. | characters from "a" to "z", and the underscore ("_") character. | |||
Value strings contain at least one character and no more than 64 | Value strings contain at least one character and no more than 64 | |||
characters. | characters. | |||
Description: a one- or two-sentence description of the meaning of the | Description: a one- or two-sentence description of the meaning of the | |||
purpose value, how it might be used, and/or how it should be | purpose value, how it might be used, and/or how it should be | |||
interpreted by clients and servers. | interpreted by clients and servers. | |||
This registry is operated under the "Specification Required" policy | This registry is operated under the "Specification Required" policy | |||
defined in RFC 5226 ([RFC5226]). The set of initial values used to | defined in RFC 5226 ([RFC5226]). The set of initial values used to | |||
populate the registry as described in Section 7.3 are taken from the | populate the registry as described in Section 8.3 are taken from the | |||
final report (https://www.icann.org/en/system/files/files/final- | final report (https://www.icann.org/en/system/files/files/final- | |||
report-06jun14-en.pdf) produced by the Expert Working Group on gTLD | report-06jun14-en.pdf) produced by the Expert Working Group on gTLD | |||
Directory Services chartered by the Internet Corporation for Assigned | Directory Services chartered by the Internet Corporation for Assigned | |||
Names and Numbers (ICANN). | Names and Numbers (ICANN). | |||
3.1.4.2. Do Not Track | 3.1.4.2. Do Not Track | |||
There are also communities of RDAP users and operators who wish to | There are also communities of RDAP users and operators who wish to | |||
make and validate claims about a user's wish to not have their | make and validate claims about a user's wish to not have their | |||
queries logged, tracked, or recorded. For example, a law enforcement | queries logged, tracked, or recorded. For example, a law enforcement | |||
skipping to change at page 10, line 31 ¶ | skipping to change at page 10, line 50 ¶ | |||
present or if the value of the claim is "false". Use of this claim | present or if the value of the claim is "false". Use of this claim | |||
MUST be limited to End-Users who are granted "do not track" | MUST be limited to End-Users who are granted "do not track" | |||
privileges in accordance with service policies and regulations. | privileges in accordance with service policies and regulations. | |||
Specification of these policies and regulations is beyond the scope | Specification of these policies and regulations is beyond the scope | |||
of this document. | of this document. | |||
4. Protocol Parameters | 4. Protocol Parameters | |||
This specification adds the following protocol parameters to RDAP: | This specification adds the following protocol parameters to RDAP: | |||
1. A query parameter to request authentication for a specific end- | 1. Data structures to return information that describes an | |||
user identity. | established session and the information needed to establish a | |||
2. Path segments to start, stop, and determine the status of an | session for a UI-constrained device. | |||
authenticated session for a specific end-user identity. | ||||
4.1. Client Login | 2. A query parameter to request authentication for a specific End- | |||
User identity. | ||||
3. Path segments to start, stop, refresh, and determine the status | ||||
of an authenticated session for a specific End-User identity. | ||||
Client authentication is requested by sending a "login" query to an | 4.1. Data Structures | |||
RDAP server. If the RDAP server supports only remote Authorization | ||||
Servers, the "login" query MUST include an End-User identifier that's | This specification describes two new data structures that are used to | |||
delivered using one of two methods: by adding a query component to an | return information to a client: a "session" data structure that | |||
RDAP request URI using the syntax described in Section 3.4 of RFC | contains information that describes an established session, and a | |||
3986 [RFC3986], or by including an HTTP authorization header for the | "deviceInfo" data structure that contains information that describes | |||
Basic authentication scheme as described in RFC 7617 [RFC7617]. If | an active attempt to establish a session on a UI-constrained device. | |||
the RDAP server supports a local Authorization Servers, the End-User | ||||
identifier MAY be omitted. Clients can use either of these methods. | 4.1.1. Session | |||
Servers MUST support both methods. | ||||
The "session" data structure is an array that contains two sub- | ||||
arrays: | ||||
1. A "userClaims" array that contains the set of claims associated | ||||
with the End-User's identity, with each claim represented as a | ||||
name-value pair in string format. The set of possible values is | ||||
determined by OP policy. | ||||
2. A "sessionInfo" array that contains two name-value pairs: | ||||
a. "tokenExpiration": an integer value that represents the | ||||
number of seconds from the current time for which the Access | ||||
Token remains valid, and | ||||
b. "tokenRefresh": A boolean value that indicates if the OP | ||||
supports refresh tokens. As described in RFC 6749 [RFC6749], | ||||
support for refresh tokens is OPTIONAL. | ||||
An example of a "session" data structure: | ||||
"session": { | ||||
"userClaims": { | ||||
"sub": "103892603076825016132", | ||||
"name": "User Person", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"picture": "https://lh3.example.com/a-/AOh14=s96-c", | ||||
"email": "user@example.com", | ||||
"email_verified": true, | ||||
"locale": "en", | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
}, | ||||
"sessionInfo": { | ||||
"tokenExpiration": 3599, | ||||
"tokenRefresh": true | ||||
} | ||||
} | ||||
Figure 1 | ||||
4.1.2. Device Info | ||||
The flow described in Section 3.1.3 requires an End-User to interact | ||||
with a server using a user interface that can process HTTP. This | ||||
will not work well in situations where the client is automated or an | ||||
End-User is using a command line user interface such as curl | ||||
(http://curl.haxx.se/) or wget (https://www.gnu.org/software/wget/). | ||||
This limitation can be addressed using a web browser on a second | ||||
device. The information that needs to be entered using the web | ||||
browser is contained in the "deviceInfo" data structure. | ||||
The "deviceInfo" data structure is an array that contains three name- | ||||
value pairs: | ||||
1. "verification_url": the URL that the End-User needs to visit | ||||
using the web browser, | ||||
2. "user_code": the string value that the End-User needs to enter on | ||||
the form presented in the web browser, and | ||||
3. "expires_in": an integer value that represents the number of | ||||
seconds after which the opportunity to visit the URL and enter | ||||
the user_code will expire. | ||||
An example of a "deviceInfo" data structure: | ||||
"deviceInfo": { | ||||
"verification_url": "https://www.example.com/device", | ||||
"user_code": "NJJQ-GJFC", | ||||
"expires_in": "1800" | ||||
} | ||||
Figure 2 | ||||
4.2. Client Login | ||||
Client authentication is requested by sending a "session/login" | ||||
request to an RDAP server. If the RDAP server supports only remote | ||||
Authorization Servers, the "session/login" request MUST include an | ||||
End-User identifier that's delivered using one of two methods: by | ||||
adding a query component to an RDAP request URI using the syntax | ||||
described in Section 3.4 of RFC 3986 [RFC3986], or by including an | ||||
HTTP authorization header for the Basic authentication scheme as | ||||
described in RFC 7617 [RFC7617]. Clients can use either of these | ||||
methods to deliver the End-User identifier to a server that supports | ||||
remote Authorization Servers. Servers that support remote | ||||
Authorization Servers MUST accept both methods. If the RDAP server | ||||
supports a local Authorization Server, the End-User identifier MAY be | ||||
omitted. | ||||
The query used to request client authentication is represented as an | The query used to request client authentication is represented as an | |||
OPTIONAL "key=value" pair using a key value of "id" and a value | OPTIONAL "key=value" pair using a key value of "id" and a value | |||
component that contains the client identifier issued by an OP. An | component that contains the client identifier issued by an OP. An | |||
example for client identifier "user.idp.example": | example for client identifier "user.idp.example": | |||
https://example.com/rdap/login?id=user.idp.example | https://example.com/rdap/session/login?id=user.idp.example | |||
The authorization header for the Basic authentication scheme contains | The authorization header for the Basic authentication scheme contains | |||
a Base64-encoded representation of the client identifier issued by an | a Base64-encoded representation of the client identifier issued by an | |||
OP. No password is provided. An example for client identifier | OP. No password is provided. An example for client identifier | |||
"user.idp.example": | "user.idp.example": | |||
https://example.com/rdap/login | https://example.com/rdap/session/login | |||
Authorization: Basic dXNlci5pZHAuZXhhbXBsZQ== | Authorization: Basic dXNlci5pZHAuZXhhbXBsZQ== | |||
An example for use with a local Authorization Server: | An example for use with a local Authorization Server: | |||
https://example.com/rdap/login | https://example.com/rdap/session/login | |||
The response to this request MUST use the response structures | ||||
The response to this query MUST use the response structures specified | specified in RFC 9083 [RFC9083]. In addition, the response MUST | |||
in RFC 9083 [RFC9083]. In addition, the response MUST include an | include an indication of the requested operation's success or failure | |||
indication of the requested operation's success or failure, and, if | in the "notices" data structure (including the client identifier), | |||
successful, the client identifier associated with the request, the | and, if successful, a "session" data structure. | |||
claims received from the Authorization Server, and the duration of | ||||
the authorized session. | ||||
An example of a successful "login" response: | An example of a successful "session/login" response: | |||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Login Result", | "title": "Login Result", | |||
"description": [ | "description": [ | |||
"Login succeeded", | "Login succeeded", | |||
[ | "user.idp.example" | |||
"Client ID", | ], | |||
"user.idp.example" | ||||
], | ||||
[ | ||||
"Claims", | ||||
{ | ||||
"iss": "https://accounts.someprovider.com", | ||||
"azp": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"aud": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"sub": "103892603076825016132", | ||||
"email": "user@someprovider.com", | ||||
"email_verified": true, | ||||
"at_hash": "es5maY5y9jBAWCBMhLokAQ", | ||||
"nonce": "dcb29f97c836726ddc074f76fbc21bfd", | ||||
"name": "User Person", | ||||
"picture": "https://lh3.someprovider.com/a-/AOh14=s96-c", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"locale": "en", | ||||
"iat": 1644239971, | ||||
"exp": 1644243571, | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
} | ||||
], | ||||
[ | ||||
"Expires in (seconds)", | ||||
3599 | ||||
] | ||||
] | ||||
}, | }, | |||
"lang": "en-US" | "session": { | |||
"userClaims": { | ||||
"sub": "103892603076825016132", | ||||
"name": "User Person", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"picture": "https://lh3.example.com/a-/AOh14=s96-c", | ||||
"email": "user@example.com", | ||||
"email_verified": true, | ||||
"locale": "en", | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
}, | ||||
"sessionInfo": { | ||||
"tokenExpiration": 3599, | ||||
"tokenRefresh": true | ||||
} | ||||
} | ||||
} | } | |||
Figure 1 | Figure 3 | |||
An example of a failed "login" response: | An example of a failed "session/login" response: | |||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Login Result", | "title": "Login Result", | |||
"description": [ | "description": [ | |||
"Login failed", | "Login failed", | |||
[ | "user.idp.example" | |||
"Client ID", | ||||
"user.idp.example" | ||||
] | ] | |||
}, | } | |||
"lang": "en-US" | ||||
} | } | |||
Figure 2 | Figure 4 | |||
4.1.1. Clients with Limited User Interfaces | ||||
The flow described in Section 3.1.3 requires an end-user to interact | ||||
with a server using a user interface that can process HTTP. This | ||||
will not work well in situations where the client is automated or an | ||||
end-user is using a command line user interface such as curl | ||||
(http://curl.haxx.se/) or wget (https://www.gnu.org/software/wget/). | ||||
This limitation can be addressed using a web browser on a second | ||||
device. | ||||
4.1.1.1. OAuth 2.0 Device Authorization Grant | 4.2.1. Clients with Limited User Interfaces | |||
The "OAuth 2.0 Device Authorization Grant" [RFC8628] provides an | The "OAuth 2.0 Device Authorization Grant" [RFC8628] provides an | |||
OPTIONAL method to request user authorization from devices that have | OPTIONAL method to request user authorization from devices that have | |||
an Internet connection, but lack a suitable browser for a more | an Internet connection, but lack a suitable browser for a more | |||
traditional OAuth flow. This method requires a client to use a | traditional OAuth flow. This method requires an End-User to use a | |||
second device (such as a smart telephone) that has access to a web | second device (such as a smart telephone) that has access to a web | |||
browser for entry of a code sequence that is presented on the | browser for entry of a code sequence that is presented on the UI- | |||
constrained device. | constrained device. | |||
4.1.1.2. UI-limited Client Login | 4.2.1.1. UI-constrained Client Login | |||
Client authentication is requested by sending a "login/device" query | Client authentication is requested by sending a "session/device" | |||
to an RDAP server. If the RDAP server supports only remote | request to an RDAP server. If the RDAP server supports only remote | |||
Authorization Servers, the "login/device" query MUST include an End- | Authorization Servers, the "session/device" request MUST include an | |||
User identifier that's delivered using one of two methods: by adding | End-User identifier that's delivered using one of two methods: by | |||
a query component to an RDAP request URI using the syntax described | adding a query component to an RDAP request URI using the syntax | |||
in Section 3.4 of RFC 3986 [RFC3986], or by including an HTTP | described in Section 3.4 of RFC 3986 [RFC3986], or by including an | |||
authorization header for the Basic authentication scheme as described | HTTP authorization header for the Basic authentication scheme as | |||
in RFC 7617 [RFC7617]. If the RDAP server supports a local | described in RFC 7617 [RFC7617]. If the RDAP server supports a local | |||
Authorization Servers, the End-User identifier MAY be omitted. | Authorization Server, the End-User identifier MAY be omitted. | |||
Clients can use either of these methods. Servers MUST support both | Clients can use either of these methods. Servers MUST support both | |||
methods. | methods. | |||
The query used to request client authentication is represented as an | The query used to request client authentication is represented as an | |||
OPTIONAL "key=value" pair using a key value of "id" and a value | OPTIONAL "key=value" pair using a key value of "id" and a value | |||
component that contains the client identifier issued by an OP. An | component that contains the client identifier issued by an OP. An | |||
example using wget for client identifier "user.idp.example": | example using wget for client identifier "user.idp.example": | |||
wget -qO- --keep-session-cookies --save- | wget -qO- --keep-session-cookies --save- | |||
cookies\https://example.com/rdap/login/device?id=user.idp.example | cookies\https://example.com/rdap/session/device?id=user.idp.example | |||
The authorization header for the Basic authentication scheme contains | The authorization header for the Basic authentication scheme contains | |||
a Base64-encoded representation of the client identifier issued by an | a Base64-encoded representation of the client identifier issued by an | |||
OP. No password is provided. An example using curl and an | OP. No password is provided. An example using curl and an | |||
authorization header: | authorization header: | |||
curl -H "Authorization: Bearer dXNlci5pZHAuZXhhbXBsZQ=="\-c | curl -H "Authorization: Bearer dXNlci5pZHAuZXhhbXBsZQ=="\-c | |||
cookies.txt https://example.com/rdap/domain/login/device | cookies.txt https://example.com/rdap/session/device | |||
The response to this query MUST use the response structures specified | The response to this request MUST use the response structures | |||
in RFC 9083 [RFC9083]. In addition, the response MUST include an | specified in RFC 9083 [RFC9083]. In addition, the response MUST | |||
indication of the requested operation's success or failure, and, if | include an indication of the requested operation's success or failure | |||
successful, the name-value pairs described in Section 3.2 of RFC 8628 | in the "notices" data structure (including the client identifier), | |||
[RFC8628]. | and, if successful, a "deviceInfo" data structure. | |||
An example of a device "login" response (the device_code has been | An example of a "session/device" response: | |||
abbreviated): | ||||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Device Login Result", | "title": "Device Login Result", | |||
"description": [ | "description": [ | |||
"Login succeeded", | "Login succeeded", | |||
{ | "user.idp.example" | |||
"device_code": "AH-1N...iy7yg", | ||||
"user_code": "CVYP-SYRC", | ||||
"expires_in": 1800, | ||||
"interval": 5, | ||||
"verification_url": "https:\/\/www.example.net\/device" | ||||
} | ||||
] | ] | |||
}, | }, | |||
"lang": "en-US" | "deviceInfo": { | |||
"verification_url": "https://www.example.com/device", | ||||
"user_code": "NJJQ-GJFC", | ||||
"expires_in": "1800" | ||||
} | ||||
} | } | |||
Figure 3 | Figure 5 | |||
4.1.1.3. UI-limited Client Login Polling | 4.2.1.2. UI-constrained Client Login Polling | |||
After successful processing of the "login/device" query, the client | After successful processing of the "session/device" request, the | |||
MUST send a "login/devicepoll" query to the RDAP server to continue | client MUST send a "session/devicepoll" request to the RDAP server to | |||
the login process. This query performs the polling function | continue the login process. This request performs the polling | |||
described in RFC 8628 [RFC8628], allowing the RDAP server to wait for | function described in RFC 8628 [RFC8628], allowing the RDAP server to | |||
the End-User to enter the information returned from the "login/ | wait for the End-User to enter the information returned from the | |||
device" query using the interface on their second device. After the | "session/device" request using the interface on their second device. | |||
End-User has completed that process, or if the process fails or times | After the End-User has completed that process, or if the process | |||
out, the OP will respond to the polling requests with an indication | fails or times out, the OP will respond to the polling requests with | |||
of success or failure. Both should be noted using the response | an indication of success or failure. An example using wget: | |||
structures described in Section 4.1. An example using wget: | ||||
wget -qO- --load-cookies cookies.txt\https://example.com/rdap/login/ | wget -qO- --load-cookies | |||
devicepoll | cookies.txt\https://example.com/rdap/session/devicepoll | |||
An example using curl: | An example using curl: | |||
curl -b cookies.txt https://example.com/rdap/domain/login/devicepoll | curl -b cookies.txt https://example.com/rdap/session/devicepoll | |||
The response to this query MUST use the response structures described | ||||
in Section 4.1. RDAP query processing can continue normally on the | ||||
UI-limited device once the "login" process has been completed. | ||||
4.2. Session Status | ||||
Clients MAY send a request to an RDAP server to determine the status | The response to this request MUST use the response structures | |||
of an existing login session using a "session" path segment. This | described in Section 4.2. RDAP query processing can continue | |||
request MAY include an OPTIONAL "refresh" path segment to refresh the | normally on the UI-constrained device once the "login" process has | |||
access token associated with the current session and to extend the | been completed. | |||
session for a period of time determined by the OP. As described in | ||||
RFC 6749 [RFC6749], support for refresh tokens is OPTIONAL. An RDAP | ||||
server MUST determine if the OP supports token refresh and process | ||||
the refresh request by either requesting refresh of the access token | ||||
or by returning a response that indicates that token refresh is not | ||||
supported by the OP. An example "session" request: | ||||
https://example.com/rdap/session | 4.3. Session Status | |||
An example "session" request with token refresh included: | Clients MAY send a query to an RDAP server to determine the status of | |||
an existing login session using a "session/status" path segment. An | ||||
example "session/status" request: | ||||
https://example.com/rdap/session/refresh | https://example.com/rdap/session/status | |||
In addition to any core RDAP response elements, the response MUST | The response to this query MUST use the response structures specified | |||
include an indication of the requested operation's success or | in RFC 9083 [RFC9083]. In addition, the response MUST include an | |||
failure, and, if successful, the client identifier associated with | indication of the requested operation's success or failure in the | |||
the session, the claims received from the Authorization Server, and | "notices" data structure (including the client identifier), and, if | |||
the duration of the authorized session. | successful, a "session" data structure. | |||
An example without token refresh: | An example of a "session/status" response: | |||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Session Status Result", | "title": "Session Status Result", | |||
"description": [ | "description": [ | |||
"Session status succeeded", | "Session status succeeded", | |||
[ | "user.idp.example" | |||
"Client ID", | ||||
"user.idp.example" | ||||
], | ||||
[ | ||||
"Token Refresh Status", | ||||
"Token refresh not requested." | ||||
] | ||||
[ | ||||
"Expires in (seconds)", | ||||
1873 | ||||
] | ||||
[ | ||||
"Claims", | ||||
{ | ||||
"iss": "https://accounts.someprovider.com", | ||||
"azp": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"aud": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"sub": "103892603076825016132", | ||||
"email": "user@someprovider.com", | ||||
"email_verified": true, | ||||
"at_hash": "es5maY5y9jBAWCBMhLokAQ", | ||||
"nonce": "dcb29f97c836726ddc074f76fbc21bfd", | ||||
"name": "User Person", | ||||
"picture": "https://lh3.someprovider.com/a-/AOh14=s96-c", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"locale": "en", | ||||
"iat": 1644239971, | ||||
"exp": 1644243571, | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
} | ||||
], | ||||
] | ] | |||
}, | }, | |||
"lang": "en-US" | "session": { | |||
"userClaims": { | ||||
"sub": "103892603076825016132", | ||||
"name": "User Person", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"picture": "https://lh3.example.com/a-/AOh14=s96-c", | ||||
"email": "user@example.com", | ||||
"email_verified": true, | ||||
"locale": "en", | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
}, | ||||
"sessionInfo": { | ||||
"tokenExpiration": 3490, | ||||
"tokenRefresh": true | ||||
} | ||||
} | ||||
} | } | |||
Figure 4 | Figure 6 | |||
An example with token refresh: | 4.4. Session Refresh | |||
Clients MAY send a request to an RDAP server to refresh, or extend, | ||||
an existing login session using a "session/refresh" path segment. | ||||
The RDAP server MAY attempt to refresh the access token associated | ||||
with the current session as part of extending the session for a | ||||
period of time determined by the RDAP server. As described in RFC | ||||
6749 [RFC6749], OP support for refresh tokens is OPTIONAL. An RDAP | ||||
server MUST determine if the OP supports token refresh and process | ||||
the refresh request by either requesting refresh of the access token | ||||
or by returning a response that indicates that token refresh is not | ||||
supported by the OP in the "notices" data structure. An example | ||||
"session/refresh" request: | ||||
https://example.com/rdap/session/refresh | ||||
The response to this request MUST use the response structures | ||||
specified in RFC 9083 [RFC9083]. In addition, the response MUST | ||||
include an indication of the requested operation's success or failure | ||||
in the "notices" data structure (including the client identifier), | ||||
and, if successful, a "session" data structure. | ||||
An example of a "session/refresh" response: | ||||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Session Status Result", | "title": "Session Refresh Result", | |||
"description": [ | "description": [ | |||
"Session status succeeded", | "Session refresh succeeded", | |||
[ | "user.idp.example", | |||
"Client ID", | "Token refresh succeeded." | |||
"user.idp.example" | ||||
], | ||||
[ | ||||
"Token Refresh Status", | ||||
"Token refresh successful." | ||||
] | ||||
[ | ||||
"Expires in (seconds)", | ||||
3599 | ||||
] | ||||
[ | ||||
"Claims", | ||||
{ | ||||
"iss": "https://accounts.someprovider.com", | ||||
"azp": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"aud": "729559086898-onapsvnhf2og.apps.someprovider.com", | ||||
"sub": "103892603076825016132", | ||||
"email": "user@someprovider.com", | ||||
"email_verified": true, | ||||
"at_hash": "es5maY5y9jBAWCBMhLokAQ", | ||||
"nonce": "dcb29f97c836726ddc074f76fbc21bfd", | ||||
"name": "User Person", | ||||
"picture": "https://lh3.someprovider.com/a-/AOh14=s96-c", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"locale": "en", | ||||
"iat": 1644239971, | ||||
"exp": 1644243571, | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
} | ||||
], | ||||
] | ] | |||
}, | }, | |||
"lang": "en-US" | "session": { | |||
"userClaims": { | ||||
"sub": "103892603076825016132", | ||||
"name": "User Person", | ||||
"given_name": "User", | ||||
"family_name": "Person", | ||||
"picture": "https://lh3.example.com/a-/AOh14=s96-c", | ||||
"email": "user@example.com", | ||||
"email_verified": true, | ||||
"locale": "en", | ||||
"purpose": "domainNameControl", | ||||
"dnt": false | ||||
}, | ||||
"sessionInfo": { | ||||
"tokenExpiration": 3599, | ||||
"tokenRefresh": true | ||||
} | ||||
} | ||||
} | } | |||
Figure 5 | Figure 7 | |||
4.3. Client Logout | 4.5. Client Logout | |||
Clients MAY send a request to an RDAP server to terminate an existing | Clients MAY send a request to an RDAP server to terminate an existing | |||
login session. Termination of a session is requested using a | login session. Termination of a session is requested using a | |||
"logout" path segment. An example: | "session/logout" path segment. Access and refresh tokens can be | |||
revoked during the "session/logout" process as described in RFC 7009 | ||||
[RFC7009] if supported by the OP (token revocation endpoint support | ||||
is OPTIONAL per RFC 8414 [RFC8414]). If supported, this feature | ||||
SHOULD be used to ensure that the tokens are not mistakenly | ||||
associated with a future RDAP session. Alternatively, an RDAP server | ||||
MAY attempt to logout from the OP using the "OpenID Connect RP- | ||||
Initiated Logout" protocol ([OIDCL]) if that protocol is supported by | ||||
the OP. | ||||
https://example.com/rdap/logout | An example "session/logout" request: | |||
In addition to any core RDAP response elements, the response MUST | https://example.com/rdap/session/logout | |||
include an indication of the requested operation's success or | ||||
failure, and, if successful, the client identifier associated with | ||||
the session. | ||||
Example "logout" response: | The response to this request MUST use the response structures | |||
specified in RFC 9083 [RFC9083]. In addition, the response MUST | ||||
include an indication of the requested operation's success or failure | ||||
in the "notices" data structure (including the client identifier). | ||||
The "notices" data structure MUST also include an indication of the | ||||
success or failure of any attempt to logout from the OP or to revoke | ||||
the tokens issued by the OP. | ||||
An example of a "session/logout" response: | ||||
{ | { | |||
"rdapConformance": [ | ||||
"rdap_openidc_remote_level_0" | ||||
], | ||||
"lang": "en-US", | ||||
"notices": { | "notices": { | |||
"title": "Logout Result", | "title": "Logout Result", | |||
"description": [ | "description": [ | |||
"Logout succeeded", | "Logout succeeded", | |||
[ | "user.idp.example", | |||
"Client ID", | "Provider logout failed: Not supported by provider.", | |||
"user.idp.example" | ||||
], | ||||
"Token revocation successful." | "Token revocation successful." | |||
] | ] | |||
}, | } | |||
"lang": "en-US" | ||||
} | } | |||
Figure 6 | Figure 8 | |||
Access and refresh tokens can be revoked during the "logout" process | In the absence of a "logout" request, an RDAP session MUST be | |||
as described in RFC 7009 [RFC7009] if supported by the OP (token | terminated by the RDAP server after a server-defined period of time. | |||
revocation endpoint support is OPTIONAL per RFC 8414 [RFC8414]). If | The server should also take appropriate steps to ensure that the | |||
supported, this feature SHOULD be used to ensure that the tokens are | tokens associated with the terminated session cannot be reused. This | |||
not mistakenly associated with a future RDAP session. In the absence | SHOULD include revoking the tokens or logging out from the OP if | |||
of a "logout" query, an RDAP session MUST be terminated by the RDAP | either operation is supported by the OP. | |||
server after a server-defined period of time. | ||||
4.4. Token Exchange | 4.6. Parameter Processing | |||
Unrecognized query parameters MUST be ignored. An RDAP server that | ||||
processes an authenticated query MUST determine if the End-User | ||||
identification information is associated with an OP that is | ||||
recognized and supported by the server. Servers MUST reject queries | ||||
that include identification information that is not associated with a | ||||
supported OP by returning an HTTP 501 (Not Implemented) response. An | ||||
RDAP server that receives a query containing identification | ||||
information associated with a recognized OP MUST perform the steps | ||||
required to authenticate the user with the OP, process the query, and | ||||
return an RDAP response that is appropriate for the End-User's level | ||||
of authorization and access. | ||||
5. Token Exchange | ||||
ID tokens include an audience parameter that contains the OAuth 2.0 | ID tokens include an audience parameter that contains the OAuth 2.0 | |||
client_id of the RP as an audience value. In some operational | client_id of the RP as an audience value. In some operational | |||
scenarios (such as a client that is providing a proxy service), an RP | scenarios (such as a client that is providing a proxy service), an RP | |||
can receive tokens with an audience value that does not include the | can receive tokens with an audience value that does not include the | |||
RP's client_id. These tokens might not be trusted by the RP, and the | RP's client_id. These tokens might not be trusted by the RP, and the | |||
RP might refuse to accept the tokens. This situation can be remedied | RP might refuse to accept the tokens. This situation can be remedied | |||
by having the RP exchange these tokens with the OP for a set of | by having the RP exchange these tokens with the OP for a set of | |||
trusted tokens that reset the audience parameter. This token | trusted tokens that reset the audience parameter. This token | |||
exchange protocol is described in RFC 8693 [RFC8693]. This issue is | exchange protocol is described in RFC 8693 [RFC8693]. This issue is | |||
not visible to the RDAP client and should be managed by the OpenID | not visible to the RDAP client and should be managed by the OpenID | |||
implementation used by the RDAP server. | implementation used by the RDAP server. | |||
4.5. Parameter Processing | 6. RDAP Query Processing | |||
Unrecognized query parameters MUST be ignored. An RDAP server that | ||||
processes an authenticated query MUST determine if the end-user | ||||
identification information is associated with an OP that is | ||||
recognized and supported by the server. Servers MUST reject queries | ||||
that include identification information that is not associated with a | ||||
supported OP by returning an HTTP 501 (Not Implemented) response. An | ||||
RDAP server that receives a query containing identification | ||||
information associated with a recognized OP MUST perform the steps | ||||
required to authenticate the user with the OP, process the query, and | ||||
return an RDAP response that is appropriate for the End-User's level | ||||
of authorization and access. | ||||
5. RDAP Query Processing | ||||
Once an RDAP "login" session is active, an RDAP server MUST determine | Once an RDAP session is active, an RDAP server MUST determine if the | |||
if the End-User is authorized to perform any queries that are | End-User is authorized to perform any queries that are received | |||
received during the duration of the session. This MAY include | during the duration of the session. This MAY include rejecting | |||
rejecting queries outright, and it MAY include omitting or otherwise | queries outright, and it MAY include omitting or otherwise redacting | |||
redacting information that the End-User is not authorized to receive. | information that the End-User is not authorized to receive. Specific | |||
Specific processing requirements are beyond the scope of this | processing requirements are beyond the scope of this document. A | |||
document. A client can end a session explicitly by sending a | client can end a session explicitly by sending a "session/logout" | |||
"logout" query to the RDAP server. A session can also be ended | request to the RDAP server. A session can also be ended implicitly | |||
implicitly by the server after a server-defined period of time. The | by the server after a server-defined period of time. The status of a | |||
status of a session can be determined at any time by sending a | session can be determined at any time by sending a "session/status" | |||
"session" query to the RDAP server. | query to the RDAP server. | |||
An RDAP server MUST maintain session state information for the | An RDAP server MUST maintain session state information for the | |||
duration of an active session. This is commonly done using HTTP | duration of an active session. This is commonly done using HTTP | |||
cookies as described in RFC 6265 [RFC6265]>. Doing so allows End- | cookies as described in RFC 6265 [RFC6265]. Doing so allows End-User | |||
User to submit queries without having to explicitly identify and | to submit queries without having to explicitly identify and | |||
authenticate themselves for each and every query. | authenticate themselves for each and every query. | |||
6. RDAP Conformance | 7. RDAP Conformance | |||
RDAP responses that contain values described in this document MUST | RDAP responses that contain values described in this document MUST | |||
indicate conformance with this specification by including an | indicate conformance with this specification by including an | |||
rdapConformance ([RFC9083]) value of "rdap_openidc_remote_level_0" or | rdapConformance ([RFC9083]) value of "rdap_openidc_remote_level_0" | |||
"rdap_openidc_local_level_0". Both values MAY be present if a server | (to indicate support for one or more remote Authorization Servers), | |||
supports both local and remote OpenID Authorization Servers. The | "rdap_openidc_local_level_0" (to indicate support for a local | |||
information needed to register this value in the RDAP Extensions | Authorization Server), or both values if the server supports both | |||
Registry is described in Section 7.1. | remote and local OpenID Authorization Servers. The information | |||
needed to register these values in the RDAP Extensions Registry is | ||||
described in Section 8.1. | ||||
Example rdapConformance structure with extension specified: | Example rdapConformance structure with extension specified: | |||
"rdapConformance" : | "rdapConformance" : | |||
[ | [ | |||
"rdap_level_0", | "rdap_level_0", | |||
"rdap_openidc_remote_level_0" | "rdap_openidc_remote_level_0" | |||
] | ] | |||
Figure 7 | Figure 9 | |||
7. IANA Considerations | 8. IANA Considerations | |||
7.1. RDAP Extensions Registry | 8.1. RDAP Extensions Registry | |||
IANA is requested to register the following values in the RDAP | IANA is requested to register the following values in the RDAP | |||
Extensions Registry: | Extensions Registry: | |||
* Extension identifier: rdap_openidc_remote_level_0 | * Extension identifier: rdap_openidc_remote_level_0 | |||
* Registry operator: Any | * Registry operator: Any | |||
* Published specification: This document. | * Published specification: This document. | |||
* Contact: IESG <iesg@ietf.org> | * Contact: IESG <iesg@ietf.org> | |||
* Intended usage: This extension describes a federated | * Intended usage: This extension describes a federated | |||
authentication method for RDAP using OAuth 2.0, OpenID Connect, | authentication method for RDAP using OAuth 2.0, OpenID Connect, | |||
and a remote Authorization Server. | and a remote Authorization Server. | |||
* Extension identifier: rdap_openidc_local_level_0 | * Extension identifier: rdap_openidc_local_level_0 | |||
* Registry operator: Any | * Registry operator: Any | |||
* Published specification: This document. | * Published specification: This document. | |||
* Contact: IESG <iesg@ietf.org> | * Contact: IESG <iesg@ietf.org> | |||
* Intended usage: This extension describes a federated | * Intended usage: This extension describes a federated | |||
authentication method for RDAP using OAuth 2.0, OpenID Connect, | authentication method for RDAP using OAuth 2.0, OpenID Connect, | |||
and a local Authorization Server. | and a local Authorization Server. | |||
7.2. JSON Web Token Claims Registry | 8.2. JSON Web Token Claims Registry | |||
IANA is requested to register the following values in the JSON Web | IANA is requested to register the following values in the JSON Web | |||
Token Claims Registry: | Token Claims Registry: | |||
* Claim Name: "purpose" | * Claim Name: "purpose" | |||
* Claim Description: This claim describes the stated purpose for | * Claim Description: This claim describes the stated purpose for | |||
submitting a request to access a protected RDAP resource. | submitting a request to access a protected RDAP resource. | |||
* Change Controller: IESG | * Change Controller: IESG | |||
* Specification Document(s): Section 3.1.4.1 of this document. | * Specification Document(s): Section 3.1.4.1 of this document. | |||
* Claim Name: "dnt" | * Claim Name: "dnt" | |||
* Claim Description: This claim contains a JSON boolean literal that | * Claim Description: This claim contains a JSON boolean literal that | |||
describes an End-User's "do not track" preference for identity | describes an End-User's "do not track" preference for identity | |||
tracking, logging, or recording when accessing a protected RDAP | tracking, logging, or recording when accessing a protected RDAP | |||
resource. | resource. | |||
* Change Controller: IESG | * Change Controller: IESG | |||
* Specification Document(s): Section 3.1.4.2 of this document. | * Specification Document(s): Section 3.1.4.2 of this document. | |||
7.3. RDAP Query Purpose Registry | 8.3. RDAP Query Purpose Registry | |||
IANA is requested to create a new protocol registry to manage RDAP | IANA is requested to create a new protocol registry to manage RDAP | |||
query purpose values. This registry should appear under its own | query purpose values. This registry should appear under its own | |||
heading on IANA's protocol listings, using the same title as the name | heading on IANA's protocol listings, using the same title as the name | |||
of the registry. The information to be registered and the procedures | of the registry. The information to be registered and the procedures | |||
to be followed in populating the registry are described in | to be followed in populating the registry are described in | |||
Section 3.1.4.1. | Section 3.1.4.1. | |||
Name of registry: Registration Data Access Protocol (RDAP) Query | Name of registry: Registration Data Access Protocol (RDAP) Query | |||
Purpose Values | Purpose Values | |||
skipping to change at page 23, line 23 ¶ | skipping to change at page 25, line 39 ¶ | |||
the scope of this purpose include reporting abuse to someone who can | the scope of this purpose include reporting abuse to someone who can | |||
investigate and address that abuse, or contacting entities associated | investigate and address that abuse, or contacting entities associated | |||
with a domain name during an offline criminal investigation. | with a domain name during an offline criminal investigation. | |||
-----END FORM----- | -----END FORM----- | |||
-----BEGIN FORM----- Value: dnsTransparency Description: Tasks within | -----BEGIN FORM----- Value: dnsTransparency Description: Tasks within | |||
the scope of this purpose involve querying the registration data made | the scope of this purpose involve querying the registration data made | |||
public by registrants to satisfy a wide variety of use cases around | public by registrants to satisfy a wide variety of use cases around | |||
informing the general public. -----END FORM----- | informing the general public. -----END FORM----- | |||
8. Implementation Status | 9. Implementation Status | |||
NOTE: Please remove this section and the reference to RFC 7942 prior | NOTE: Please remove this section and the reference to RFC 7942 prior | |||
to publication as an RFC. | to publication as an RFC. | |||
This section records the status of known implementations of the | This section records the status of known implementations of the | |||
protocol defined by this specification at the time of posting of this | protocol defined by this specification at the time of posting of this | |||
Internet-Draft, and is based on a proposal described in RFC 7942 | Internet-Draft, and is based on a proposal described in RFC 7942 | |||
[RFC7942]. The description of implementations in this section is | [RFC7942]. The description of implementations in this section is | |||
intended to assist the IETF in its decision processes in progressing | intended to assist the IETF in its decision processes in progressing | |||
drafts to RFCs. Please note that the listing of any individual | drafts to RFCs. Please note that the listing of any individual | |||
skipping to change at page 24, line 5 ¶ | skipping to change at page 26, line 21 ¶ | |||
running code, which may serve as evidence of valuable experimentation | running code, which may serve as evidence of valuable experimentation | |||
and feedback that have made the implemented protocols more mature. | and feedback that have made the implemented protocols more mature. | |||
It is up to the individual working groups to use this information as | It is up to the individual working groups to use this information as | |||
they see fit". | they see fit". | |||
Version -09 of this specification introduced changes that are | Version -09 of this specification introduced changes that are | |||
incompatible with earlier implementations. Implementations that are | incompatible with earlier implementations. Implementations that are | |||
consistent with this specification will be added as they are | consistent with this specification will be added as they are | |||
identified. | identified. | |||
9. Security Considerations | 9.1. Editor Implementation | |||
* Location: https://procuratus.net/rdap/ | ||||
* Description: This implementation is a functionally-limited RDAP | ||||
server that supports only the path segments described in this | ||||
specification. It uses the "jumbojett/OpenID-Connect-PHP" library | ||||
found on GitHub, which appears to no longer be under active | ||||
development. The library was modified to add support for the | ||||
device authorization grant. Session variable management is still | ||||
a little buggy. Supported OPs include Google (Gmail) and Yahoo. | ||||
* Level of Maturity: This is a "proof of concept" research | ||||
implementation. | ||||
* Coverage: This implementation includes all of the features | ||||
described in this specification. | ||||
* Version compatibility: Version -11 of this specification. | ||||
* Contact Information: Scott Hollenbeck, shollenbeck@verisign.com | ||||
9.2. Verisign Labs | ||||
* Responsible Organization: Verisign Labs | ||||
* Location: https://rdap.verisignlabs.com/ | ||||
* Description: This implementation includes support for domain | ||||
registry RDAP queries using live data from the .cc and .tv country | ||||
code top-level domains and the .career generic top-level domain. | ||||
Three access levels are provided based on the authenticated | ||||
identity of the client: | ||||
1. Unauthenticated: Limited information is returned in response | ||||
to queries from unauthenticated clients. | ||||
2. Basic: Clients who authenticate using a publicly available | ||||
identity provider like Google Gmail or Microsoft Hotmail will | ||||
receive all of the information available to an unauthenticated | ||||
client plus additional registration metadata, but no | ||||
personally identifiable information associated with entities. | ||||
3. Advanced: Clients who authenticate using a more restrictive | ||||
identity provider will receive all of the information | ||||
available to a Basic client plus whatever information the | ||||
server operator deems appropriate for a fully authorized | ||||
client. Currently supported identity providers include those | ||||
developed by Verisign Labs | ||||
(https://testprovider.rdap.verisignlabs.com/) and CZ.NIC | ||||
(https://www.mojeid.cz/). | ||||
* Level of Maturity: This is a "proof of concept" research | ||||
implementation. | ||||
* Coverage: This implementation includes all of the features | ||||
described in this specification. | ||||
* Version compatibility: Version -07 of this specification. | ||||
* Contact Information: Scott Hollenbeck, shollenbeck@verisign.com | ||||
9.3. Viagenie | ||||
* Responsible Organization: Viagenie | ||||
* Location: https://auth.viagenie.ca | ||||
* Description: This implementation is an OpenID identity provider | ||||
enabling users and registries to connect to the federation. It | ||||
also includes a barebone RDAP client and RDAP server in order to | ||||
test the authentication framework. Various level of purposes are | ||||
available for testing. | ||||
* Level of Maturity: This is a "proof of concept" research | ||||
implementation. | ||||
* Coverage: This implementation includes most features described in | ||||
this specification as an identity provider. | ||||
* Version compatibility: Version -07 of this specification. | ||||
* Contact Information: Marc Blanchet, marc.blanchet@viagenie.ca | ||||
10. Security Considerations | ||||
Security considerations for RDAP can be found in RFC 7481 [RFC7481]. | Security considerations for RDAP can be found in RFC 7481 [RFC7481]. | |||
Security considerations for OpenID Connect Core [OIDCC] and OAuth 2.0 | Security considerations for OpenID Connect Core [OIDCC] and OAuth 2.0 | |||
[RFC6749] can be found in their reference specifications. OpenID | [RFC6749] can be found in their reference specifications. OpenID | |||
Connect defines optional mechanisms for robust signing and encryption | Connect defines optional mechanisms for robust signing and encryption | |||
that can be used to provide data integrity and data confidentiality | that can be used to provide data integrity and data confidentiality | |||
services as needed. | services as needed. | |||
9.1. Authentication and Access Control | 10.1. Authentication and Access Control | |||
Having completed the client identification, authorization, and | Having completed the client identification, authorization, and | |||
validation process, an RDAP server can make access control decisions | validation process, an RDAP server can make access control decisions | |||
based on a comparison of client-provided information and local | based on a comparison of client-provided information and local | |||
policy. For example, a client who provides an email address (and | policy. For example, a client who provides an email address (and | |||
nothing more) might be entitled to receive a subset of the | nothing more) might be entitled to receive a subset of the | |||
information that would be available to a client who provides an email | information that would be available to a client who provides an email | |||
address, a full name, and a stated purpose. Development of these | address, a full name, and a stated purpose. Development of these | |||
access control policies is beyond the scope of this document. | access control policies is beyond the scope of this document. | |||
10. Acknowledgments | 11. Acknowledgments | |||
The author would like to acknowledge the following individuals for | The author would like to acknowledge the following individuals for | |||
their contributions to the development of this document: Tom | their contributions to the development of this document: Marc | |||
Harrison, Russ Housley, Rhys Smith, Jaromir Talir, and Alessandro | Blanchet, Tom Harrison, Russ Housley, Jasdip Singh, Rhys Smith, | |||
Vesely. In addition, the Verisign Registry Services Lab development | Jaromir Talir, Rick Wilhelm, and Alessandro Vesely. In addition, the | |||
team of Joseph Harvey, Andrew Kaizer, Sai Mogali, Anurag Saxena, | Verisign Registry Services Lab development team of Joseph Harvey, | |||
Swapneel Sheth, Nitin Singh, and Zhao Zhao provided critical "proof | Andrew Kaizer, Sai Mogali, Anurag Saxena, Swapneel Sheth, Nitin | |||
of concept" implementation experience that helped demonstrate the | Singh, and Zhao Zhao provided critical "proof of concept" | |||
validity of the concepts described in this document. | implementation experience that helped demonstrate the validity of the | |||
concepts described in this document. | ||||
Mario Loffredo provided significant feedback based on implementation | Mario Loffredo provided significant feedback based on implementation | |||
experience that led to welcome improvements in several sections of | experience that led to welcome improvements in several sections of | |||
this document. His contributions are greatly appreciated. | this document. His contributions are greatly appreciated. | |||
11. References | 12. References | |||
11.1. Normative References | 12.1. Normative References | |||
[OIDC] OpenID Foundation, "OpenID Connect", | [OIDC] OpenID Foundation, "OpenID Connect", | |||
<http://openid.net/connect/>. | <http://openid.net/connect/>. | |||
[OIDCC] OpenID Foundation, "OpenID Connect Core incorporating | [OIDCC] OpenID Foundation, "OpenID Connect Core incorporating | |||
errata set 1", November 2014, | errata set 1", November 2014, | |||
<http://openid.net/specs/openid-connect-core-1_0.html>. | <http://openid.net/specs/openid-connect-core-1_0.html>. | |||
[OIDCD] OpenID Foundation, "OpenID Connect Discovery 1.0 | [OIDCD] OpenID Foundation, "OpenID Connect Discovery 1.0 | |||
incorporating errata set 1", November 2014, | incorporating errata set 1", November 2014, | |||
<http://openid.net/specs/openid-connect-discovery- | <http://openid.net/specs/openid-connect-discovery- | |||
1_0.html>. | 1_0.html>. | |||
[OIDCL] OpenID Foundation, "OpenID Connect RP-Initiated Logout 1.0 | ||||
- draft 01", August 2020, <https://openid.net/specs/ | ||||
openid-connect-rpinitiated-1_0.html>. | ||||
[OIDCR] OpenID Foundation, "OpenID Connect Dynamic Client | [OIDCR] OpenID Foundation, "OpenID Connect Dynamic Client | |||
Registration 1.0 incorporating errata set 1", November | Registration 1.0 incorporating errata set 1", November | |||
2014, <http://openid.net/specs/openid-connect- | 2014, <http://openid.net/specs/openid-connect- | |||
registration-1_0.html>. | registration-1_0.html>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
skipping to change at page 26, line 42 ¶ | skipping to change at page 30, line 37 ¶ | |||
[RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | [RFC9082] Hollenbeck, S. and A. Newton, "Registration Data Access | |||
Protocol (RDAP) Query Format", STD 95, RFC 9082, | Protocol (RDAP) Query Format", STD 95, RFC 9082, | |||
DOI 10.17487/RFC9082, June 2021, | DOI 10.17487/RFC9082, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9082>. | <https://www.rfc-editor.org/info/rfc9082>. | |||
[RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | [RFC9083] Hollenbeck, S. and A. Newton, "JSON Responses for the | |||
Registration Data Access Protocol (RDAP)", STD 95, | Registration Data Access Protocol (RDAP)", STD 95, | |||
RFC 9083, DOI 10.17487/RFC9083, June 2021, | RFC 9083, DOI 10.17487/RFC9083, June 2021, | |||
<https://www.rfc-editor.org/info/rfc9083>. | <https://www.rfc-editor.org/info/rfc9083>. | |||
11.2. Informative References | 12.2. Informative References | |||
[RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | [RFC4949] Shirey, R., "Internet Security Glossary, Version 2", | |||
FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | FYI 36, RFC 4949, DOI 10.17487/RFC4949, August 2007, | |||
<https://www.rfc-editor.org/info/rfc4949>. | <https://www.rfc-editor.org/info/rfc4949>. | |||
[RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | [RFC7942] Sheffer, Y. and A. Farrel, "Improving Awareness of Running | |||
Code: The Implementation Status Section", BCP 205, | Code: The Implementation Status Section", BCP 205, | |||
RFC 7942, DOI 10.17487/RFC7942, July 2016, | RFC 7942, DOI 10.17487/RFC7942, July 2016, | |||
<https://www.rfc-editor.org/info/rfc7942>. | <https://www.rfc-editor.org/info/rfc7942>. | |||
skipping to change at page 27, line 35 ¶ | skipping to change at page 31, line 30 ¶ | |||
06: Keepalive refresh. | 06: Keepalive refresh. | |||
07: Added "login_hint" description to Section 3.1.3.2. Added some | 07: Added "login_hint" description to Section 3.1.3.2. Added some | |||
text to Section 3.1.4.2 to note that "do not track" requires | text to Section 3.1.4.2 to note that "do not track" requires | |||
compliance with local regulations. | compliance with local regulations. | |||
08: Rework of token management processing in Sections 4 and 5. | 08: Rework of token management processing in Sections 4 and 5. | |||
09: Updated RDAP specification references. Added text to describe | 09: Updated RDAP specification references. Added text to describe | |||
both local and remote Authorization Server processing. Removed | both local and remote Authorization Server processing. Removed | |||
text that described passing of ID Tokens as query parameters. | text that described passing of ID Tokens as query parameters. | |||
10: Updated Section 3.1.3.1. Replaced token processing queries with | 10: Updated Section 3.1.3.1. Replaced token processing queries with | |||
"login", "session", and "logout" queries. | "login", "session", and "logout" queries. | |||
11: Replaced queries with "session/*" queries. Added description of | ||||
"rdap" OAuth scope. Added implementation status information. | ||||
Author's Address | Author's Address | |||
Scott Hollenbeck | Scott Hollenbeck | |||
Verisign Labs | Verisign Labs | |||
12061 Bluemont Way | 12061 Bluemont Way | |||
Reston, VA 20190 | Reston, VA 20190 | |||
United States of America | United States of America | |||
Email: shollenbeck@verisign.com | Email: shollenbeck@verisign.com | |||
URI: http://www.verisignlabs.com/ | URI: http://www.verisignlabs.com/ | |||
End of changes. 100 change blocks. | ||||
366 lines changed or deleted | 519 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |