c# tutorial - Récupère le nom d'utilisateur Windows du côté serveur WCF





service web (5)


Pour obtenir le nom d'utilisateur de l'appel du service WCF:

var callerUserName = ServiceSecurityContext.Current.WindowsIdentity.Name;

Je suis plutôt vert avec les services Web et WCF, et j'utilise l'authentification intégrée Windows - comment puis-je obtenir le nom d'utilisateur sur l'interface côté serveur? Je crois que je suis supposé mettre en œuvre un comportement personnalisé, ou peut-être quelque chose avec des sessions WCF? Tous les indices seraient super pratiques.




Essayez de regarder ServiceSecurityContext.Current.WindowsIdentity




Voici un extrait de code de service qui montre comment récupérer et utiliser WindowsIdentity associé à l'appelant d'un service WCF.

Ce code suppose que vous acceptez la plupart des paramètres par défaut avec votre configuration. Il devrait fonctionner sans aucun problème avec la liaison Named Pipe ou Net TCP.

p.Demand () déterminera si l'utilisateur se trouve dans le groupe Windows spécifié par la variable permissionGroup.

private static void DemandManagerPermission()
{
    // Verify the use has authority to proceed
    string permissionGroup = ConfigurationManager.AppSettings["ManagerPermissionGroup"];
    if (string.IsNullOrEmpty(permissionGroup))
        throw new FaultException("Group permissions not set for access control.");

    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
    var p = new PrincipalPermission(ServiceSecurityContext.Current.WindowsIdentity.Name, permissionGroup, true);
    p.Demand();

}



avez-vous essayé WindowsIdentity.GetCurrent(); ?




La solution la plus simple que je puisse penser est de surcharger la méthode Get(int) comme ceci:

[modifiers] Questions Get(Question q)
{
    return Get((int)q);
}

[modifiers] peut généralement être identique à celui de la méthode Get(int) . Si vous ne pouvez pas éditer la classe Questions ou pour une raison quelconque, vous pouvez surcharger la méthode en écrivant une extension:

public static class Extensions
{
    public static Questions Get(this Questions qs, Question q)
    {
        return qs.Get((int)q);
    }
}




c# wcf