InitializeSecurityContext () throws SEC_E_WRONG_PRINCIPLE.

Todd Stecher tstecher at qwest.net
Sun Mar 19 23:23:37 EST 2006


See below.

Todd Stecher

Emergent Security Corp
425 205 1180

tstecher at qwest.net
> -----Original Message-----
> From: kerberos-bounces at MIT.EDU [mailto:kerberos-bounces at MIT.EDU] On Behalf
> Of henin
> Sent: Thursday, March 16, 2006 1:16 AM
> To: kerberos at MIT.EDU
> Subject: InitializeSecurityContext () throws SEC_E_WRONG_PRINCIPLE.
> 
> Hello All,
> We are facing very strange issues on some of our installations.
> InitializeSecurityContext () throws SEC_E_WRONG_PRINCIPLE error.
>

This (almost) always means the service ticket cannot be decrypted by the
service.  I'd verify that:

1) The caller of AcceptSecurityContext() is indeed running as local system,
and not under an impersonated token.

2) The credential handle pass to ASC() is *not* using explicit credentials
(e.g. you've provided a SEC_WINNT_AUTH_IDENTITY_* structure to
AcquireCredentialsHandle() with a username or password).

3) What SPN are you providing to InitializeSecurityContext()?  What is the
output of setspn -L <machine name>?

 



 
> Setup consists of a client and a server, server is running as a
> service (LocalSystem)
> Both client and server are running on the same machine.
> 
> The setup is as below
> 1)Platform : Windows 2000 with sp4.
> 2)Server is running as a service with log-on user as LocalSystem.
> 3)Kerberos is used for authenticating the client with the server.
> 
> In non-working case on both sides( client and server ) we are getting
> SEC_I_CONTINUE_NEEDED during the 3rd leg phase of authetication
> and later on the client side( InitializeSecurityContext() ) we get
> SEC_E_WRONG_PRINCIPLE error.

MS Kerb *could* fail right away - in this case, the server returns a
KRB_ERROR with the KRB_AP_ERR_MODIFIED / WRONG_PRINCIPAL, and the client
purges it tickets (in case it has a stale ticket encrypted with an "old"
password), and retries the authentication.  It gives up after the SSPI
transaction fails again.


> 
> I have verified that the targetname that is being passed to
> InitializeSecurityContext() is domain\hostname.One more point here is
> the hostname is not a fqdn.

A properly formed SPN would be of the form host/machinename.  Also, if the
machinename is NOT a FQDN, you have some chance of name collisions, as
described in the "troubleshooting Kerberos" whitepaper at
http://www.microsoft.com/kerberos (see KRB_AP_ERR_MODIFIED).  You can also
search for an explanation by looking for emails from me on the
Samba-technical archives.



> 
> I have verified that ping hostname and later ping -a ipaddress
> gives me the fqdn of the machine on which both the client/server
> are running.
> 
> The same installation on a different machine ( Say m/c B) works fine.
> We get SEC_E_OK on the first call to AcceptSecurityContext().
> Both these machines are in the same domain and have same os configuration.
> 
> Running "Setspn -l (hostname)" gives the following output:
> 
> C:\Program Files\Resource Kit>Setspn.exe -l COMPUTERNAME
> Registered ServicePrincipalNames for CN=COMPUTERNAME
> ,CN=Computers,DC=DOMAIN-NAME,DC=us
> ,DC=ORG-NAME,DC=com:
> 
> Any pointers here.
> 
> Regards,
> Henin.
> 
> ________________________________________________
> Kerberos mailing list           Kerberos at mit.edu
> https://mailman.mit.edu/mailman/listinfo/kerberos




More information about the Kerberos mailing list