2016-09-30 4 views
0

J'ai créé une application web de test dans .Net framework 4.0 avec la page Default.aspx. Je veux juste o id réseau d'accès de l'utilisateur, donc j'écrit le code suivant dans le code default.aspx derrière mais obtenir la valeur vide lorsque je lance l'application en appuyant sur F5:Comment accéder à l'id réseau dans asp.net 4.0

string username = Page.User.Identity.Name; 

et web.config activer le mode d'authentification Windows:

<authentication mode="Windows" /> 

puis j'ai essayé suivante dans l'application console et je suis en mesure d'obtenir ma carte d'identité réseau:

Console.WriteLine(Environment.UserName); 

suis-je manque toutes les étapes de configuration dans l'application Web.

Merci

Répondre

0

C'est le code de production que j'utilise qui va obtenir les informations utilisateur et vérifier également les groupes AD aussi.

créer une variable qui va initialiser la classe et accéder à la méthode dont vous avez besoin qui vous renverra vos informations AD \ Network.

using System.DirectoryServices.AccountManagement; 
using System.Security.Principal; 

public class IsUserInRole 
{ 

public static bool IsInGroup(string groupName) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 
    return myPrincipal.IsInRole(groupName); 
} 


public bool IsInGroup(List<string> groupNames) 
{ 
    var myIdentity = GetUserIdWithDomain(); 
    var myPrincipal = new WindowsPrincipal(myIdentity); 

    if (groupNames.Any(@group => myPrincipal.IsInRole(@group) == true)) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 

} 

public static WindowsIdentity GetUserIdWithDomain() 
{ 
    WindowsIdentity myIdentity = WindowsIdentity.GetCurrent(); 
    return myIdentity; 
} 

public static string GetUserId() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 
    return id(1); 
} 


public static string GetUserDisplayName() 
{ 
    var id = GetUserIdWithDomain().Name.ToString().Split("\\"); 

    var dc = new PrincipalContext(ContextType.Domain, id(0)); 
    var adUser = UserPrincipal.FindByIdentity(dc, id(1)); 
    return adUser.DisplayName; 

} 


} 

Modifier 1

Gven vos commentaires re l'utilisateur de son retour, vous devez ajouter ce qui suit à votre fichier web.config

<system.web> 
    <identity impersonate="true" /> 
    ... 
    </system.web> 

Et puis aussi dans IIS allez à votre site \ demande puis passez à l'autorisation, puis désactivez utilisateur anonyme, Activer ASP.Net et l'authentification Windows Impersonation

enter image description here

Edit 2

Lorsque vous êtes mis au défi pour l'accès cela signifie que vous n'avez pas les permissions définies

+0

j'ai écrit ligne suivante dans l'événement Page_Load « Response.Write (« Nom d'utilisateur: » + WindowsIdentity.GetCurrent(). Name); ' et site Web hébergé dans IIS. J'ai reçu le message suivant dans la page: Nom d'utilisateur: IIS APPPOOL \ TestWeb Au lieu de cela, il devrait afficher mon nom de domaine et ID réseau par exemple Nom d'utilisateur: mydomain \ mynetowrkid – Sukhjeevan

+0

ok, et qu'est-ce que cela vous a donné? Aussi quel est votre configuration IIS re Authentification de vos utilisateurs sur le site. –

+0

après pour obtenir l'authentification Windows Je ne suit dans IIS authentification anonyme désactivé ASP.NET Impersonation Désactivé Authentification Forms Désactivé l'authentification Windows activé et web.config maintenant Si je navigue sur le site Web, Windows Security apparaît et demande mes informations d'identification Windows. J'ai essayé avec mes fenêtres Identifiants mais vont le message suivant: Nom d'utilisateur: mydomain \ mynetworkid Mot de passe: mes fenêtres mot de passe Erreur HTTP 401.1 - Non autorisé – Sukhjeevan