password changeing protocol à ms
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12260 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
395
doc/standardisation/rfc3244.txt
Normal file
395
doc/standardisation/rfc3244.txt
Normal file
@@ -0,0 +1,395 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Network Working Group M. Swift
|
||||
Request for Comments: 3244 University of Washington
|
||||
Category: Informational J. Trostle
|
||||
Cisco Systems
|
||||
J. Brezak
|
||||
Microsoft
|
||||
February 2002
|
||||
|
||||
|
||||
Microsoft Windows 2000 Kerberos Change Password
|
||||
and Set Password Protocols
|
||||
|
||||
Status of this Memo
|
||||
|
||||
This memo provides information for the Internet community. It does
|
||||
not specify an Internet standard of any kind. Distribution of this
|
||||
memo is unlimited.
|
||||
|
||||
Copyright Notice
|
||||
|
||||
Copyright (C) The Internet Society (2002). All Rights Reserved.
|
||||
|
||||
Abstract
|
||||
|
||||
This memo specifies Microsoft's Windows 2000 Kerberos change password
|
||||
and set password protocols. The Windows 2000 Kerberos change
|
||||
password protocol interoperates with the original Kerberos change
|
||||
password protocol. Change password is a request reply protocol that
|
||||
includes a KRB_PRIV message that contains the new password for the
|
||||
user.
|
||||
|
||||
1. Introduction
|
||||
|
||||
Microsoft's Windows 2000 Kerberos change password protocol
|
||||
interoperates with the original Kerberos change password protocol.
|
||||
Change password is a request reply protocol that includes a KRB_PRIV
|
||||
message that contains the new password for the user. The original
|
||||
change password protocol does not allow an administrator to set a
|
||||
password for a new user. This functionality is useful in some
|
||||
environments, and this proposal extends the change password protocol
|
||||
to allow password setting. The changes are: adding new fields to the
|
||||
request message to indicate the principal which is having its
|
||||
password set, not requiring the initial flag in the service ticket,
|
||||
using a new protocol version number, and adding three new result
|
||||
codes.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 1]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
2. The Protocol
|
||||
|
||||
The service accepts requests on UDP port 464 and TCP port 464 as
|
||||
well. The protocol consists of a single request message followed by
|
||||
a single reply message. For UDP transport, each message must be
|
||||
fully contained in a single UDP packet.
|
||||
|
||||
For TCP transport, there is a 4 octet header in network byte order
|
||||
that precedes the message and specifies the length of the message.
|
||||
|
||||
Request Message
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| message length | protocol version number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| AP_REQ length | AP_REQ data /
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
/ KRB-PRIV message /
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
All 16 bit fields are in big-endian order.
|
||||
|
||||
message length field: contains the number of bytes in the message
|
||||
including this field.
|
||||
|
||||
protocol version number: contains the hex constant 0xff80 (big-endian
|
||||
integer).
|
||||
|
||||
AP-REQ length: length of AP-REQ data, in bytes. If the length is
|
||||
zero, then the last field contains a KRB-ERROR message instead of a
|
||||
KRB-PRIV message.
|
||||
|
||||
AP-REQ data: (see [1]) The AP-REQ message must be for the service
|
||||
principal kadmin/changepw@REALM, where REALM is the REALM of the user
|
||||
who wishes to change/set his password. The authenticator in the AP-
|
||||
REQ must include a subsession key. (NOTE: The subsession key must be
|
||||
pseudo-randomly generated and must never be reused for multiple
|
||||
authenticators.) To enable setting of passwords, it is not required
|
||||
that the initial flag be set in the Kerberos service ticket.
|
||||
|
||||
KRB-PRIV message (see [1]) This user-data field in the KRB-PRIV
|
||||
message is encrypted using the subkey from the authenticator in the
|
||||
AP-REQ data. The usec and seq-number fields of the KRB_PRIV message
|
||||
are present and have the same value as the seq-number field in the
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 2]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
authenticator from the AP_REQ message (the seq-number in the
|
||||
authenticator will be present). The server ignores the optional
|
||||
r-address field in the KRB_PRIV message, if it is present.
|
||||
|
||||
The user-data component of the message consists of the following
|
||||
ASN.1 structure encoded as an OCTET STRING:
|
||||
|
||||
ChangePasswdData ::= SEQUENCE {
|
||||
newpasswd[0] OCTET STRING,
|
||||
targname[1] PrincipalName OPTIONAL,
|
||||
targrealm[2] Realm OPTIONAL
|
||||
}
|
||||
|
||||
The server must verify the AP-REQ message, check whether the client
|
||||
principal in the ticket is authorized to set/change the password
|
||||
(either for that principal, or for the principal in the targname
|
||||
field if present), and decrypt the new password. The server also
|
||||
checks whether the initial flag is required for this request,
|
||||
replying with status 0x0007 if it is not set and should be. An
|
||||
authorization failure is cause to respond with status 0x0005. For
|
||||
forward compatibility, the server should be prepared to ignore fields
|
||||
after targrealm in the structure that it does not understand.
|
||||
|
||||
The newpasswd field contains the cleartext password, and the server
|
||||
will apply any local policy checks including password policy checks.
|
||||
The server then generates the appropriate keytypes from the password
|
||||
and stores them in the KDC database. If all goes well, status 0x0000
|
||||
is returned to the client in the reply message (see below).
|
||||
|
||||
Reply Message
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| message length | protocol version number |
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| AP_REP length | AP-REP data /
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
/ KRB-PRIV message /
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
All 16 bit fields are in big-endian order.
|
||||
|
||||
message length field: contains the number of bytes in the message
|
||||
including this field.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 3]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
protocol version number: contains the hex constant 0x0001 (big-endian
|
||||
integer). (The reply message has the same format as the original
|
||||
change password protocol.)
|
||||
|
||||
AP-REP length: length of AP-REP data, in bytes. If the length is
|
||||
zero, then the last field contains a KRB-ERROR message instead of a
|
||||
KRB-PRIV message.
|
||||
|
||||
AP-REP data: the AP-REP is the response to the AP-REQ in the request
|
||||
packet.
|
||||
|
||||
KRB-PRIV message: This KRB-PRIV message must be encrypted with the
|
||||
subsession key from the authenticator in the AP-REQ data.
|
||||
|
||||
The server will respond with a KRB-PRIV message unless it cannot
|
||||
decode the client AP-REQ or KRB-PRIV message, in which case it will
|
||||
respond with a KRB-ERROR message. NOTE: Unlike change password
|
||||
version 1, the KRB-ERROR message will be sent back without any
|
||||
encapsulation.
|
||||
|
||||
The user-data component of the KRB-PRIV message, or e-data component
|
||||
of the KRB-ERROR message, consists of the following data.
|
||||
|
||||
0 1 2 3
|
||||
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
| result code | result string /
|
||||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||
|
||||
result code (16 bits) (result codes 0-4 are from the original change
|
||||
password protocol):
|
||||
|
||||
The result code must have one of the following values
|
||||
(big-endian integer):
|
||||
|
||||
KRB5_KPASSWD_SUCCESS 0 request succeeds (This value
|
||||
is not allowed in a KRB-ERROR
|
||||
message)
|
||||
|
||||
KRB5_KPASSWD_MALFORMED 1 request fails due to being
|
||||
malformed
|
||||
|
||||
KRB5_KPASSWD_HARDERROR 2 request fails due to "hard"
|
||||
error in processing the
|
||||
request (for example, there
|
||||
is a resource or other
|
||||
problem causing the request
|
||||
to fail)
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 4]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
KRB5_KPASSWD_AUTHERROR 3 request fails due to an error
|
||||
in authentication processing
|
||||
|
||||
KRB5_KPASSWD_SOFTERROR 4 request fails due to a
|
||||
"soft" error in processing
|
||||
the request
|
||||
|
||||
KRB5_KPASSWD_ACCESSDENIED 5 requestor not authorized
|
||||
|
||||
KRB5_KPASSWD_BAD_VERSION 6 protocol version unsupported
|
||||
|
||||
KRB5_KPASSWD_INITIAL_FLAG_NEEDED 7 initial flag required
|
||||
|
||||
0xFFFF is returned if the request fails for some other reason.
|
||||
Although only a few non-zero result codes are specified here, the
|
||||
client should accept any non-zero result code as indicating
|
||||
failure.
|
||||
|
||||
result string:
|
||||
|
||||
This field contains information which might be useful to the user,
|
||||
such as feedback about policy failures. The string is encoded in
|
||||
UTF-8. It may be omitted if the server does not wish to include
|
||||
it. If it is present, the client will display the string to the
|
||||
user.
|
||||
|
||||
3. Security Considerations
|
||||
|
||||
Password policies should be enforced to make sure that users do not
|
||||
pick passwords (for change password) that are vulnerable to brute
|
||||
force password guessing attacks. An administrator who is authorized
|
||||
to set other principal's passwords is highly trusted and must also
|
||||
carefully protect his/her own credentials.
|
||||
|
||||
4. References
|
||||
|
||||
[1] Kohl, J. and C. Neuman, "The Kerberos Network Authentication
|
||||
Service (V5)", RFC 1510, September 1993.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 5]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
5. Authors' Addresses
|
||||
|
||||
Mike Swift
|
||||
University of Washington
|
||||
Seattle, WA
|
||||
|
||||
EMail: mikesw@cs.washington.edu
|
||||
|
||||
|
||||
Jonathan Trostle
|
||||
Cisco Systems
|
||||
170 W. Tasman Dr.
|
||||
San Jose, CA 95134
|
||||
|
||||
EMail: john3725@world.std.com
|
||||
|
||||
|
||||
John Brezak
|
||||
Microsoft
|
||||
1 Microsoft Way
|
||||
Redmond, WA 98052
|
||||
|
||||
EMail: jbrezak@microsoft.com
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 6]
|
||||
|
||||
RFC 3244 Microsoft Windows 2000 Kerberos Change & Set February 2002
|
||||
|
||||
|
||||
6. Full Copyright Statement
|
||||
|
||||
Copyright (C) The Internet Society (2002). All Rights Reserved.
|
||||
|
||||
This document and translations of it may be copied and furnished to
|
||||
others, and derivative works that comment on or otherwise explain it
|
||||
or assist in its implementation may be prepared, copied, published
|
||||
and distributed, in whole or in part, without restriction of any
|
||||
kind, provided that the above copyright notice and this paragraph are
|
||||
included on all such copies and derivative works. However, this
|
||||
document itself may not be modified in any way, such as by removing
|
||||
the copyright notice or references to the Internet Society or other
|
||||
Internet organizations, except as needed for the purpose of
|
||||
developing Internet standards in which case the procedures for
|
||||
copyrights defined in the Internet Standards process must be
|
||||
followed, or as required to translate it into languages other than
|
||||
English.
|
||||
|
||||
The limited permissions granted above are perpetual and will not be
|
||||
revoked by the Internet Society or its successors or assigns.
|
||||
|
||||
This document and the information contained herein is provided on an
|
||||
"AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
|
||||
TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
|
||||
HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
Acknowledgement
|
||||
|
||||
Funding for the RFC Editor function is currently provided by the
|
||||
Internet Society.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Swift, et al. Informational [Page 7]
|
||||
|
Reference in New Issue
Block a user