IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Autorisation gérée par ASP.NET C#


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Par défaut Autorisation gérée par ASP.NET C#
    Bonjour à tous,

    J'ai une petite question concernant les autorisations par rapport aux connexions d'un utilisateur sur mon application. On s'y connecte par authentification Windows à travers Active Directory.
    L'admin aura tous les droits tandis que les autres utilisateurs (inscrits et dans un groupe d'active directory) ne pourront voir que certaines rubriques de mon site.

    J'aimerai savoir comment traduire en C#:
    "Si administrateur alors:
    Requête SQL donnant tous les droits
    Si utilisateurs du groupe alors:
    Autres requêtes d'affichage SQL
    Sinon:
    Pas d'affichage du site web"

    ça fait très basique mais j'aimerai tout simplement savoir si on peut utiliser le nom d'un groupe active directory dans le code ASP.NET C# pour gérer les autorisations et si oui comment? Sachant que la connexion se fait par authentification Windows.
    Au niveau des requêtes, je sais lesquelles écrire. Il me manque juste la "traductions" des instructions If/Else en fait...

    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Si tu n'utilises que l'authentification Windows alors c'est assez simple. Tu peux t'inspirer du code suivant :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    var context = new PrincipalContext(ContextType.Domain, "TONDOMAINE");		// On crée un contexte pour le domaine
    var user = UserPrincipal.FindByIdentity(context, "TonUserName");		// On cherche l'utilisateur
    var groupAdmin = GroupPrincipal.FindByIdentity(context, "LeGroupeAdmin");	// On cherche le groupe Admin
    var groupIT = GroupPrincipal.FindByIdentity(context, "LeGroupeIT");		// On cherche le groupe IT
     
    if (user != null && user.IsMemberOf(group)) // On vérifie si l'utilisateur fait partie du groupe Admin
    {
    	// Il en fait partie, donc on fait quelque chose ici...
    }
    else if (user != null && user.IsMemberOf(groupIT)) // Sinon on vérifie si l'utilisateur fait partie du groupe IT
    {
    	// Il en fait pas partie, donc on fait autre chose ici...
    }
    else	// Sinon, s'il ne fait partie d'aucun groupe
    {
    	// On fait autre chose ici...
    }
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Par défaut
    Wahou Merci DotNetMatt, ça m'aide beaucoup!!

    Juste une petite question (encore), pour le var user, comment fait-on pour récupérer directement le nom d'utilisateur que l'utilisateur rentre directement?

    Et j'ai une seconde question aussi.. Que dois-je mettre à la place de PrincipalContext(); UserPrincipal; et GroupPrincipal? Est-ce que ce sont des méthodes qu'il faut que je code? Car sinon, ça me le souligne me demandant une directive using, sauf que rien n'est proposé comme référence...

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Pour la première question voir ma dernière réponse.

    Pour le reste, il faut ajouter une référence dans ton projet vers l'assembly System.DirectoryServices.AccountManagement.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2015
    Messages : 26
    Par défaut
    Excuse moi, j'éditais mon message au moment où tu m'as répondu. Merci beaucoup pour ton aide! J'ai juste une petite erreur quand je lance mon application à partir de IIS qui est:

    System.DirectoryServices.DirectoryServicesCOMException: Une erreur d’opération s’est produite.

    Pourtant quand je lance depuis mon visual studio, cela fonctionne nickel..

    En tout cas, je te remercie de ton aide, j'ai appris et surtout compris vachement de trucs!

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    L'utilisateur de ton application pool n'a pas être pas les droits suffisant pour intérroger l'AD...

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Billets dans le blog
    3
    Par défaut
    Tu peux le récupérer comme ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var userLogin = Page.User.Identity.Name;

    En s'assurant que IsAuthenticated vaut True, il est aussi possible d'utiliser :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var userLogin = HttpContext.Current.User.Identity.Name;
    Ou encore ceci :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    var userLogin = HttpContext.Current.Request.LogonUserIdentity.Name;

    Dans tous les cas en principe tu devrais récupérer le domaine et le login sous cette forme : "DOMAIN\Login", donc il ne faut pas oublier de supprimer le domaine.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

Discussions similaires

  1. IE 10 non reconnu par asp.Net
    Par Naceur84 dans le forum ASP.NET
    Réponses: 0
    Dernier message: 12/12/2012, 12h09
  2. interpretation de <%= item.IdMenu%> par asp.net
    Par Namzicos dans le forum ASP.NET
    Réponses: 3
    Dernier message: 01/02/2010, 20h30
  3. Réponses: 1
    Dernier message: 06/08/2009, 11h15
  4. Réponses: 0
    Dernier message: 13/04/2009, 17h44
  5. probleme d'envoi de mail par asp.net
    Par tortuegenie dans le forum ASP.NET
    Réponses: 3
    Dernier message: 10/03/2008, 09h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo