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

Windows Discussion :

Se servir du login/passwd window dans une appli


Sujet :

Windows

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Se servir du login/passwd window dans une appli
    Bonjour à tous,

    Voilà, j'ai besoin pour sécuriser l'entrée dans mon appli, de demander un login et un passwd. Et je voudrais changer le passwd tous les 'n' jours, un peu à la window. Donc utilisant Windows2000, existe t’il une fonction qui me permettrait de passer en paramètre un login et un passwd et d'attendre en réponse de cette fonction un Ok, dans le cas du bon couple ou un Ko dans l'autre cas.

    D'avance merci

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Tu veux utiliser l'authentification de Windows ?
    Mais si le user est connecté, il s'est athentifié...
    Précise un peu c'est flou.

  3. #3
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Le but n'est pas de gérer les user déjà connectés, car ceux ci sont déconnectés tous les jours pour les besoins de l'appli. Mais bien de comparer le login et le passwd saisis par l'appli avec celui d'un compte windows existant.
    C'est à dire si nous avons un compte window (session) : xjardin
    avec le passwd : poireau
    Si l'opérateur saisie pour le compte : xjardin et comme passwd : carotte
    la fonction nous renvoie KO

  4. #4
    Membre Expert

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Juin 2003
    Messages
    4 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2003
    Messages : 4 506
    Points : 5 724
    Points
    5 724
    Par défaut
    en gros tu veux récupérer les mots de passe des utilisateurs enregistrés sur ton poste

    Il serait selon moi trés malveillant et peut etre a tord de la plupart d'un systeme d'os de laisser libre court a ce genre d'information( pour des raisons de sécurité)

    Si n'importe qui pouvait se balader en root toute la journée sur son poste on ne serait pa a l'abri de mauvaise utilisation
    " Dis ce que tu veux qui insulte mon honneur car mon silence sera la réponse au mesquin.
    Je ne manque pas de réponse mais : il ne convient pas aux lions de répondre aux chiens ! " [Ash-Shafi'i ]

  5. #5
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 750
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 750
    Points : 10 667
    Points
    10 667
    Billets dans le blog
    3
    Par défaut
    Mais je comprend pas la but.
    L'utilisateur n'a qu'a simplement se logger sous son compte Windows, et tout est réglé.

  6. #6
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bon on reprend pour tout le monde.
    Le but n'est pas d'obtenir le passwd du compte root, ni même d'un autre, qu'on se le dise bien. Mais bien de sécuriser un accès d'appli sur une saisie de login et passwd. Comme dis précédemment, je voudrais dans mon appli, un changement de passwd tous les 'n' jours (et un système de trois mots de passe différents pour le changement de passwd, exactement comme windows lors du changement de passwd). Pourquoi ré inventer la roue puisqu'elle existe, sous la forme de notre cher OS Windows2000.
    Et pour répondre à la question de hw, je peux rentrer en session sur le compte hw sous Windows et me signer en xjardin dans mon appli.
    Donc voilà ma question : Existe t’il une API qui puisse me vérifier, et non pas me donner, le passwd saisie par l'appli du compte xjardin avec celui du compte xjardin Windows, bien sur celui ci existe au sens Windows.

    En espérant avoir été clair pour tout le monde
    :D

  7. #7
    fd
    fd est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 131
    Points : 162
    Points
    162
    Par défaut
    regarde du coté de LSA dans le msdn

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Cette fonction me semble relativement simple à mettre en oeuvre,
    mais je ne l'ai jamais utiliser.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    LogonUser
    The LogonUser function attempts to log a user on to the local computer. The local computer is the computer from which LogonUser was called. You cannot use LogonUser to log on to a remote computer. You specify the user with a user name and domain, and authenticate the user with a clear-text password. If the function succeeds, you receive a handle to a token that represents the logged-on user. You can then use this token handle to impersonate the specified user, or in most cases, to create a process running in the context of the specified user.
    
    BOOL LogonUser(
      LPTSTR lpszUsername,
      LPTSTR lpszDomain,
      LPTSTR lpszPassword,
      DWORD dwLogonType,
      DWORD dwLogonProvider,
      PHANDLE phToken
    );
    Extrait des composants Delphi JVCL,
    fichier JclMiscel.pas
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    procedure CreateProcAsUserEx(const UserDomain, UserName, Password, CommandLine: string;
      const Environment: PChar);
    const
      // default values for window stations and desktops
      CreateProcDEFWINSTATION = 'WinSta0';
      CreateProcDEFDESKTOP    = 'Default';
      CreateProcDOMUSERSEP    = '\';
    var
      ConsoleTitle: string;
      Help: string;
      WinStaName: string;
      DesktopName: string;
      hUserToken: THandle;
      hWindowStation: HWINSTA;
      hDesktop: HDESK;
      StartUpInfo: TStartUpInfo;
      ProcInfo: TProcessInformation;
    begin
    
      // Step 1: check for the correct OS version
      CheckOSVersion;
    
      // Step 2: logon as the specified user
      if not LogonUser(PChar(UserName), PChar(UserDomain), PChar(Password),
        LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hUserToken) then
      begin
        case GetLastError of
          ERROR_PRIVILEGE_NOT_HELD:
            raise EJclCreateProcessError.CreateResRecFmt(@RsCreateProcPrivilegeMissing,
              [GetPrivilegeDisplayName(SE_TCB_NAME), SE_TCB_NAME]);
          ERROR_LOGON_FAILURE:
            raise EJclCreateProcessError.CreateResRec(@RsCreateProcLogonUserError);
          ERROR_ACCESS_DENIED:
            raise EJclCreateProcessError.CreateResRec(@RsCreateProcAccessDenied);
        else
          raise EJclCreateProcessError.CreateResRec(@RsCreateProcLogonFailed);
        end;
      end;
    
      // Step 3: give the new user access to the current WindowStation and Desktop
      hWindowStation:= GetProcessWindowStation;
      WinStaName := GetUserObjectName(hWindowStation);
      if WinStaName = '' then
        WinStaName := CreateProcDEFWINSTATION;
    
      if not SetUserObjectFullAccess(hWindowStation) then
      begin
        CloseHandle(hUserToken);
        raise EJclCreateProcessError.CreateResRecFmt(@RsCreateProcSetStationSecurityError, [WinStaName]);
      end;
    
      hDesktop := GetThreadDesktop(GetCurrentThreadId);
      DesktopName := GetUserObjectName(hDesktop);
      if DesktopName = '' then
        DesktopName := CreateProcDEFDESKTOP;
    
      if not SetUserObjectFullAccess(hDesktop) then
      begin
        CloseHandle(hUserToken);
        raise EJclCreateProcessError.CreateResRecFmt(@RsCreateProcSetDesktopSecurityError, [DesktopName]);
      end;
    
      // Step 4: set the startup info for the new process
      ConsoleTitle := UserDomain + UserName;
      FillChar(StartUpInfo, SizeOf(StartUpInfo), #0);
      with StartUpInfo do
      begin
        cb:= SizeOf(StartUpInfo);
        lpTitle:= PChar(ConsoleTitle);
        Help := WinStaName + '\' + DeskTopName;
        lpDesktop:= PChar(Help);
      end;
    
      // Step 5: create the child process
      if not CreateProcessAsUser(hUserToken, nil, PChar(CommandLine),
        nil, nil, False, CREATE_NEW_CONSOLE or CREATE_NEW_PROCESS_GROUP,
        Environment, nil, StartUpInfo, ProcInfo) then
      begin
        case GetLastError of
          ERROR_PRIVILEGE_NOT_HELD:
            raise EJclCreateProcessError.CreateResRecFmt(@RsCreateProcPrivilegesMissing,
              [GetPrivilegeDisplayName(SE_ASSIGNPRIMARYTOKEN_NAME), SE_ASSIGNPRIMARYTOKEN_NAME,
              GetPrivilegeDisplayName(SE_INCREASE_QUOTA_NAME), SE_INCREASE_QUOTA_NAME]);
          ERROR_FILE_NOT_FOUND:
            raise EJclCreateProcessError.CreateResRecFmt(@RsCreateProcCommandNotFound, [CommandLine]);
          else
            raise EJclCreateProcessError.CreateResRec(@RsCreateProcFailed);
        end;
      end;
    
      // clean up
      CloseWindowStation(hWindowStation);
      CloseDesktop(hDesktop);
      CloseHandle(hUserToken);
    
      // if this code should be called although there has
      // been an exception during invocation of CreateProcessAsUser,
      // it will quite surely fail. you should make sure this doesn't happen.
      // (it shouldn't happen due to the use of exceptions in the above lines)
      CloseHandle(ProcInfo.hThread);
      CloseHandle(ProcInfo.hProcess);
    end;

  9. #9
    Candidat au Club
    Inscrit en
    Mai 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Merci laurent pour tes lumières, ainsi qu'a tous ceux qui m'on lu.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Authentification Windows dans une appli Silverlight
    Par dtcSearch dans le forum Silverlight
    Réponses: 1
    Dernier message: 17/01/2014, 11h09
  2. Authentification windows dans une appli web ASP.NET
    Par paladice dans le forum ASP.NET
    Réponses: 2
    Dernier message: 01/08/2013, 09h16
  3. Réponses: 8
    Dernier message: 18/09/2011, 22h49
  4. [Débutant] Supprmier bouton Windows dans une appli pour appareil Mobile
    Par fortydub dans le forum Langages
    Réponses: 0
    Dernier message: 18/07/2011, 11h37

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