Proteger son application, authentification par comptes système [grace a active directory]

Description

Bonjour tout le monde
voici une petite application qui effectue une recherche des objets (Comptes utilisateurs humains du système) par des requettes dans AD et permet de lister les noms des comptes ainsi de vérifier les informations de login (Mot de passe)

Grace a ce code, on peut proteger nos application par l'authentification intégrée du système d'exploitation.

Source / Exemple :


Imports System.Management
Imports System.DirectoryServices

Public Class frmMain

    Private Sub GetSystemUsers()
        Me.Cursor = Cursors.WaitCursor
        Try
            'Lecture du nom de domaine 
            Dim localdomain As String = GetDomain()
            'Lecture du nom de la machine. 
            Dim localpc As String = Environment.MachineName
            Me.lblDomainName.Text += localdomain
            Me.lblMachineName.Text += localpc
            Application.DoEvents()
            'Si le nom de domaine est unconnu. 
            If localdomain = String.Empty Then
                'L'objet dirEntry est un composant ajouté depuis le toolBox (Juste pour une info de +). 
                dirEntry.Path = "WinNT://" + localpc
            Else
                dirEntry.Path = "WinNT://" + localdomain + "/" + localpc
            End If
            For Each child As DirectoryEntry In dirEntry.Children
                'Prendre les utilisateurs humains de la machine
                If child.SchemaClassName = "User" Then
                    Me.cbxUsers.Items.Add(child.Name)
                End If
            Next
        Catch ex As Exception
            MessageBox.Show("Erreur:" + ex.Message, "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
        Me.Cursor = Cursors.Default
    End Sub

    Private Function GetDomain() As String
        Try
            'Requette de recheche sur les informations du système. 
            Dim squery As String = "SELECT * FROM Win32_ComputerSystem"
            'Création d'un objet Management Searcher. 
            Dim mgmtsearch As New ManagementObjectSearcher(squery)
            'Recherche l'entrée Domain dans la liste des infos système. 
            For Each item As ManagementObject In mgmtsearch.Get()
                Return item("Domain").ToString()
            Next
            Return String.Empty
        Catch
            Return String.Empty
        End Try
    End Function

    Private Sub Connect(ByVal userName As String, ByVal password As String)
        Try
            Dim de As New DirectoryEntry("LDAP://localhost/CN=Users;DC=" + lblDomainName.Text, lblDomainName.Text + "/" + userName, password, AuthenticationTypes.Secure)
            Dim test As Object = de.NativeObject  ' Si cette propriété peut etre lu, donc les informations de connexion sont correctes.
            MessageBox.Show("Salut " + userName, "Authentication réussite", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Catch e As Exception
            MessageBox.Show(e.Message, "Erreur:", MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

    Private Sub btnConnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnConnect.Click
        Connect(cbxUsers.Text, txtPassword.Text)
    End Sub

    Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
        Me.Close()
        Application.Exit()
    End Sub

    Private Sub frmMain_Shown(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Shown
        GetSystemUsers()
    End Sub
End Class

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.