summaryrefslogtreecommitdiff
path: root/source4/heimdal/doc/standardisation/draft-swift-win2k-krb-referrals-00.txt
blob: f5d1c4c2e3039070036d5c438dbef32188751097 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
CAT Working Group                                              M. Swift 
Internet Draft                                                Microsoft 
Document: draft-swift-win2k-krb-referrals-00.txt           October 1999 
Category: Informational                                                 
 
 
           Generating KDC Referrals to locate Kerberos realms 
 
 
Status of this Memo 
 
   This document is an Internet-Draft and is in full conformance with 
   all provisions of Section 10 of RFC2026 [1].  
    
   Internet-Drafts are working documents of the Internet Engineering 
   Task Force (IETF), its areas, and its working groups. Note that 
   other groups may also distribute working documents as Internet-
   Drafts. Internet-Drafts are draft documents valid for a maximum of 
   six months and may be updated, replaced, or obsoleted by other 
   documents at any time. It is inappropriate to use Internet- Drafts 
   as reference material or to cite them other than as "work in 
   progress."  
    
   The list of current Internet-Drafts can be accessed at 
   http://www.ietf.org/ietf/1id-abstracts.txt  

   The list of Internet-Draft Shadow Directories can be accessed at 
   http://www.ietf.org/shadow.html. 
    
1. Abstract 
    
   The draft documents a new method for a Kerberos Key Distribution 
   Center (KDC) to respond to client requests for tickets as is used in 
   Microsoft's Windows 2000 implementation of Kerberos. The KDC will 
   handle requests for principals in other realms by returning either a 
   referral error or a cross-realm TGT to another realm on the referral 
   path. 
    
2. Conventions used in this document 
    
   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 
   "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and "OPTIONAL" in 
   this document are to be interpreted as described in RFC-2119 [2]. 
    
3. Introduction 
    
   The Kerberos TGS and AS protocols, as defined in RFC 1510 [3], 
   require that client software be able to parse principal names into a 
   realm and an account portion. However, if a site want to deploy a 
   Kerberos realm infrastructure separately from its DNS 
   infrastructure, Kerberos must be able to handle the case where the 
   client software does not know what realm contains a given service or 
   user principal name. In addition, the current protocol requires the 
   client to know the hierarchy of realms by explicitly asking for a 

  
Swift                  Category - Informational                      1 

                            KDC Referrals                October 1999 
 
 
   referral to a specific realm rather than letting the KDC pick the 
   next realm on the referral path. 
    
   To rectify these problems, this draft introduces three new kinds of 
   KDC referrals: 
    
   1. AS ticket referrals, in which the client doesnĘt know which realm 
     contains a user account. 
   2. TGS ticket referrals, in which the client doesnĘt know which realm 
     contains a server account. 
   3. Cross realm shortcut referrals, in which the KDC chooses the next 
     path on a referral chain 
    
4. Realm Organization Model 
    
   This draft assumes that the world of principals is arranged on 
   multiple levels: the realm, the enterprise, and the world. A KDC may 
   issue tickets for any principal in its realm or cross-realm tickets 
   for realms with which it has a direct trust relationship. The KDC 
   also has access to a trusted directory or name service that can 
   resolve any name from within its enterprise into a realm. This 
   trusted name service removes the need to use an untrusted DNS lookup 
   for name resolution. 
    
   For example, consider the following configuration, where lines 
   indicate trust relationships: 
    
                  MS.COM  
                /        \ 
               /          \ 
        OFFICE.MS.COM    NT.MS.COM 
    
   In this configuration, all users in the MS.COM enterprise could have 
   a principal name such as alice@ms.com, with the same realm portion. 
   In addition, servers at MS.COM should be able to have DNS host names 
   from any DNS domain independent of what Kerberos realm their 
   principal resides in. 
    
5. Principal Names 
    
5.1 Service Principal Names 
    
   The standard Kerberos model in RFC 1510 [3] gives each Kerberos 
   principal a single name. However, if a service is reachable by 
   several addresses, it may be useful for a principal to have multiple 
   names. Consider a service running on a multi-homed machine. Rather 
   than requiring a separate principal and password for each name it 
   exports, a single account with multiple names could be used. 
    
   Multiple names are also useful for services in that clients need not 
   perform DNS lookups to resolve a host name into a full DNS address. 
   Instead, the service may have a name for each of its supported host 
   names, including its IP address. Nonetheless, it is still convenient 
  
Swift                  Category - Informational                      2 

                            KDC Referrals                October 1999 
 
 
   for the service to not have to be aware of all these names. Thus a 
   new name may be added to DNS for a service by updating DNS and the 
   KDC database without having to notify the service. In addition, it 
   implies that these aliases are globally unique: they do not include 
   a specifier dictating what domain contains the principal. Thus, an 
   alias for a server is of the form "name/name/name" and may be 
   transmitted as any name type. 
    
5.2 Client Principal Names 
    
   Similarly, a client account may also have multiple principal names. 
   More useful, though, is a globally unique name that allows 
   unification of email and security principal names. For example, all 
   users at Microsoft may have a client principal name of the form 
   "joe@MS.COM" even though the principals are contained in multiple 
   realms. This global name is again an alias for the true client 
   principal name, which is indicates what realm contains the 
   principal. Thus, accounts "alice" in the realm ntdev.MS.COM and 
   "bob" in office.MS.COM may logon as "alice@MS.COM" and "bob@MS.COM". 
   This change requires a new client principal name type, as the AS-REQ 
   message only contains a single realm field, and the realm portion of 
   this name doesn't correspond to any realm security realm. Thus, the 
   entire name "alice@MS.COM" is transmitted in the client name field 
   of the AS-REQ message, with a name type of KRB-NT-ENTERPRISE-
   PRINCIPAL. 
    
        #define KRB-NT-ENTERPRISE-PRINCIPAL     10 
    
5.3 Name Canonicalization 
    
   In order to support name aliases, the Kerberos client must 
   explicitly request the name-canonicalization KDC option (bit 12) in 
   the ticket flags for the TGS-REQ. This option is an indicator to the 
   KDC that if it fails to find the name in the local database as a 
   normal principal name, it should try to look the name up as an alias 
   both locally and in a global directory. This flag indicates to the 
   KDC that the client is prepared to receive a reply with a different 
   client or server principal name than the request. Thus, the 
   KDCOptions types is redefined as: 
    
        KDCOptions ::=   BIT STRING { 
                          reserved(0), 
                          forwardable(1), 
                          forwarded(2), 
                          proxiable(3), 
                          proxy(4), 
                          allow-postdate(5), 
                          postdated(6), 
                          unused7(7), 
                          renewable(8), 
                          unused9(9), 
                          unused10(10), 
                          unused11(11), 
  
Swift                  Category - Informational                      3 

                            KDC Referrals                October 1999 
 
 
                          name-canonicalize(12), 
                          renewable-ok(27), 
                          enc-tkt-in-skey(28), 
                          renew(30), 
                          validate(31) 
         } 
    
6. Client Referrals 
    
   The simplest form of ticket referral is for a user requesting a 
   ticket using an AS-REQ. In this case, the client machine will send 
   the AS request to a convenient realm, probably either the realm of 
   the client machine or the realm portion of the client name. In the 
   case of the name Alice@MS.COM, the client may optimistically choose 
   to send the request to MS.COM. The client will send the string 
   "alice@MS.COM" in the client principal name field using the KRB-NT-
   ENTERPRISE-PRINCIPAL name type. The KDC will try to lookup the name 
   in its local account database. If the account is present, it will 
   return a KDC reply structure with the appropriate ticket. If the 
   account is not present and the name-canonicalize option is 
   requested, it will try to lookup the entire name (Alice@MS.COM) in 
   the global directory. If this lookup is unsuccessful, it will return 
   the error KDC_ERR_C_PRINCIPAL_UNKNOWN. If the lookup is successful, 
   it will return an error KDC_ERR_WRONG_REALM (0x44) and in the error 
   message, the cname and crealm field will contain the client name and 
   the true realm of the client. If the KDC contains the account 
   locally, it will return a normal ticket. The client name and realm 
   portions of the ticket and KDC reply message will be the client's 
   true name in the realm, not the globally unique name. 
    
   If the client receives a KDC_ERR_WRONG_REALM error, it will issue a 
   new AS request to the realm specified by the crealm field of the 
   error message. 
 
7. Server Referrals 
    
   The server referral mechanism is a bit more complex than the client 
   referral mechanism. The primary problem is that the KDC must return 
   a referral ticket rather than an error message, so it must include 
   in the TGS response information about what realm contains the 
   service. This is done by returning information about the server name 
   in the pre-auth data field of the KDC reply. 
    
   If the KDC resolves the server principal name into a principal in 
   its realm, it may return a normal ticket. If the name-canonicalize 
   bit is not set, then the KDC should only look up the name as a 
   normal principal name. Otherwise, it should search all aliases as 
   well. The server principal name in both the ticket and the KDC reply 
   should be the true server principal name instead of one of the 
   aliases. This prevents the application server from needing to know 
   about all its aliases. 
    

  
Swift                  Category - Informational                      4 

                            KDC Referrals                October 1999 
 
 
   If the KDC doesnĘt find the principal locally but is able to 
   resolved it into a realm from the global directory, then it should 
   return a cross-realm ticket granting ticket to the next hop on the 
   trust path towards that realm. In this case, the KDC will return the 
   server realm as a PA data type. The data itself is an ASN.1 encoded 
   structure containing the server's realm, and if known, true 
   principal name. The preauthentication data type is KRB5-PADATA-
   SERVER-REFERRAL-INFO. 
    
        #define KRB5-PADATA-SERVER-REFERRAL-INFO        20 
         
        KERB-PA-SERV-REFERRAL   ::= SEQUENCE { 
                referred-server-name[1]   KERB-PRINCIPAL-NAME OPTIONAL, 
                referred-server-realm[0]  KERB-REALM 
        } 
    
   The client may use the referred-server-name field to tell if it 
   already has a ticket to the server in its ticket cache. 
    
   The client can use this information to request a chain of cross-
   realm ticket granting tickets until it reaches this realm, and can 
   then expect to receive a valid service ticket. 
    
8. Cross Realm Routing 
    
   The current Kerberos protocol requires the client libraries to 
   explicitly request a cross-realm TGT for each pair of realms on a 
   referral chain. As a result, the client machines need to be aware of 
   the trust hierarchy and of any short-cut trusts (those that arenĘt 
   parent-child trusts). This requires a lot of configuration on the 
   client. Instead, the client should be able to request a TGT to the 
   target realm from each realm on the route. The KDC will determine 
   the best path for the client and return a cross-realm TGT. The 
   client software has to be aware that a request for a cross-realm TGT 
   may return a TGT for a realm different from the one requested. 
    
9. Security Considerations 
 
   The original Kerberos specification stated that the server principal 
   name in the KDC reply was the same as the server name in the 
   request. These protocol changes break that assumption, so the client 
   may be vulnerable to a denial of service attack by an attacker that 
   replays replies from previous requests. It can verify that the 
   request was one of its own by checking the client-address field or 
   authtime field, though, so the damage is limited. 
    
10. References 
    
 
   1  Bradner, S., "The Internet Standards Process -- Revision 3", BCP 
      9, RFC 2026, October 1996. 
    
 
  
Swift                  Category - Informational                      5 

                            KDC Referrals                October 1999 
 
 
 
   2  Bradner, S., "Key words for use in RFCs to Indicate Requirement 
      Levels", BCP 14, RFC 2119, March 1997 
    
   3  Kohl, J., Neuman, C., "The Kerberos Network Authentication 
      Service (V5)", RFC 1510, September 1993 
    
    
10. Author's Addresses 
    
   Michael Swift 
   Microsoft 
   One Microsoft Way 
   Redmond, Washington 
   Email: mikesw@microsoft.com 






































  
Swift                  Category - Informational                      6 

                            KDC Referrals                October 1999 
 
 
    
Full Copyright Statement 
 
   Copyright (C) The Internet Society (1999).  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." 
    
    
    






















  
Swift                  Category - Informational                      7