|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Bonjour,
Je suis bloquée sur ce problème depuis quelque temps. J'ai reçu une demande de mon DT pour une MaJ d'une propriété de user dans le LDAP à chaque connexion à notre intranet. Le code qui effectue l'authentification au LDAP utilise des UsersPrincipal qui n'ont pas accès à la propriété LastLogonTimeStamp mais accès en readonly à LastLogon. J'ai regardé et beaucoup de gens utilise DirectoryEntry pour modifiée des propriétés mais je n'arrive pas à modifier celle-ci ni même a bien comprendre comment fonctionne le Directory Entry comparativement au UserPrincipal... Je sais que c'est possible de modifier cette entrée en PHP mais l'est-ce en VB.Net? ou plutot VB lors de l'authentification sur l'intranet. Cordialement Bobuche |
|
|
00
|
|
|
#2 | ||
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Bonjour,
j'ai réussi à accéder aux différentes propriétés et à en modifier durablement. Le problème est sur les lastlogon et lastlogontimestamp qui ont des valeurs assez particluière. J'utilise ce code Code :
Une idée? Cordialement |
||
|
|
00
|
|
|
#3 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2005 Messages : 715 ![]() |
Salut
Ta valeur est en int64. Pour la convertir : http://social.msdn.microsoft.com/For...6-198422838cdf |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
Le principal (jeux de mot pourri) problème que tu auras en voulant utiliser les infos lastlogon et lastlogontimestamp c'est que ces propriétés sont probablement partagées avec l'authentification de windows sur l'active directory. C'est probablement pourquoi elles sont protégées en écriture.
Donc en gros tu ne sais pas si la valeur de lastlogon correspondera à sa dernière ouverture de session sur Windows dans le domaine, sur ton site intranet, voir même à un access à Exchange. Par contre il est possible de définir et utilisé des propriétés personnalisée dans Active Directory (et les autres annuaires LDAP) pour étendre les fonctionnalités de stockage des principals. Tu peux donc utiliser ce moyen pour définir un espace de stockage reservé à ta problèmatique. Par contre il est clair que l'interface "standard" de gestion de l'annuaire de windows ne permettera pas de consulter ces informations (déjà qu'elle ne gère pas toutes les propriétés propres à Windows comme par exemple l'image associé au login utilisateur par ex.). Il faudra donc développer une interface spécifique pour la lecture de ta propriété. Autrement tu stockes cette information ailleurs (base de donnée) en utilisant le guid de l'utilisateur identifié pour faire le lien avec l'annuaire. |
|
|
00
|
|
|
#5 | |
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Citation:
Je suis surement aveugle Cdt Bobuche |
|
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2005 Messages : 715 ![]() |
ceci ne fonctionne pas ?
Code :
|
||
|
|
00
|
|
|
#7 | |||||||
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Citation:
Code :
Et sur la première ligne la valeur "result.Properties("lastLogon")" est une collection de propriété. Si je rajoutes ".Value" il me dit impossible de cast en ULong. Je fais donc ceci: Code :
Ma demande est de voir comment je peux obtenir mais aussi insérer dans la propriété. Je veux pouvoir mettre la date actuelle et l'heure dans cette propriétée. Cordialement Bobuche |
|||||||
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() Ingénieur développement logiciels Inscription : juin 2005 Messages : 715 ![]() |
Un nouveau lien
http://en.csharp-online.net/User_Man...ing_Last_Logon si tu regardes bien il prend le premier element de la liste. |
|
|
00
|
|
|
#9 | |||||
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Citation:
Merci de ton aide. Le problème que j'ai actuellement c'est que toutes les techniques que j'essaye ne marche pas pour une raison. Code :
J'ai réussi à faire ceci: Code :
J'ai obtenu:9223372030412324864 pour 129997993762676702 (date du jour) Je ne comprend pas d'où peu venir cette erreur de conversion... Les propriétés "givenName" qui sont des chaines de caractères je les récupères correctement dans une string... J'ai aussi essayer de convertir directement en date, datetime... Rien a fonctionné a cause du type retourné par cette propriété... Je n'y comprend rien... Surtout que personne n'a ce genre de problème j'ai l'impression... Je suis en Framework 2.0 au passage je ne sais pas si cela influ mais une DLL du Framework 3.5 m'a permis d'utiliser certaine fonctionnalité. Cordialement Bobuche |
|||||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
ENFIN!
Voila un lien qui répond a ma question! Je l'ai trouvé en fouillant sur les largeInteger en VB d'après un autre lien qui m'avais été recommandé par qqun... Bref a trouvé c'est relou! http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx Mon problème est résolu. a part un petit cas de droit sur le serveur que je vais régler avec les admins! merci a tous ceux qui m'ont aidé! Cordialement Bobuche |
|
|
00
|
|
|
#11 |
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Bonjour,
Je reviens vers vous car manuellement la propriété LastLogonTimeStamp ne peut être modifée... Il faut donc passer par une authentification au niveau du LDAP qui requiert certaines conditions que je n'arrive pas a cerner... Quelqu'un aurais une idée? On m'a parlé de liaison simple, requête etc... Mais j'ai réussi a me connecté au ldap avec directory entry et login,mdp, authentification.Secure... J'ai réussi a mettre à jour des propriétés puis CommitChanges... Je ne vois pas ce qu'il faut de plus pour une requete ou liaison simple... Apparement, ce n'est pas le bon mode de fonctionnement. Si jamais quelqu'un à déja effectuer ce genre de traitement merci de m'aider... Cordialement Bobuche |
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Développeur .NET Inscription : décembre 2012 Messages : 28 ![]() |
Bonjour,
Je rajoute la solution au problème: Pour mettre à jour cette propriété il faut effectuer au minimum un bind avec l'AD. En outre, établir une connexion avec un compte précis sur le LDAP suffit à enclencher le processus de mise à jour de la propriété LastLogonTimeStamp. Cependant, cela ne modifie que la propriété du user qui a effectué le bind mais aussi d'un random de 5 -14 par rapport à la valeur actuel du LastLogonTimeStamp! Pour que la mise a jour soit quotidienne et pas en générale au bout de 3 à 5 jour, voir plus, il faut abaissé le 14 à 5 (qui est la valeur minimale!) Je n'ai plus le lien pour cette info que je tire de la documentation MSDN. Cordialement |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com