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