Connecter une appli à un compte de l'Active Directory

Résolu
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 - 18 août 2014 à 16:00
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 - 25 août 2014 à 14:12
Bonjour,

Voila la situation,

J'ai développé une application qui tournera sur des poste dont les utilisateurs sont logués sur l'Active Directory.

Cette application doit écrire dans des fichiers qui sont dans un dossier du réseau dont les droits d'accès sont exclusivement réservés à un compte administrateur de l'AD que j'appelerais pour l'exemple "Alone".

Je souhaiterais donc que mon appli soit reconnue dans l'AD comme étant "Alone" et donc autorisée à y accéder mais pas les utilisateurs logués sur la session.

J'ai lu bon nombre d'exemples sur l'AD. Mais je ne vois pas quel stratégie adopter pour que mon appli soit reconnue comme étant "Alone"

Merci de votre aide,


Jimy

Pensez: Réponse acceptée
'**********************************************

3 réponses

jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
20 août 2014 à 11:53
Bonjour,

Voila où j'en suis:

J'ai créé un dossier uniquement accessible à un compte admin de l'AD: NameSearch , cela fonctionne bien.

Pour l'authentification sur l'AD, cela fonctionne bien aussi.


Public Function FindAccountAD() As Boolean

Try
' connection à l'active directory
Dim Entry As DirectoryEntry
Dim NaneSearch As String = My.Application.Info.AssemblyName
Entry = New DirectoryServices.DirectoryEntry(LdapLink)

Dim Searcher As New DirectorySearcher(Entry)
Searcher.Filter = "(objectClass=user)"


Dim DirEntry As DirectoryEntry

For Each result As SearchResult In Searcher.FindAll
' // On récupère l'entrée trouvée lors de la recherche
DirEntry = result.GetDirectoryEntry
If NameSearch = DirEntry.Properties("SAMAccountName").Value Then
WriteAudit(Date.Now & "; Connexion à l'AD réussie" & " ; " & UCase(Username))
Application.DoEvents()
If AuthenticateUser(LdapLink, NameSearch , Pass) Then
WriteAudit(Date.Now & "; Authentification à l'AD réussie" & " ; " & UCase(Login))
Return True
End If

End If
Next
Return False

Catch ex As Exception
WriteLog(Date.Now & " ; Erreur d'éxecution ; " & System.Reflection.MethodBase.GetCurrentMethod().Name & " ; " & ex.Message)
'MessageBox.Show(ex.Message)
Return False
End Try
End Function

Function AuthenticateUser(ByVal path As String, ByVal user As String, ByVal pass As String) As Boolean
Dim de As New DirectoryEntry(path, user, pass, AuthenticationTypes.Secure)
Try
'run a search using those credentials.
'If it returns anything, then you're authenticated
Dim ds As DirectorySearcher = New DirectorySearcher(de)
ds.FindOne()
Return True

Catch ex As Exception
WriteLog(Date.Now & " ; Erreur d'éxecution ; " & System.Reflection.MethodBase.GetCurrentMethod().Name & " ; " & ex.Message)
Return False
End Try
End Function


puis pour la creation du nouveau dossier:


'Creation du dossier (uniquement accessible à "NameSearch ")
If Not System.IO.Directory.Exists(FolderSaveLink) Then
System.IO.Directory.CreateDirectory(FolderSaveLink)
End If

Et c'est donc dans cette création que ça plante, accés refusé.

Je voudrais comprendre comment la demande d'ecriture ci- dessus dans le dossier peut étre reconnue pas l'AD comme ayant les autorisations du compte "NameSearch"
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
21 août 2014 à 11:20
Bonjour,

Alors, même pas une petite idée pour que mon application ai les droits d'écriture dans un dossier?

Please!
0
jimy neutron Messages postés 491 Date d'inscription mercredi 1 février 2006 Statut Membre Dernière intervention 18 novembre 2016 1
25 août 2014 à 14:12
Salut à tous,

La question est restée sans réponse sur le forum, et ayant trouvé une solution qui fonctionne bien, je la partage.

Pour rappel, l'idée était de démarrer une application avec un compte spécifique (autre que celui de la seesion Windows)qui est le seul à avoir des droits d'écriture sur un dossier.

Pour ce faire, il a suffit de simuler la fonction du "Démarrer en tant que"... avec ce compte spécifique.



Public Sub RunAsApp(ByVal Login as string, ByVal Pwd as string, ByVal Domaine as string)
Try
Dim password As New SecureString()
Dim c As Char
For Each c In Pwd
password.AppendChar(c)
Next c
Dim path As String = My.Application.Info.DirectoryPath & "" 'Chemin de l'exe
Process.Start(path & "MonAppli.exe", Login, password, Domaine)
Me.Dispose()
Catch ex As Exception
MessageBox.Show(ex.Message)
End Try

Personnellement, j'ai créé un autre exe avec un Form invisible qui lance, avec ce code, l'exécutable "en tant que" le compte de l'AD que je souhaite.

Pour info, le compte avec lequel vous êtes loggué sur votre session Windows doit bien sur être connue de l'AD.
0
Rejoignez-nous