draft-ietf-regext-login-security-02.txt | draft-ietf-regext-login-security-03.txt | |||
---|---|---|---|---|
Network Working Group J. Gould | Network Working Group J. Gould | |||
Internet-Draft M. Pozun | Internet-Draft M. Pozun | |||
Intended status: Standards Track VeriSign, Inc. | Intended status: Standards Track VeriSign, Inc. | |||
Expires: December 27, 2019 June 25, 2019 | Expires: February 6, 2020 August 5, 2019 | |||
Login Security Extension for the Extensible Provisioning Protocol (EPP) | Login Security Extension for the Extensible Provisioning Protocol (EPP) | |||
draft-ietf-regext-login-security-02 | draft-ietf-regext-login-security-03 | |||
Abstract | Abstract | |||
The Extensible Provisioning Protocol (EPP) includes a client | The Extensible Provisioning Protocol (EPP) includes a client | |||
authentication scheme that is based on a user identifier and | authentication scheme that is based on a user identifier and | |||
password. The structure of the password field is defined by an XML | password. The structure of the password field is defined by an XML | |||
Schema data type that specifies minimum and maximum password length | Schema data type that specifies minimum and maximum password length | |||
values, but there are no other provisions for password management | values, but there are no other provisions for password management | |||
other than changing the password. This document describes an EPP | other than changing the password. This document describes an EPP | |||
extension that allows longer passwords to be created and adds | extension that allows longer passwords to be created and adds | |||
additional security features to the EPP login command and response. | additional security features to the EPP login command and response. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This Internet-Draft is submitted in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
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 http://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 December 27, 2019. | This Internet-Draft will expire on February 6, 2020. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2019 IETF Trust and the persons identified as the | Copyright (c) 2019 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 | Provisions Relating to IETF Documents | |||
(http://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | Table of Contents | |||
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 | |||
skipping to change at page 2, line 31 ¶ | skipping to change at page 2, line 31 ¶ | |||
6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.1. XML Namespace . . . . . . . . . . . . . . . . . . . . . . 16 | 6.1. XML Namespace . . . . . . . . . . . . . . . . . . . . . . 16 | |||
6.2. EPP Extension Registry . . . . . . . . . . . . . . . . . 17 | 6.2. EPP Extension Registry . . . . . . . . . . . . . . . . . 17 | |||
7. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 | 7. Implementation Status . . . . . . . . . . . . . . . . . . . . 17 | |||
7.1. Verisign EPP SDK . . . . . . . . . . . . . . . . . . . . 18 | 7.1. Verisign EPP SDK . . . . . . . . . . . . . . . . . . . . 18 | |||
8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 18 | |||
9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 19 | |||
10. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
10.1. Normative References . . . . . . . . . . . . . . . . . . 19 | 10.1. Normative References . . . . . . . . . . . . . . . . . . 19 | |||
10.2. Informative References . . . . . . . . . . . . . . . . . 19 | 10.2. Informative References . . . . . . . . . . . . . . . . . 19 | |||
10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 19 | 10.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
Appendix A. Change History . . . . . . . . . . . . . . . . . . . 20 | Appendix A. Change History . . . . . . . . . . . . . . . . . . . 20 | |||
A.1. Change from 00 to 01 . . . . . . . . . . . . . . . . . . 20 | A.1. Change from 00 to 01 . . . . . . . . . . . . . . . . . . 20 | |||
A.2. Change from 01 to 02 . . . . . . . . . . . . . . . . . . 20 | A.2. Change from 01 to 02 . . . . . . . . . . . . . . . . . . 20 | |||
A.3. Change from 02 to 03 . . . . . . . . . . . . . . . . . . 20 | A.3. Change from 02 to 03 . . . . . . . . . . . . . . . . . . 20 | |||
A.4. Change from 03 to REGEXT 00 . . . . . . . . . . . . . . . 20 | A.4. Change from 03 to REGEXT 00 . . . . . . . . . . . . . . . 20 | |||
A.5. Change from REGEXT 00 to REGEXT 01 . . . . . . . . . . . 20 | A.5. Change from REGEXT 00 to REGEXT 01 . . . . . . . . . . . 20 | |||
A.6. Change from REGEXT 01 to REGEXT 02 . . . . . . . . . . . 21 | A.6. Change from REGEXT 01 to REGEXT 02 . . . . . . . . . . . 21 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 21 | A.7. Change from REGEXT 02 to REGEXT 03 . . . . . . . . . . . 21 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 22 | ||||
1. Introduction | 1. Introduction | |||
This document describes an Extensible Provisioning Protocol (EPP) | This document describes an Extensible Provisioning Protocol (EPP) | |||
extension for enhancing the security of the EPP login command in EPP | extension for enhancing the security of the EPP login command in EPP | |||
RFC 5730. The enhancements include supporting longer passwords (or | RFC 5730. The enhancements include supporting longer passwords (or | |||
passphrases) than the 16-character maximum and providing a list of | passphrases) than the 16-character maximum and providing a list of | |||
security events in the login response. The password (current and | security events in the login response. The password (current and | |||
new) in EPP RFC 5730 can be overridden by the password included in | new) in EPP RFC 5730 can be overridden by the password included in | |||
the extension to extend past the 16-character maximum. The security | the extension to extend past the 16-character maximum. The security | |||
skipping to change at page 3, line 27 ¶ | skipping to change at page 3, line 28 ¶ | |||
XML is case sensitive. Unless stated otherwise, XML specifications | XML is case sensitive. Unless stated otherwise, XML specifications | |||
and examples provided in this document MUST be interpreted in the | and examples provided in this document MUST be interpreted in the | |||
character case presented in order to develop a conforming | character case presented in order to develop a conforming | |||
implementation. | implementation. | |||
In examples, "C:" represents lines sent by a protocol client and "S:" | In examples, "C:" represents lines sent by a protocol client and "S:" | |||
represents lines returned by a protocol server. Indentation and | represents lines returned by a protocol server. Indentation and | |||
white space in examples are provided only to illustrate element | white space in examples are provided only to illustrate element | |||
relationships and are not a REQUIRED feature of this protocol. | relationships and are not a REQUIRED feature of this protocol. | |||
"loginSec-0.4" is used as an abbreviation for | "loginSec-1.0" is used as an abbreviation for | |||
"urn:ietf:params:xml:ns:epp:loginSec-0.4". The XML namespace prefix | "urn:ietf:params:xml:ns:epp:loginSec-1.0". The XML namespace prefix | |||
"loginSec" is used, but implementations MUST NOT depend on it and | "loginSec" is used, but implementations MUST NOT depend on it and | |||
instead employ a proper namespace-aware XML parser and serializer to | instead employ a proper namespace-aware XML parser and serializer to | |||
interpret and output the XML documents. | interpret and output the XML documents. | |||
2. Migrating to Newer Versions of This Extension | 2. Migrating to Newer Versions of This Extension | |||
(Note to RFC Editor: remove this section before publication as an | (Note to RFC Editor: remove this section before publication as an | |||
RFC.) | RFC.) | |||
Servers which implement this extension SHOULD provide a way for | Servers which implement this extension SHOULD provide a way for | |||
skipping to change at page 4, line 41 ¶ | skipping to change at page 4, line 43 ¶ | |||
"certificate": Identifies a client certificate expiry event, | "certificate": Identifies a client certificate expiry event, | |||
where the client certificate will expire at the "exDate" date | where the client certificate will expire at the "exDate" date | |||
and time. | and time. | |||
"cipher": Identifies the use of an insecure or deprecated TLS | "cipher": Identifies the use of an insecure or deprecated TLS | |||
cipher suite. | cipher suite. | |||
"tlsProtocol": Identifies the use of an insecure or deprecated | "tlsProtocol": Identifies the use of an insecure or deprecated | |||
TLS protocol. | TLS protocol. | |||
"newPW": The new password does not meet the server password | "newPW": The new password does not meet the server password | |||
complexity requirements. | complexity requirements. | |||
"stat": Provides a login security statistical warning that MUST | "stat": Provides a login security statistical warning that MUST | |||
set the "name" of the statistic. | set the "name" attribute to the name of the statistic. | |||
"custom": Custom event type that MUST set the "name" attribute | "custom": Custom event type that MUST set the "name" attribute | |||
with the custom event type name. | with the custom event type name. | |||
"name": Used to define a sub-type or the type name when the "type" | "name": Used to define a sub-type when the "type" attribute is not | |||
attribute is "custom". | "custom" or the full type name when the "type" attribute is | |||
"custom". | ||||
"level": Defines the level of the event as either "warning" for a | "level": Defines the level of the event as either "warning" for a | |||
warning event that needs action, or "error" for an error event | warning event that needs action, or "error" for an error event | |||
that requires immediate action. | that requires immediate action. | |||
"exDate": Contains the date and time that a "warning" level has or | "exDate": Contains the date and time that a "warning" level has or | |||
will become an "error" level. At expiry there MAY be an error to | will become an "error" level. At expiry there MAY be an error to | |||
connect or MAY be an error to login. An example is an expired | connect or MAY be an error to login. An example is an expired | |||
certificate that will result in a error to connect or an expired | certificate that will result in an error to connect or an expired | |||
password that may result in a failed login. | password that may result in a failed login. | |||
"value": Identifies the value that resulted in the login security | "value": Identifies the value that resulted in the login security | |||
event. An example is the negotiated insecure cipher suite or the | event. An example is the negotiated insecure cipher suite or the | |||
negotiated insecure TLS protocol. | negotiated insecure TLS protocol. | |||
"duration": Defines the duration that a statistical event is | "duration": Defines the duration that a statistical event is | |||
associated with. | associated with, ending when the login command was received. The | |||
format of the duration is defined by the duration primitive | ||||
datatype in [W3C.REC-xmlschema-2-20041028]. | ||||
"lang": Identifies the language of the free form description if the | "lang": Identifies the language of the free form description if the | |||
negotiated language is something other than the default value of | negotiated language is something other than the default value of | |||
"en" (English). | "en" (English). | |||
Example login security event for a password expiring in a week: | Example login security event for a password expiring in a week: | |||
<loginSec:event | <loginSec:event | |||
type="password" | type="password" | |||
level="warning" | level="warning" | |||
exDate="2018-04-01T22:00:00.0Z" | exDate="2018-04-01T22:00:00.0Z" | |||
skipping to change at page 5, line 50 ¶ | skipping to change at page 6, line 10 ¶ | |||
only if the <pw> contains the predefined value of "[LOGIN-SECURITY]", | only if the <pw> contains the predefined value of "[LOGIN-SECURITY]", | |||
which is a constant value for the server to use the <loginSec:pw> | which is a constant value for the server to use the <loginSec:pw> | |||
element for the password. Similarly, the <loginSec:newPW> element | element for the password. Similarly, the <loginSec:newPW> element | |||
MUST override the [RFC5730] <newPW> element only if the <newPW> | MUST override the [RFC5730] <newPW> element only if the <newPW> | |||
contains the predefined value of "[LOGIN-SECURITY]", which is a | contains the predefined value of "[LOGIN-SECURITY]", which is a | |||
constant value for the server to use the <loginSec:newPW> element for | constant value for the server to use the <loginSec:newPW> element for | |||
the new password. The "[LOGIN-SECURITY]" pre-defined string MUST be | the new password. The "[LOGIN-SECURITY]" pre-defined string MUST be | |||
supported by the server for the client to explicitly indicate to the | supported by the server for the client to explicitly indicate to the | |||
server whether to use <loginSec:pw> element in place of the [RFC5730] | server whether to use <loginSec:pw> element in place of the [RFC5730] | |||
<pw> element or to use the <loginSec:newPW> in place of the [RFC5730] | <pw> element or to use the <loginSec:newPW> in place of the [RFC5730] | |||
<newPW> element. | <newPW> element. The server MUST NOT allow the client to set the | |||
password to the value "[LOGIN-SECURITY]". | ||||
3.3. Dates and Times | 3.3. Dates and Times | |||
Date and time attribute values MUST be represented in Universal | Date and time attribute values MUST be represented in Universal | |||
Coordinated Time (UTC) using the Gregorian calendar. The extended | Coordinated Time (UTC) using the Gregorian calendar. The extended | |||
date-time form using upper case "T" and "Z" characters defined in | date-time form using upper case "T" and "Z" characters defined in | |||
[W3C.REC-xmlschema-2-20041028] MUST be used to represent date-time | [W3C.REC-xmlschema-2-20041028] MUST be used to represent date-time | |||
values, as XML Schema does not support truncated date-time forms or | values, as XML Schema does not support truncated date-time forms or | |||
lower case "T" and "Z" characters. | lower case "T" and "Z" characters. | |||
skipping to change at page 6, line 32 ¶ | skipping to change at page 6, line 40 ¶ | |||
command and response to be used in conjunction with [RFC5730]. | command and response to be used in conjunction with [RFC5730]. | |||
The EPP <login> command is used to establish a session with an EPP | The EPP <login> command is used to establish a session with an EPP | |||
server. This extension overrides the password that is passed with | server. This extension overrides the password that is passed with | |||
the [RFC5730] <pw> or the <newPW> element as defined in Section 3.2. | the [RFC5730] <pw> or the <newPW> element as defined in Section 3.2. | |||
A <loginSec:loginSec> element is sent along with the [RFC5730] | A <loginSec:loginSec> element is sent along with the [RFC5730] | |||
<login> command and MUST contain at least one of the following child | <login> command and MUST contain at least one of the following child | |||
elements: | elements: | |||
<loginSec:userAgent>: OPTIONAL client user agent that identifies the | <loginSec:userAgent>: OPTIONAL client user agent that identifies the | |||
client software, language, and operating system used by the | client application software, technology, and operating system | |||
server to identify functional or security constraints, current | used by the server to identify functional or security | |||
security issues, and potential future functional or security | constraints, current security issues, and potential future | |||
issues for the client. The <loginSec:userAgent> element contains | functional or security issues for the client. The | |||
the following child elements: | <loginSec:userAgent> element MUST contain at least one of the | |||
following child elements: | ||||
<loginSec:app>: OPTIONAL name of the client application software | <loginSec:app>: OPTIONAL name of the client application software | |||
with version if available, such as the name of the client SDK | with version if available, such as the name of the client SDK | |||
"EPP SDK 1.0.0". | "EPP SDK 1.0.0". | |||
<loginSec:tech>: OPTIONAL technology used for the client | <loginSec:tech>: OPTIONAL technology used for the client | |||
software with version if available, such as "Java 11.0.2". | software with version if available, such as "Java 11.0.2". | |||
<loginSec:os>: OPTIONAL client operating system used with | <loginSec:os>: OPTIONAL client operating system used with | |||
version if available, such as "x86_64 Mac OS X 10.11.6". | version if available, such as "x86_64 Mac OS X 10.11.6". | |||
<loginSec:pw>: OPTIONAL plain text password that is case sensitive, | <loginSec:pw>: OPTIONAL plain text password that is case sensitive, | |||
has a minimum length of 6 characters, and has a maximum length | has a minimum length of 6 characters, and has a maximum length | |||
that is up to server policy. All leading and trailing whitespace | that is up to server policy. All leading and trailing whitespace | |||
is removed, and all internal contiguous whitespace that includes | is removed, and all internal contiguous whitespace that includes | |||
#x9 (tab), #xA (linefeed), #xD (carriage return), and #x20 | #x9 (tab), #xA (linefeed), #xD (carriage return), and #x20 | |||
(space) is replaced with a single #x20 (space). This element | (space) is replaced with a single #x20 (space). This element | |||
skipping to change at page 8, line 24 ¶ | skipping to change at page 8, line 24 ¶ | |||
C: <pw>[LOGIN-SECURITY]</pw> | C: <pw>[LOGIN-SECURITY]</pw> | |||
C: <options> | C: <options> | |||
C: <version>1.0</version> | C: <version>1.0</version> | |||
C: <lang>en</lang> | C: <lang>en</lang> | |||
C: </options> | C: </options> | |||
C: <svcs> | C: <svcs> | |||
C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | |||
C: <svcExtension> | C: <svcExtension> | |||
C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-0.4</extURI> | C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-1.0</extURI> | |||
C: </svcExtension> | C: </svcExtension> | |||
C: </svcs> | C: </svcs> | |||
C: </login> | C: </login> | |||
C: <extension> | C: <extension> | |||
C: <loginSec:loginSec | C: <loginSec:loginSec | |||
C: xmlns:loginSec= | C: xmlns:loginSec= | |||
C: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | C: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
C: <loginSec:userAgent> | C: <loginSec:userAgent> | |||
C: <loginSec:app>EPP SDK 1.0.0</loginSec:app> | C: <loginSec:app>EPP SDK 1.0.0</loginSec:app> | |||
C: <loginSec:tech>Java 11.0.2</loginSec:tech> | C: <loginSec:tech>Java 11.0.2</loginSec:tech> | |||
C: <loginSec:os>x86_64 Mac OS X 10.11.6</loginSec:os> | C: <loginSec:os>x86_64 Mac OS X 10.11.6</loginSec:os> | |||
C: </loginSec:userAgent> | C: </loginSec:userAgent> | |||
C: <loginSec:pw>this is a long password</loginSec:pw> | C: <loginSec:pw>this is a long password</loginSec:pw> | |||
C: </loginSec:loginSec> | C: </loginSec:loginSec> | |||
C: </extension> | C: </extension> | |||
C: <clTRID>ABC-12345</clTRID> | C: <clTRID>ABC-12345</clTRID> | |||
C: </command> | C: </command> | |||
skipping to change at page 9, line 25 ¶ | skipping to change at page 9, line 25 ¶ | |||
C: <newPW>[LOGIN-SECURITY]</newPW> | C: <newPW>[LOGIN-SECURITY]</newPW> | |||
C: <options> | C: <options> | |||
C: <version>1.0</version> | C: <version>1.0</version> | |||
C: <lang>en</lang> | C: <lang>en</lang> | |||
C: </options> | C: </options> | |||
C: <svcs> | C: <svcs> | |||
C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | |||
C: <svcExtension> | C: <svcExtension> | |||
C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-0.4</extURI> | C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-1.0</extURI> | |||
C: </svcExtension> | C: </svcExtension> | |||
C: </svcs> | C: </svcs> | |||
C: </login> | C: </login> | |||
C: <extension> | C: <extension> | |||
C: <loginSec:loginSec | C: <loginSec:loginSec | |||
C: xmlns:loginSec= | C: xmlns:loginSec= | |||
C: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | C: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
C: <loginSec:pw>this is a long password | C: <loginSec:pw>this is a long password | |||
C: </loginSec:pw> | C: </loginSec:pw> | |||
C: <loginSec:newPW>new password that is still long | C: <loginSec:newPW>new password that is still long | |||
C: </loginSec:newPW> | C: </loginSec:newPW> | |||
C: </loginSec:loginSec> | C: </loginSec:loginSec> | |||
C: </extension> | C: </extension> | |||
C: <clTRID>ABC-12345</clTRID> | C: <clTRID>ABC-12345</clTRID> | |||
C: </command> | C: </command> | |||
C:</epp> | C:</epp> | |||
Example login command that uses the [RFC5730] <pw> element to | Example login command that uses the [RFC5730] <pw> element to | |||
skipping to change at page 10, line 24 ¶ | skipping to change at page 10, line 24 ¶ | |||
C: <newPW>[LOGIN-SECURITY]</newPW> | C: <newPW>[LOGIN-SECURITY]</newPW> | |||
C: <options> | C: <options> | |||
C: <version>1.0</version> | C: <version>1.0</version> | |||
C: <lang>en</lang> | C: <lang>en</lang> | |||
C: </options> | C: </options> | |||
C: <svcs> | C: <svcs> | |||
C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> | |||
C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> | |||
C: <svcExtension> | C: <svcExtension> | |||
C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-0.4</extURI> | C: <extURI>urn:ietf:params:xml:ns:epp:loginSec-1.0</extURI> | |||
C: </svcExtension> | C: </svcExtension> | |||
C: </svcs> | C: </svcs> | |||
C: </login> | C: </login> | |||
C: <extension> | C: <extension> | |||
C: <loginSec:loginSec | C: <loginSec:loginSec | |||
C: xmlns:loginSec= | C: xmlns:loginSec= | |||
C: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | C: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
C: <loginSec:newPW>new password that is still long | C: <loginSec:newPW>new password that is still long | |||
C: </loginSec:newPW> | C: </loginSec:newPW> | |||
C: </loginSec:loginSec> | C: </loginSec:loginSec> | |||
C: </extension> | C: </extension> | |||
C: <clTRID>ABC-12345</clTRID> | C: <clTRID>ABC-12345</clTRID> | |||
C: </command> | C: </command> | |||
C:</epp> | C:</epp> | |||
Upon a completed login command (success or failed), the extension | Upon a completed login command (success or failed), the extension | |||
MUST be included in the response based on the following conditions: | MUST be included in the response based on both of the following | |||
conditions: | ||||
Client supports extension: client supports the extension based on | Client supports extension: The client supports the extension based | |||
the <svcExtension> element of the <login> command. | on the <svcExtension> element of the <login> command. | |||
At least one login security event: The server has identified at | At least one login security event: The server has identified at | |||
least one login security event to communicate to the client. | least one login security event to communicate to the client. | |||
The extension to the EPP response uses the <loginSec:loginSecData> | The extension to the EPP response uses the <loginSec:loginSecData> | |||
element that contains the following child elements: | element that contains the following child elements: | |||
<loginSec:event>: One or more <loginSec:event> elements defined in | <loginSec:event>: One or more <loginSec:event> elements defined in | |||
Section 3.1. | Section 3.1. | |||
Example EPP response to a successful login command where the password | Example EPP response to a successful login command where the password | |||
skipping to change at page 11, line 20 ¶ | skipping to change at page 11, line 20 ¶ | |||
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | |||
S: <response> | S: <response> | |||
S: <result code="1000"> | S: <result code="1000"> | |||
S: <msg>Command completed successfully</msg> | S: <msg>Command completed successfully</msg> | |||
S: </result> | S: </result> | |||
S: <extension> | S: <extension> | |||
S: <loginSec:loginSecData | S: <loginSec:loginSecData | |||
S: xmlns:loginSec= | S: xmlns:loginSec= | |||
S: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | S: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
S: <loginSec:event | S: <loginSec:event | |||
S: type="password" | S: type="password" | |||
S: level="warning" | S: level="warning" | |||
S: exDate="2018-04-01T22:00:00.0Z" | S: exDate="2018-04-01T22:00:00.0Z" | |||
S: lang="en"> | S: lang="en"> | |||
S: Password expiring in a week | S: Password expiring in a week | |||
S: </loginSec:event> | S: </loginSec:event> | |||
S: </loginSec:loginSecData> | S: </loginSec:loginSecData> | |||
S: </extension> | S: </extension> | |||
S: <trID> | S: <trID> | |||
skipping to change at page 12, line 17 ¶ | skipping to change at page 12, line 17 ¶ | |||
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | |||
S: <response> | S: <response> | |||
S: <result code="2200"> | S: <result code="2200"> | |||
S: <msg>Authentication error</msg> | S: <msg>Authentication error</msg> | |||
S: </result> | S: </result> | |||
S: <extension> | S: <extension> | |||
S: <loginSec:loginSecData | S: <loginSec:loginSecData | |||
S: xmlns:loginSec= | S: xmlns:loginSec= | |||
S: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | S: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
S: <loginSec:event | S: <loginSec:event | |||
S: type="password" | S: type="password" | |||
S: level="error" | S: level="error" | |||
S: exDate="2018-03-26T22:00:00.0Z"> | S: exDate="2018-03-26T22:00:00.0Z"> | |||
S: Password has expired | S: Password has expired | |||
S: </loginSec:event> | S: </loginSec:event> | |||
S: <loginSec:event | S: <loginSec:event | |||
S: type="newPW" | S: type="newPW" | |||
S: level="error"> | S: level="error"> | |||
S: New password does not meet complexity requirements | S: New password does not meet complexity requirements | |||
skipping to change at page 12, line 50 ¶ | skipping to change at page 12, line 50 ¶ | |||
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> | |||
S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> | |||
S: <response> | S: <response> | |||
S: <result code="1000"> | S: <result code="1000"> | |||
S: <msg>Command completed successfully</msg> | S: <msg>Command completed successfully</msg> | |||
S: </result> | S: </result> | |||
S: <extension> | S: <extension> | |||
S: <loginSec:loginSecData | S: <loginSec:loginSecData | |||
S: xmlns:loginSec= | S: xmlns:loginSec= | |||
S: "urn:ietf:params:xml:ns:epp:loginSec-0.4"> | S: "urn:ietf:params:xml:ns:epp:loginSec-1.0"> | |||
S: <loginSec:event | S: <loginSec:event | |||
S: type="password" | S: type="password" | |||
S: level="warning" | S: level="warning" | |||
S: exDate="2018-04-01T22:00:00.0Z" | S: exDate="2018-04-01T22:00:00.0Z" | |||
S: lang="en"> | S: lang="en"> | |||
S: Password expiration soon | S: Password expiration soon | |||
S: </loginSec:event> | S: </loginSec:event> | |||
S: <loginSec:event | S: <loginSec:event | |||
S: type="certificate" | S: type="certificate" | |||
S: level="warning" | S: level="warning" | |||
skipping to change at page 14, line 23 ¶ | skipping to change at page 14, line 23 ¶ | |||
are used to note the beginning and ending of the schema for URI | are used to note the beginning and ending of the schema for URI | |||
registration purposes. | registration purposes. | |||
5.1. Login Security Extension Schema | 5.1. Login Security Extension Schema | |||
BEGIN | BEGIN | |||
<?xml version="1.0" encoding="UTF-8"?> | <?xml version="1.0" encoding="UTF-8"?> | |||
<schema xmlns="http://www.w3.org/2001/XMLSchema" | <schema xmlns="http://www.w3.org/2001/XMLSchema" | |||
xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" | xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" | |||
xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" | xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" | |||
xmlns:loginSec="urn:ietf:params:xml:ns:epp:loginSec-0.4" | xmlns:loginSec="urn:ietf:params:xml:ns:epp:loginSec-1.0" | |||
targetNamespace="urn:ietf:params:xml:ns:epp:loginSec-0.4" | targetNamespace="urn:ietf:params:xml:ns:epp:loginSec-1.0" | |||
elementFormDefault="qualified"> | elementFormDefault="qualified"> | |||
<!-- | <!-- | |||
Import common element types. | Import common element types. | |||
--> | --> | |||
<import namespace="urn:ietf:params:xml:ns:eppcom-1.0" /> | <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" /> | |||
<import namespace="urn:ietf:params:xml:ns:epp-1.0" /> | <import namespace="urn:ietf:params:xml:ns:epp-1.0" /> | |||
<annotation> | <annotation> | |||
<documentation>Extensible Provisioning Protocol v1.0 | <documentation>Extensible Provisioning Protocol v1.0 | |||
skipping to change at page 16, line 49 ¶ | skipping to change at page 16, line 49 ¶ | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. XML Namespace | 6.1. XML Namespace | |||
This document uses URNs to describe XML namespaces and XML schemas | This document uses URNs to describe XML namespaces and XML schemas | |||
conforming to a registry mechanism described in [RFC3688]. The | conforming to a registry mechanism described in [RFC3688]. The | |||
following URI assignment is requested of IANA: | following URI assignment is requested of IANA: | |||
Registration request for the loginSec namespace: | Registration request for the loginSec namespace: | |||
URI: urn:ietf:params:xml:ns:epp:loginSec-0.4 | URI: urn:ietf:params:xml:ns:epp:loginSec-1.0 | |||
Registrant Contact: IESG | Registrant Contact: IESG | |||
XML: None. Namespace URIs do not represent an XML specification. | XML: None. Namespace URIs do not represent an XML specification. | |||
Registration request for the loginSec XML schema: | Registration request for the loginSec XML schema: | |||
URI: urn:ietf:params:xml:schema:epp:loginSec-0.4 | URI: urn:ietf:params:xml:schema:epp:loginSec-1.0 | |||
Registrant Contact: IESG | Registrant Contact: IESG | |||
XML: See the "Formal Syntax" section of this document. | XML: See the "Formal Syntax" section of this document. | |||
6.2. EPP Extension Registry | 6.2. EPP Extension Registry | |||
The EPP extension described in this document should be registered by | The EPP extension described in this document should be registered by | |||
the IANA in the EPP Extension Registry described in [RFC7451]. The | the IANA in the EPP Extension Registry described in [RFC7451]. The | |||
details of the registration are as follows: | details of the registration are as follows: | |||
Name of Extension: "Login Security Extension for the Extensible | Name of Extension: "Login Security Extension for the Extensible | |||
skipping to change at page 19, line 13 ¶ | skipping to change at page 19, line 13 ¶ | |||
inform clients of connection and login warnings and errors. | inform clients of connection and login warnings and errors. | |||
9. Acknowledgements | 9. Acknowledgements | |||
The authors wish to thank the following persons for their feedback | The authors wish to thank the following persons for their feedback | |||
and suggestions: | and suggestions: | |||
o Martin Casanova | o Martin Casanova | |||
o Scott Hollenbeck | o Scott Hollenbeck | |||
o Patrick Mevzek | o Patrick Mevzek | |||
o Joseph Yee | ||||
10. References | 10. References | |||
10.1. Normative References | 10.1. Normative References | |||
[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, <https://www.rfc- | DOI 10.17487/RFC2119, March 1997, | |||
editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, | |||
DOI 10.17487/RFC3688, January 2004, <https://www.rfc- | DOI 10.17487/RFC3688, January 2004, | |||
editor.org/info/rfc3688>. | <https://www.rfc-editor.org/info/rfc3688>. | |||
[RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", | |||
STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, | STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, | |||
<https://www.rfc-editor.org/info/rfc5730>. | <https://www.rfc-editor.org/info/rfc5730>. | |||
[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 20, line 25 ¶ | skipping to change at page 20, line 29 ¶ | |||
A.2. Change from 01 to 02 | A.2. Change from 01 to 02 | |||
1. Changed the XML namespace from urn:ietf:params:xml:ns:loginSec- | 1. Changed the XML namespace from urn:ietf:params:xml:ns:loginSec- | |||
0.3 to urn:ietf:params:xml:ns:epp:loginSec-0.3, and changed the | 0.3 to urn:ietf:params:xml:ns:epp:loginSec-0.3, and changed the | |||
XML schema registration from urn:ietf:params:xml:ns:loginSec-0.3 | XML schema registration from urn:ietf:params:xml:ns:loginSec-0.3 | |||
to urn:ietf:params:xml:schema:epp:loginSec-0.3 based on a request | to urn:ietf:params:xml:schema:epp:loginSec-0.3 based on a request | |||
from IANA with draft-ietf-regext-allocation-token. | from IANA with draft-ietf-regext-allocation-token. | |||
A.3. Change from 02 to 03 | A.3. Change from 02 to 03 | |||
Updates based on the review by Patrick Mevzek, that include: | 1. Updates based on the review by Patrick Mevzek, that include: | |||
1. Fix the inconsistent case for newPW, that required a global | 1. Fix the inconsistent case for newPW, that required a global | |||
change in the draft text and an update to the XML schema to | change in the draft text and an update to the XML schema to | |||
"urn:ietf:params:xml:ns:loginSec-0.3". | "urn:ietf:params:xml:ns:loginSec-0.3". | |||
2. Changed "contains the following child elements" to "MUST contain | 2. Changed "contains the following child elements" to "MUST | |||
at least one of the following child elements", section "EPP | contain at least one of the following child elements", | |||
<login> Command" to ensure that an empty <loginSec:loginSec> | section "EPP <login> Command" to ensure that an empty | |||
element is not passed. | <loginSec:loginSec> element is not passed. | |||
3. Add "The client SHOULD NOT decrease the security of a new | 3. Add "The client SHOULD NOT decrease the security of a new | |||
password by decreasing the length of the current password." along | password by decreasing the length of the current password." | |||
with an example to the "Security Considerations" section. | along with an example to the "Security Considerations" | |||
section. | ||||
A.4. Change from 03 to REGEXT 00 | A.4. Change from 03 to REGEXT 00 | |||
Changed to regext working group draft by changing draft-gould-regext- | 1. Changed to regext working group draft by changing draft-gould- | |||
login-security to draft-ietf-regext-login-security. | regext-login-security to draft-ietf-regext-login-security. | |||
A.5. Change from REGEXT 00 to REGEXT 01 | A.5. Change from REGEXT 00 to REGEXT 01 | |||
Changed the <loginSec:userAgent> element to be structured with the | 1. Changed the <loginSec:userAgent> element to be structured with | |||
<loginSec:app>, <loginSec:tech>, and <loginSec:os> sub-elements. | the <loginSec:app>, <loginSec:tech>, and <loginSec:os> sub- | |||
This was based on the feedback from Martin Casanova. This resulted | elements. This was based on the feedback from Martin Casanova. | |||
in the need to change the XML namespace from | ||||
urn:ietf:params:xml:ns:epp:loginSec-0.3 to | This resulted in the need to change the XML namespace from | |||
urn:ietf:params:xml:ns:epp:loginSec-0.4. | urn:ietf:params:xml:ns:epp:loginSec-0.3 to | |||
urn:ietf:params:xml:ns:epp:loginSec-0.4. | ||||
A.6. Change from REGEXT 01 to REGEXT 02 | A.6. Change from REGEXT 01 to REGEXT 02 | |||
Updated the Implementation Status section from "TBD" to include the | 1. Updated the Implementation Status section from "TBD" to include | |||
Verisign EPP SDK implementation. | the Verisign EPP SDK implementation. | |||
A.7. Change from REGEXT 02 to REGEXT 03 | ||||
1. Revised the description of the "duration" attribute to clarify | ||||
that it ends when the login command was received and to clarify | ||||
the format, based on the feedback from Martin Casanova. | ||||
2. Revised the sentence 'Upon a completed login command (success or | ||||
failed), the extension MUST be included in the response based on | ||||
the following conditions:' to 'Upon a completed login command | ||||
(success or failed), the extension MUST be included in the | ||||
response based on both of the following conditions:' based on the | ||||
feedback from Patrick Mevzek. | ||||
3. Updates based on the review by Joseph Yee, that include: | ||||
1. Revised the description of the <loginSec:event> "name" | ||||
attribute read 'Used to define a sub-type when the "type" | ||||
attribute is not "custom" or the full type name when the | ||||
"type" attribute is "custom"'. The definition of the "stat" | ||||
type was updated to 'Provides a login security statistical | ||||
warning that MUST set the "name" attribute to the name of the | ||||
statistic.' | ||||
2. Added the following sentence 'The server MUST NOT allow the | ||||
client to set the password to the value "[LOGIN-SECURITY]".' | ||||
to address the corner case where the constant is used as the | ||||
password. | ||||
3. Revised the description of the <loginSec:userAgent> element | ||||
to read 'The <loginSec:userAgent> element MUST contain at | ||||
least one of the following child elements:'. | ||||
4. Revised the description of the <loginSec:userAgent> to match the | ||||
child elements that can be passed, by changing "client software" | ||||
to "client application software" and change "language" to | ||||
"technology". | ||||
5. Changed the XML namespace from | ||||
urn:ietf:params:xml:ns:epp:loginSec-0.4 to | ||||
urn:ietf:params:xml:ns:epp:loginSec-1.0. | ||||
Authors' Addresses | Authors' Addresses | |||
James Gould | James Gould | |||
VeriSign, Inc. | VeriSign, Inc. | |||
12061 Bluemont Way | 12061 Bluemont Way | |||
Reston, VA 20190 | Reston, VA 20190 | |||
US | US | |||
Email: jgould@verisign.com | Email: jgould@verisign.com | |||
End of changes. 37 change blocks. | ||||
61 lines changed or deleted | 108 lines changed or added | |||
This html diff was produced by rfcdiff 1.47. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |