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 Discussion :

récupérer le résultat d'un "Query User" dans une page ASP ?


Sujet :

ASP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut récupérer le résultat d'un "Query User" dans une page ASP ?
    Bonjour à tous,

    J'ai un petit souci actuellement pour mettre en place des accès RDP via une page web en ASP.

    J'utilise un compte générique avec un compteur qui s' incrémente à chaque chargement de la page ASP par l'utilisateur.
    Je voudrais tester si le compte générique qui va etre utilisé pour la connexion RDP, est déja connecté ou non sur le serveur ...

    En ligne de commande, l'info peut etre récupérer en faisant un "query user ..." sur le serveur. mais il arrive lorsque le serveur est surchargé que l'incrémentation du compteur ne se fait pas correctement, et donc un nouvel utilisateur qui charge la page ASP pourrait se connecter avec le même compte que l'utilisateur précédemment connecté, et pourrait donc lui "voler" sa session RDP...

    Comment faire ce test depuis une page asp, afin de pouvoir utiliser un autre compte générique dans le cas ou le premier serait déja connecté ?

    Merci de m'apporter vos lumières ...

    ps : petites précisions ... c'est sur du windows2003 avec IIS ...

  2. #2
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Salut,

    Tu peux préciser:
    en place des accès RDP via une page web en ASP
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    Pour donner des prècisions,

    On utilise une page ASP dans lequel on utilise le module "BtnConnect" qui permet de lancer une connexion RDP ( bureau à distance ) avec certains paramètres définis dans la page ASP ( adresse du serveur TS, compte et mot de passe de connexion, ... )

    Le but étant de pouvoir donner accès aux utilisateurs de différents sites distants à des applications lancés sur des serveurs TS en bureau à distance via un lien dans IE...

    Les comptes génériques utilisés sont paramètrés dans l'AD pour lancer une application bien définie sur les serveurs TS ( plusieurs serveurs TS en Round Robin ).

    Le problème, c'est que la page ASP gère un compteur qui s'incrémente pour pouvoir passer un compte générique différent pour chaque utilisateur qui charge la page ... or, en cas de charge CPU importante sur le serveur, il arrive que l'incrémentation du compteur ne se fasse pas ... un utilisateur peut alors se connecter avec un compte générique déja utilisé par un autre utilisateur ! et lui vole sa session ... ce qui est un problème de sécurité évident, chaque utilisateur devant s'authentifier dans l'application, ce qui lui donne accès à des modules différents dans l'appli...

    Je veux donc tester dans la page ASP si un compte est déja connecté en RDP sur le serveur TS ( commande Query User en ligne de commande )... afin de pouvoir passer un autre compte "non connecté" en paramètre dans la connexion RDP.

    J'espère avoir été plus clair ...

  4. #4
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Interessant,

    Tu peux mettre un peu de code? RDP c'est le Remote Desktop de windows?

    Sinon, je vois pas trop l'interet de la procedure. Est-ce que le serveur est dans un domaine? Le utilisateurs n'ont pas un compte windows chacun?

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    il y a plusieurs domaines avec des relations d'approbations.
    Le but est de donner accès à une application en Bureau à distance à des utilisateurs ayant des comptes dans ces domaines multiples, sans qu'ils aient besoin de s'authentifier avec leur compte sur le serveur TS.
    On veut éviter aux utilisateurs de devoir s'authentifier plusieurs fois, systeme + appli.

    Ils ont donc un lien dans leur IE vers la page ASP un ensemble de serveurs TS en Round Robin DNS. Cette page ASP lance la connexion RDP avec un compte générique (syntaxe : g-appli-xxx ou xxx est un compteur de 1 à 999 ) présent dans l'AD.

    La page asp incrémente le compteur à chaque chargement.

    J'aimerais tester maintenant, avant de lancer le connexion RDP avec le compte générique fourni par l'asp, si une session TS est déja ouverte avec ce compte sur le serveur... pour éviter de "voler" la session TS d'un utilisateur déja connecté et authentifier dans l'application !

    --> Question :
    Comment afficher dans une page ASP exécutée sur le IIS d'un serveur TS Win2003 les utilisateurs connectés au serveur ? ... Bien sur sans passer par un ficher texte intermédiaire !! je veux du temps réél !!
    Il me faut une requete du style :
    - L'utilisateur "toto" est t'il loggué sur le serveur TS ? si oui retourne 1, sinon retourne 0 !


    Si qqn a la solution ... je suis preneur ... ;-)

  6. #6
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par mrpochpoch Voir le message
    L'utilisateur "toto" est t'il loggué sur le serveur TS ?
    Ben ok mais
    Citation Envoyé par mrpochpoch Voir le message
    Cette page ASP lance la connexion RDP avec un compte générique
    Comment veux-tu différencier toto de titi avec un compte générique? Peut-être l'adresse IP?

    IIS n'a à sa portée que les variables "serveur": resquest.ServerVariable()

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    bon, je m'exprime peut etre mal ...

    On va faire un exemple :

    3 utilisateurs User1, User2 et User3 sont sur 3 sites différents, dans 3 domaines AD différents.

    User1 lance IE, et se rend sur la page "http:\\appli.masociete.fr\appli.asp"
    La page ASP regarde la variable i en mémoire, voit qu'elle vaut 10, et lance la connexion RDP avec le compte générique "g-user-010" présent dans l'AD sur le site du serveur.
    La page ASP incrémente la variable, désormais la variable compteur i vaut 11.
    L'application se lance donc pour User1, qui est connecté au serveur TS avec un compte "g-user-010". User1 s'authentifie dans l'appli et travaille...

    User2 lance IE, et se rend sur la page "http:\\appli.masociete.fr\appli.asp"
    La page ASP regarde la variable compteur i en mémoire, voit qu'elle vaut 11, et lance la connexion RDP avec le compte générique "g-user-011" présent dans l'AD sur le site du serveur.
    La page ASP incrémente la variable, désormais la variable i vaut normalement 12. L'application se lance donc pour User2, qui est connecté au serveur TS avec un compte "g-user-011". User2 s'authentifie dans l'appli et travaille...

    Le problème, c'est que User3 a lancé IE au même moment que User2, et à ce moment là, le serveur TS était un peu surchargé au niveau CPU ...
    L'incrémentation du compteur n'a pas encore été effectuée !
    La page ASP renvoie donc la valeur 11 pour la variable compteur... La connection RDP se fait donc avec le login utilisateur "g-user-011" ...

    Or ce compte utilisateur "g-user-011" est déja connecté au serveur et a déja une session ouverte ! L'utilisateur User2 s'est peut etre même déjà authentifié dans l'application...

    La session RDP de l'utilisateur User3 se lance avec le compte "g-user-011"... User3 est étonné puisqu'il arrive sur l'application en visualisant les données d'un autre sans avoir eu besoin de s'authentifier !!
    En fait, il a "volé" la session de User2 !!!



    Voila ce que je veux éviter, en testant dans la page ASP si un compte est déja connecté au serveur TS en RDP ... si c'est le cas, alors la page ASP recalcule une autre valeur pour le compteur, reteste si le compte est connecté, ... et ainsi de suite jusqu'à ce qu'on obtienne un compte non loggué !


    Du coup ... la question :
    Comment afficher dans une page ASP éxécutée sur le serveur TS la liste des User connectés en RDP à ce même serveur TS ... ;-)


    PS : Tout ceci bien sur dans l'attente de la mise en place d'une solution sous Citrix ... mais qui ne pourra etre mis en place qu'en début d'année prochaine !

  8. #8
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    ok, je comprend mieux.

    Question: comment gères-tu l'incrémentation de "i"? Un peu de code?

    Remarque: dans une session remote desktop l'onglet utilisateur du gestionnaire des tâches indiquent la liste des utilisateurs connectés. Il faudrait savoir comment récupérer cette info. Au besoin créer toi même un objet COM avec du .Net.

    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  9. #9
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    c'est justement ce que j'aimerais savoir ...

  10. #10
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Et.......
    Citation Envoyé par Immobilis Voir le message
    Question: comment gères-tu l'incrémentation de "i"? Un peu de code?
    "Winter is coming" (ma nouvelle page d'accueil)

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    If Application("Counter") = 0 then
    Randomize
    Application("Counter") = Int((Rnd * 499) + 1)
    End if
     
    If Application("Counter") < 499 then
    Application("Counter") = Application("Counter") + 1
    Else
    Application("Counter") = 1
    End if
    ça te fait boucler ton compteur entre 1 et 500 dans nune variable "Counter" gérée en RAM dans le serveur IIS ...
    Si la variable "counter" n'est pas initialisée (valeur 0) , il y a un random dans la plage 1 à 500 !

    ;-)

  12. #12
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Les variables d'application doivent etre assignées selon une méthode précise pour eviter les accès concommitants.
    Code : 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
    <%
    Application.Lock
    Application("Counter") = Int((Rnd * 499) + 1)
    Application.Unlock
     
    If Application("Counter") < 499 then
        Application.Lock
        Application("Counter") = Application("Counter") + 1
        Application.Unlock
    Else
        Application.Lock
        Application("Counter") = 1
        Application.Unlock
    End if
     
    %>
    A+
    "Winter is coming" (ma nouvelle page d'accueil)

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    ok, merci.
    J'ai mis en place le lOCK et le UNLOCK pour éviter les accès simultanés à la variable.
    Juste une question : que se passe t'il lorsque la page ASP s'éxécute simultanément pour 2 utilisateurs différents. La seconde exécution de la page attend que la variable soit "délockée" par le premier processus d'éxécution avant de pouvoir y accéder à son tour ? c'est totalement transparent pour l'utilisateur qui visualise le résultat de la page ASP dans son IE ? ou y a t'il une erreur qui est générée ?



    Par contre, ça ne répond pas à ma demande initiale ... ;-)

    Je cherche toujours à récupérer la liste des users connectés en TS ( RDP ) sur le serveur, afin de tester si le compte que je vais utiliser pour la connexion est déja utilisé, ou non !

    le but, c'est de générer un compte de connexion avec un random, et de tester si le compte généré est déja connecté, ou non. ;-)

    a+

  14. #14
    Expert confirmé
    Avatar de Immobilis
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2004
    Messages
    6 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 559
    Par défaut
    Citation Envoyé par mrpochpoch Voir le message
    Par contre, ça ne répond pas à ma demande initiale ... ;-)
    Peut-être pas mais ça devrait résoudre le pb de "vol" de session, non?
    "Winter is coming" (ma nouvelle page d'accueil)

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 8
    Par défaut
    J'espère effectivement que ça permettra de fournir une valeur de compteur unique, et donc un compte AD de connexion unique, à chaque utilisateur.

    Cependant, Si un utilisateur fait mumuse avec la touche F5 et raffraichit la page ASP de nombreuses fois, on va très vite faire le tour du compteur ( on tourne sur 500 comptes AD ) et revenir sur des comptes déja utilisés ... :-(

    C'est pourquoi je voudrais tester si le compte AD est connecté ou non, avant de lancer la connexion ...

    Merci de ton aide. ;-)

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/10/2011, 16h56
  2. Réponses: 0
    Dernier message: 27/05/2008, 11h40
  3. Réponses: 1
    Dernier message: 12/01/2008, 22h45
  4. récupérer le user name dans une requete
    Par amchap dans le forum C#
    Réponses: 17
    Dernier message: 19/09/2007, 18h50

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