xref: /freebsd/crypto/krb5/src/windows/README (revision 7f2fe78b9dd5f51c821d771b63d2e096f6fd49e9)
1*7f2fe78bSCy Schubert	       Building & Running Kerberos 5 on Windows
2*7f2fe78bSCy Schubert	       ----------------------------------------
3*7f2fe78bSCy Schubert
4*7f2fe78bSCy SchubertThis file documents how to build MIT Kerberos for Windows.
5*7f2fe78bSCy SchubertThe MIT Kerberos for Windows distribution contains additional components
6*7f2fe78bSCy Schubertnot present in the Unix krb5 distribution, most notably the
7*7f2fe78bSCy SchubertMIT Kerberos Ticket Manager application.
8*7f2fe78bSCy Schubert
9*7f2fe78bSCy SchubertTo build Kerberos 5 on Windows, you will need the following:
10*7f2fe78bSCy Schubert
11*7f2fe78bSCy Schubert* A version of Visual Studio (at least 2013) which includes the
12*7f2fe78bSCy Schubert  Microsoft Foundation Classes libraries.  These instructions will
13*7f2fe78bSCy Schubert  work for Visual Studio 2017 Community or Professional, both of which
14*7f2fe78bSCy Schubert  include the MFC libraries if the "Visual C++ MFC" checkbox is
15*7f2fe78bSCy Schubert  selected after enabling the "Desktop development with C++" workload.
16*7f2fe78bSCy Schubert  If you do not plan to build the graphical ticket manager
17*7f2fe78bSCy Schubert  application, the MFC libraries are not required.
18*7f2fe78bSCy Schubert
19*7f2fe78bSCy Schubert* A version of Perl.
20*7f2fe78bSCy Schubert
21*7f2fe78bSCy Schubert* Some common Unix utilities such as sed/awk/cp/cat installed in the
22*7f2fe78bSCy Schubert  command-line path.
23*7f2fe78bSCy Schubert
24*7f2fe78bSCy Schubert* To build an MSI installer, the Windows Installer XML (WiX) toolkit,
25*7f2fe78bSCy Schubert  and to ensure that the HTML Help Compiler (hhc.exe) and the WiX
26*7f2fe78bSCy Schubert  tools are in your command-line path.  WiX version 3.11.1 is verified
27*7f2fe78bSCy Schubert  to work with this codebase.
28*7f2fe78bSCy Schubert
29*7f2fe78bSCy SchubertA simple way to get the necessary Unix utilities is to install Git
30*7f2fe78bSCy SchubertBASH from https://gitforwindows.org and configure it to add the Unix
31*7f2fe78bSCy Schubertutilities to the command-line path.  In some versions of Windows (not
32*7f2fe78bSCy Schubertthe most current versions), the Unix utilities can alternatively be
33*7f2fe78bSCy Schubertobtained via the Utilities and SDK for UNIX-based Applications, which
34*7f2fe78bSCy Schubertmay be enabled as a Windows feature and then the components installed.
35*7f2fe78bSCy SchubertNote that the Windows nmake will not find the SUA awk utility in the
36*7f2fe78bSCy Schubertpath unless it is named awk.exe; the permissions on the utility may
37*7f2fe78bSCy Schubertneed correcting if awk.exe is created as a copy of the original awk.
38*7f2fe78bSCy Schubert
39*7f2fe78bSCy SchubertGit BASH contains a version of Perl, which will work to build krb5 if
40*7f2fe78bSCy Schubertthe newlines in the source tree are not translated to native newlines.
41*7f2fe78bSCy SchubertStrawberry Perl will work regardless of whether newlines are
42*7f2fe78bSCy Schuberttranslated.  If both Git BASH and Strawberry Perl are installed, you
43*7f2fe78bSCy Schubertmay need to adjust the command line path to ensure that the preferred
44*7f2fe78bSCy SchubertPerl appears first.
45*7f2fe78bSCy Schubert
46*7f2fe78bSCy SchubertThe krb5 source tree may be obtained either directly on the Windows
47*7f2fe78bSCy Schubertmachine with a native git client cloning the krb5 public mirror at
48*7f2fe78bSCy Schuberthttps://github.com/krb5/krb5.git or on a separate (Unix) machine and
49*7f2fe78bSCy Schubertcopied over, such as from a VM host onto a Windows VM.  If you are
50*7f2fe78bSCy Schubertchecking out the sources with git and are using the Git BASH Perl,
51*7f2fe78bSCy Schubertmake sure to set git's core.autocrlf variable to "input" or "false" to
52*7f2fe78bSCy Schubertavoid translating newlines.
53*7f2fe78bSCy Schubert
54*7f2fe78bSCy SchubertAfter Visual Studio is installed, you should be able to invoke 32-bit
55*7f2fe78bSCy Schubertand 64-bit command prompts via the start menu (Visual Studio 2017 ->
56*7f2fe78bSCy Schubertx86 Native Tools Command Prompt and x64 Native Tools Command Prompt).
57*7f2fe78bSCy SchubertAt the current time, Kerberos 5 can only be built for the x64 target
58*7f2fe78bSCy Schubertif the host platform is also 64-bit, because it compiles and runs
59*7f2fe78bSCy Schubertprograms during the build.
60*7f2fe78bSCy Schubert
61*7f2fe78bSCy SchubertIMPORTANT NOTE: By default, the sources are built with debug
62*7f2fe78bSCy Schubertinformation and linked against the debug version of the Microsoft C
63*7f2fe78bSCy SchubertRuntime library, which is not found on most Windows systems unless
64*7f2fe78bSCy Schubertthey have development tools, and requires a separate license to
65*7f2fe78bSCy Schubertdistribute.  To build a release version, you need to define NODEBUG
66*7f2fe78bSCy Schuberteither in the environment or the nmake command-line.  Debug
67*7f2fe78bSCy Schubertinformation in the compiled binaries and libraries may be retained by
68*7f2fe78bSCy Schubertdefining DEBUG_SYMBOL in the environment or on the nmake command line.
69*7f2fe78bSCy Schubert
70*7f2fe78bSCy Schubert
71*7f2fe78bSCy SchubertBuilding the code and installer:
72*7f2fe78bSCy Schubert-------------------------------
73*7f2fe78bSCy Schubert
74*7f2fe78bSCy SchubertFirst, make sure you have sed, (g)awk, cat, and cp.
75*7f2fe78bSCy SchubertYou must also define KRB_INSTALL_DIR either in the environment or
76*7f2fe78bSCy Schuberton the command line (for nmake install).  If you are proceeding to build
77*7f2fe78bSCy Schubertthe MSI installer, this directory should be a temporary staging area in or
78*7f2fe78bSCy Schubertnear your build tree.  The directory must exist before nmake install
79*7f2fe78bSCy Schubertis run.  The 64-bit installer provides 32-bit libraries, so a 32-bit build
80*7f2fe78bSCy Schubertand install must be performed before the 64-bit build.
81*7f2fe78bSCy Schubert
82*7f2fe78bSCy SchubertTo skip building the graphical ticket manager, run "set NO_LEASH=1"
83*7f2fe78bSCy Schubertbefore building, and do not build the installers.
84*7f2fe78bSCy Schubert
85*7f2fe78bSCy SchubertIn a 32-bit command shell:
86*7f2fe78bSCy Schubert
87*7f2fe78bSCy Schubert 1) set KRB_INSTALL_DIR=\path\to\dir    # Where bin/include/lib lives
88*7f2fe78bSCy Schubert 2) cd xxx\src                          # Go to where source lives
89*7f2fe78bSCy Schubert 3) nmake -f Makefile.in prep-windows   # Create Makefile for Windows
90*7f2fe78bSCy Schubert 4) nmake [NODEBUG=1]                   # Build the sources
91*7f2fe78bSCy Schubert 5) nmake install [NODEBUG=1]           # Copy headers, libs, executables
92*7f2fe78bSCy Schubert 6) cd windows\installer\wix            # Go to where the installer source is
93*7f2fe78bSCy Schubert 7) nmake [NODEBUG=1]                   # Build the installer
94*7f2fe78bSCy Schubert 8) rename kfw.msi kfw32.msi            # Save the 32-bit installer
95*7f2fe78bSCy Schubert
96*7f2fe78bSCy SchubertIn a 64-bit command shell:
97*7f2fe78bSCy Schubert
98*7f2fe78bSCy Schubert 9) set PATH=%PATH%;"%WindowsSdkVerBinPath%"\x86  # To get uicc.exe
99*7f2fe78bSCy Schubert10) set KRB_INSTALL_DIR=\path\to\dir    # Where bin/include/lib lives
100*7f2fe78bSCy Schubert11) cd xxx\src                          # Go to where source lives
101*7f2fe78bSCy Schubert12) nmake clean                         # Clean up the 32-bit objects
102*7f2fe78bSCy Schubert13) nmake [NODEBUG=1]                   # Build the sources for 64-bit
103*7f2fe78bSCy Schubert14) nmake install [NODEBUG=1]           # Copy 64-bit lib/executables
104*7f2fe78bSCy Schubert15) cd windows\installer\wix            # Back to the installer source
105*7f2fe78bSCy Schubert16) nmake clean                         # Remove 32-bit leavings
106*7f2fe78bSCy Schubert17) nmake [NODEBUG=1]                   # Build the 64-bit installer
107*7f2fe78bSCy Schubert18) rename kfw.msi kfw64.msi            # And name it usefully
108*7f2fe78bSCy Schubert
109*7f2fe78bSCy SchubertStep 9 may be skipped if uicc is already in the command-line path (try
110*7f2fe78bSCy Schubertrunning "uicc" to see if you get a usage message or a not-found
111*7f2fe78bSCy Schuberterror), or if you are not building the graphical ticket manager.
112*7f2fe78bSCy Schubert
113*7f2fe78bSCy SchubertVisual Studio 2013 and 2015 provide only a single command prompt.
114*7f2fe78bSCy SchubertWithin this prompt, use "vcvarsall.bat x86" and "vcvarsall.bat amd64"
115*7f2fe78bSCy Schubertto switch to 32-bit and 64-bit mode.
116*7f2fe78bSCy Schubert
117*7f2fe78bSCy Schubert
118*7f2fe78bSCy SchubertRunning Kerberos 5 Apps:
119*7f2fe78bSCy Schubert-----------------------
120*7f2fe78bSCy Schubert
121*7f2fe78bSCy SchubertMake sure you have a valid krb5.ini file.
122*7f2fe78bSCy SchubertBy default, an empty krb5.ini is installed in CSIDL_COMMON_APPDATA
123*7f2fe78bSCy Schubert(that is, %SystemDrive%\ProgramData\MIT\Kerberos5\ on newer-than-XP).
124*7f2fe78bSCy Schubert(ProgramData is a hidden folder.)  You may need to customize it with
125*7f2fe78bSCy Schubertsettings for your site, but since DNS lookups are enabled for locating
126*7f2fe78bSCy SchubertKDCs, many sites will not need further customization.  The file format is
127*7f2fe78bSCy Schubertidentical to that of a Unix krb5.conf file.
128*7f2fe78bSCy Schubert
129*7f2fe78bSCy Schubert
130*7f2fe78bSCy Schubertkrb5.ini File:
131*7f2fe78bSCy Schubert-------------
132*7f2fe78bSCy Schubert
133*7f2fe78bSCy SchubertWARNING: Despite its name, this is not a Windows .ini file.
134*7f2fe78bSCy SchubertTherefore, do not try to use any .ini tools, including the Windows API
135*7f2fe78bSCy Schubertor any installer tools to manipulate this file.  Its format is subtly
136*7f2fe78bSCy Schubertdifferent from Windows .ini files!
137*7f2fe78bSCy Schubert
138*7f2fe78bSCy Schubert
139*7f2fe78bSCy SchubertControlling the Kerberos 5 Run-Time Environment:
140*7f2fe78bSCy Schubert-----------------------------------------------
141*7f2fe78bSCy Schubert
142*7f2fe78bSCy SchubertThe Kerberos 5 configuration file and credentials cache can be
143*7f2fe78bSCy Schubertcontrolled with environment variables and registry settings.  The
144*7f2fe78bSCy Schubertenvironment variable for a particular setting always takes precedence.
145*7f2fe78bSCy SchubertNext in precedence comes the setting in the registry under
146*7f2fe78bSCy SchubertHKEY_CURRENT_USER\Software\MIT\Kerberos5.  Then comes the registry
147*7f2fe78bSCy Schubertsetting under HKEY_LOCAL_MACHINE\Software\MIT\Kerberos5.  If none of
148*7f2fe78bSCy Schubertthose are found, a default value is used.
149*7f2fe78bSCy Schubert
150*7f2fe78bSCy SchubertConfiguration File:
151*7f2fe78bSCy Schubert- Environment: KRB5_CONFIG
152*7f2fe78bSCy Schubert- Registry Value: config
153*7f2fe78bSCy Schubert- Default: looks in the user's AppData directory, the machine's ProgramData
154*7f2fe78bSCy Schubert  directory, krb5_32.dll's dir and Windows directory
155*7f2fe78bSCy Schubert
156*7f2fe78bSCy SchubertDefault Credentials Cache:
157*7f2fe78bSCy Schubert- Environment: KRB5CCNAME
158*7f2fe78bSCy Schubert- Registry Value: ccname
159*7f2fe78bSCy Schubert- Default: API:
160*7f2fe78bSCy Schubert
161*7f2fe78bSCy Schubert
162*7f2fe78bSCy SchubertCredentials Cache:
163*7f2fe78bSCy Schubert-----------------
164*7f2fe78bSCy Schubert
165*7f2fe78bSCy SchubertIn addition to standard FILE: (disk file) and MEMORY: (in-process
166*7f2fe78bSCy Schubertnon-shared memory) Windows supports the API: cache type, which is a
167*7f2fe78bSCy Schubertshared memory cache.  Kerberos for Windows also has access to an
168*7f2fe78bSCy SchubertMSLSA: cache type, which directly accesses the Microsoft Kerberos
169*7f2fe78bSCy SchubertLogon Session credentials cache.  The MSLSA: cache is available when the
170*7f2fe78bSCy Schubertuser logon is performed using Kerberos either to an Active Directory Domain
171*7f2fe78bSCy Schubertor a non-Microsoft KDC; the ms2mit and mit2ms utilities can also be used
172*7f2fe78bSCy Schubertto interact with it, though there are some limitations.
173*7f2fe78bSCy Schubert
174*7f2fe78bSCy SchubertA user is able to logon to Windows using the Kerberos LSA if the machine
175*7f2fe78bSCy Schubertis part of a Windows Active Directory domain or if the machine has been
176*7f2fe78bSCy Schubertconfigured to authenticate to a non-Microsoft KDC such as MIT.
177*7f2fe78bSCy SchubertThe instructions for configuring a Windows 2000 XP workstation to
178*7f2fe78bSCy Schubertauthenticate to a non-Microsoft KDC are documented in TechNet somewhere.
179*7f2fe78bSCy SchubertIn brief:
180*7f2fe78bSCy Schubert
181*7f2fe78bSCy Schubert  1. Install the Windows support tools in order to obtain KSETUP.EXE
182*7f2fe78bSCy Schubert     and KTPASS.EXE.
183*7f2fe78bSCy Schubert  2. Install the Windows Resource Kit to obtain KERBTRAY.EXE and KLIST.EXE
184*7f2fe78bSCy Schubert  3. Add Realms and associated KDCs with: *KSETUP /AddKdc <realm>
185*7f2fe78bSCy Schubert     [<kdcname>]*.  If you leave off the <kdcname> DNS SRV records will
186*7f2fe78bSCy Schubert     be used.
187*7f2fe78bSCy Schubert  4. Specify the password change service host for the realm with:
188*7f2fe78bSCy Schubert     *KSETUP /AddKpasswd <realm> <Kpwdhost>*
189*7f2fe78bSCy Schubert  5. Assign the realm of the local machine with: *KSETUP /SetRealm
190*7f2fe78bSCy Schubert     <realm>* where realm must be all upper case.
191*7f2fe78bSCy Schubert  6. Assign the local machine's password with: *KSETUP
192*7f2fe78bSCy Schubert     /SetComputerPassword <Password>
193*7f2fe78bSCy Schubert     *
194*7f2fe78bSCy Schubert  7. Specify the capabilities of the Realm KDC with: *KSETUP
195*7f2fe78bSCy Schubert     /SetRealmFlags <realm> <flag> [<flag> ...]* where flags may be
196*7f2fe78bSCy Schubert     *None, SendAddress, TcpSupported, Delegate, *and *NcSupported*,
197*7f2fe78bSCy Schubert  8. Map principal names to local accounts with: *KSETUP /MapUser
198*7f2fe78bSCy Schubert     <principal> <account>*
199*7f2fe78bSCy Schubert
200*7f2fe78bSCy SchubertOn the MIT KDC, you must then create service principals using the "Password"
201*7f2fe78bSCy Schubertassigned to the machine.  So far the minimum list of principals required appear
202*7f2fe78bSCy Schubertto be for a machine named "mymachine" in the realm "EXAMPLE.COM" with a
203*7f2fe78bSCy Schubertdomain name of "example.com":
204*7f2fe78bSCy Schubert
205*7f2fe78bSCy Schubert   * host/mymachine@EXAMPLE.COM
206*7f2fe78bSCy Schubert   * host/mymachine.example.com@EXAMPLE.COM
207*7f2fe78bSCy Schubert   * cifs/mymachine@EXAMPLE.COM
208*7f2fe78bSCy Schubert   * cifs/mymachine.example.com@EXAMPLE.COM
209*7f2fe78bSCy Schubert
210*7f2fe78bSCy SchubertThere may very well be other services for which principals must be created depending
211*7f2fe78bSCy Schuberton what services are being executed on the machine.
212*7f2fe78bSCy Schubert
213*7f2fe78bSCy SchubertIt is very important to note that while you can successfully log into a Windows
214*7f2fe78bSCy Schubertworkstation by authenticating to the KDC without creating a host key; the logon
215*7f2fe78bSCy Schubertsession you receive will not be a Kerberos Logon Session.  There will be no Kerberos
216*7f2fe78bSCy Schubertprincipal and no LSA cache to access.
217*7f2fe78bSCy Schubert
218*7f2fe78bSCy SchubertThe result of a real KSETUP configuration looks like this:
219*7f2fe78bSCy Schubert
220*7f2fe78bSCy Schubert   [C:\4\4NT]ksetup
221*7f2fe78bSCy Schubert   default realm = KRB5.COLUMBIA.EDU (external)
222*7f2fe78bSCy Schubert   ATHENA.MIT.EDU:
223*7f2fe78bSCy Schubert           kdc = kerberos.mit.edu
224*7f2fe78bSCy Schubert           kdc = kerberos-1.mit.edu
225*7f2fe78bSCy Schubert           kdc = kerberos-2.mit.edu
226*7f2fe78bSCy Schubert           kdc = kerberos-3.mit.edu
227*7f2fe78bSCy Schubert           Realm Flags = 0x0 none
228*7f2fe78bSCy Schubert   CC.COLUMBIA.EDU:
229*7f2fe78bSCy Schubert           kdc = kerberos.cc.columbia.edu
230*7f2fe78bSCy Schubert           Realm Flags = 0x0 none
231*7f2fe78bSCy Schubert   GRAND.CENTRAL.ORG:
232*7f2fe78bSCy Schubert           kdc = penn.central.org
233*7f2fe78bSCy Schubert           kdc = grand-opening.mit.edu
234*7f2fe78bSCy Schubert           Realm Flags = 0x0 none
235*7f2fe78bSCy Schubert   KRB5.COLUMBIA.EDU:
236*7f2fe78bSCy Schubert           kdc = yclept.kermit.columbia.edu
237*7f2fe78bSCy Schubert           Realm Flags = 0x0 none
238*7f2fe78bSCy Schubert   OPENAFS.ORG:
239*7f2fe78bSCy Schubert           kdc = virtue.openafs.org
240*7f2fe78bSCy Schubert           Realm Flags = 0x0 none
241*7f2fe78bSCy Schubert   Mapping jaltman@KRB5.COLUMBIA.EDU to jaltman.
242*7f2fe78bSCy Schubert   Mapping jaltman@CC.COLUMBIA.EDU to jaltman.
243*7f2fe78bSCy Schubert   Mapping jaltman@ATHENA.MIT.EDU to jaltman.
244*7f2fe78bSCy Schubert   Mapping all users (*) to a local account by the same name (*).
245*7f2fe78bSCy Schubert
246*7f2fe78bSCy SchubertThe MSLSA: credential cache relies on the ability to extract the entire
247*7f2fe78bSCy SchubertKerberos ticket including the session key from the Kerberos LSA.  In an
248*7f2fe78bSCy Schubertattempt to increase security Microsoft has begun to implement a feature
249*7f2fe78bSCy Schubertby which they no longer export the session keys for Ticket Getting Tickets.
250*7f2fe78bSCy SchubertThis has the side effect of making them useless to the MIT krb5 library
251*7f2fe78bSCy Schubertwhen attempting to request additional service tickets.
252*7f2fe78bSCy Schubert
253*7f2fe78bSCy SchubertThis new feature has been seen in Windows 2003 Server, Windows 2000 Server SP4,
254*7f2fe78bSCy Schubertand Windows XP SP2.  We assume that it will be implemented in all future
255*7f2fe78bSCy SchubertMicrosoft operating systems supporting the Kerberos SSPI.  Microsoft does work
256*7f2fe78bSCy Schubertclosely with MIT and has provided a registry key to disable this new feature.
257*7f2fe78bSCy SchubertOn server platforms the key is specified as:
258*7f2fe78bSCy Schubert
259*7f2fe78bSCy Schubert  HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters
260*7f2fe78bSCy Schubert    AllowTGTSessionKey = 0x01 (DWORD)
261*7f2fe78bSCy Schubert
262*7f2fe78bSCy SchubertOn workstation platforms the key is specified as:
263*7f2fe78bSCy Schubert
264*7f2fe78bSCy Schubert  HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos
265*7f2fe78bSCy Schubert    AllowTGTSessionKey = 0x01 (DWORD)
266*7f2fe78bSCy Schubert
267*7f2fe78bSCy SchubertThe Kerberos for Windows installer automatically sets this key on installation
268*7f2fe78bSCy Schubertand unsets it on uninstall, allowing the MSLSA: cache type to be used.
269*7f2fe78bSCy Schubert
270*7f2fe78bSCy SchubertIt has been noted that the Microsoft Kerberos LSA does not provide enough
271*7f2fe78bSCy Schubertinformation within its KERB_EXTERNAL_TICKET structure to properly construct
272*7f2fe78bSCy Schubertthe Client Principal simply by examining a single ticket. From the MSDN
273*7f2fe78bSCy SchubertLibrary:
274*7f2fe78bSCy Schubert
275*7f2fe78bSCy Schubert  ClientName
276*7f2fe78bSCy Schubert    KERB_EXTERNAL_NAME structure that contains the client name in the ticket.
277*7f2fe78bSCy Schubert    This name is relative to the current domain.
278*7f2fe78bSCy Schubert
279*7f2fe78bSCy Schubert  DomainName
280*7f2fe78bSCy Schubert    UNICODE_STRING that contains the name of the domain that corresponds to
281*7f2fe78bSCy Schubert    the ServiceName member. This is the domain that issued the ticket.
282*7f2fe78bSCy Schubert
283*7f2fe78bSCy Schubert  TargetDomainName
284*7f2fe78bSCy Schubert    UNICODE_STRING that contains the name of the domain in which the ticket is
285*7f2fe78bSCy Schubert    valid. For an interdomain ticket, this is the destination domain.
286*7f2fe78bSCy Schubert
287*7f2fe78bSCy Schubert  AltTargetDomainName
288*7f2fe78bSCy Schubert    UNICODE_STRING that contains a synonym for the destination domain. Every
289*7f2fe78bSCy Schubert    domain has two names: a DNS name and a NetBIOS name. If the name returned
290*7f2fe78bSCy Schubert    in the ticket is different from the name used to request the ticket (the
291*7f2fe78bSCy Schubert    Kerberos Key Distribution Center (KDC) may do name mapping), this string
292*7f2fe78bSCy Schubert    contains the original name.
293*7f2fe78bSCy Schubert
294*7f2fe78bSCy SchubertUnfortunately, there is no field here which contains the domain of the client.
295*7f2fe78bSCy SchubertIn order for the krb5_ccache to properly report the client principal name, the
296*7f2fe78bSCy Schubertclient principal name is constructed by utilizing the ClientName and DomainName
297*7f2fe78bSCy Schubertfields of the Initial TGT associated with the Kerberos LSA credential cache.
298*7f2fe78bSCy SchubertTo disable the use of the TGT info and instead simply use the "DomainName" field
299*7f2fe78bSCy Schubertof the current ticket define one of the following registry keys depending on
300*7f2fe78bSCy Schubertwhether the change should be system global or just for the current user.
301*7f2fe78bSCy Schubert
302*7f2fe78bSCy Schubert   HKLM\Software\MIT\Kerberos5\
303*7f2fe78bSCy Schubert      PreserveInitialTicketIdentity = 0x0 (DWORD)
304*7f2fe78bSCy Schubert
305*7f2fe78bSCy Schubert   HKCU\Software\MIT\Kerberos5\
306*7f2fe78bSCy Schubert      PreserveInitialTicketIdentity = 0x0 (DWORD)
307*7f2fe78bSCy Schubert
308*7f2fe78bSCy SchubertGSSAPI Sample Client:
309*7f2fe78bSCy Schubert---------------------
310*7f2fe78bSCy Schubert
311*7f2fe78bSCy SchubertThe GSS API Sample Client provided in this distribution is compatible with the
312*7f2fe78bSCy Schubertgss-server application built on Unix/Linux systems.  This client is not compatible
313*7f2fe78bSCy Schubertwith the Platform SDK/Samples/Security/SSPI/GSS/ samples which Microsoft has been
314*7f2fe78bSCy Schubertshipping as of January 2004.  Revised versions of these samples are available upon
315*7f2fe78bSCy Schubertrequest to krbdev@mit.edu.
316*7f2fe78bSCy Schubert
317*7f2fe78bSCy SchubertMore Information:
318*7f2fe78bSCy Schubert----------------
319*7f2fe78bSCy Schubert
320*7f2fe78bSCy SchubertFor more information, please read the Kerberos 5 documentation in
321*7f2fe78bSCy Schubertthe doc directory of the distribution.
322