Connecter une appli à un compte de l'Active Directory [Résolu]

jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 18 août 2014 à 16:00 - Dernière réponse : jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention
- 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
'**********************************************
Afficher la suite 

3 réponses

Répondre au sujet
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 20 août 2014 à 11:53
0
Utile
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"
Commenter la réponse de jimy neutron
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 21 août 2014 à 11:20
0
Utile
Bonjour,

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

Please!
Commenter la réponse de jimy neutron
jimy neutron 491 Messages postés mercredi 1 février 2006Date d'inscription 18 novembre 2016 Dernière intervention - 25 août 2014 à 14:12
0
Utile
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.
Commenter la réponse de jimy neutron

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.