Obtenir le nom d'utilisateur dans WCF service à l'aide de l'authentification basique avec IIS

J'ai un service WCF cours d'exécution dans IIS Express sur ma machine locale. Je suis en utilisant l'Authentification HTTP de Base (sans SSL pour le moment). J'ai un client de test que j'utilise pour appeler mon serveur.

J'ai besoin du nom de l'utilisateur qui a initié la demande (le nom d'utilisateur partie de la base d'authentification auth). Je me rends compte que IIS est de gérer l'authentification pour moi et est en train de vérifier le nom d'utilisateur/mot de passe sur les comptes d'utilisateur Windows. C'est très bien pour mes besoins. Mon problème est que une fois mon service est appelé, je ne peux pas trouver le nom de l'utilisateur n'importe où. J'ai supposé qu'il serait dans l' Thread.CurrentPrincipal.Identity.Name, mais que la valeur est une chaîne vide. Est-il un moyen pour accéder à cette valeur?

Ici est obligatoire dans le cas où il est pertinent:

<basicHttpBinding>
<binding name="basicauth" closeTimeout="00:01:00" openTimeout="00:01:00" 
receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false" 
bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
maxBufferSize="99999999" maxBufferPoolSize="524288" maxReceivedMessageSize="99999999" 
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
  <security mode="TransportCredentialOnly">
    <transport clientCredentialType="Basic" realm="" />
  </security>          
</binding>
</basicHttpBinding>

Mise à JOUR: Merci à tous. Compris mon problème. J'ai eu mal associé de mon point de terminaison et ma liaison de sorte que le point de terminaison de la défaillance de certains de liaison dynamique. Même si je l'ai configuré mon contraignant pour l'authentification basique le point de terminaison n'a pas de configuration à utiliser.

Une fois que j'ai résolu ce problème, le nom d'utilisateur était présent dans le

ServiceSecurityContext.Current.WindowsIdentity.Name

propriété comme prévu.

OriginalL'auteur knms | 2011-10-11