Hauptmenü

Kontakte aus zweiter Quelle aktualisieren

Begonnen von ChristianLoeschner, 15.08.2024 11:12:49

⏪ vorheriges - nächstes ⏩

ChristianLoeschner

Moin zusammen,
Ich stehe gerade vor einer neuen Herausforderung. Mein KIX18 macht die Authentifizierung via AD-Anbindung.
Nun habe ich noch weitere AD's bzw ldap server, von denen ich zu meinen Nutzern gerne ergänzende Informationen abrufen möchte.
Um das mal zu verdeutlichen:
Das Login-AD liefert mir username, Mail-Adresse, etc.
Der weitere LDAP Server kann mir z.b. die Personalnummer liefern. 
Ich würde nun gerne (z.B. mit einem CRON-job) meine Daten abgleichen und in KIX dann auch die Personalnummer zur Verfügung stellen.

Hat jemand eine Idee, wie ich sowas bewerkstelligen könnte?

Beste Grüße

Frank Niethardt

Moin Christian,

KIX Pro bietet eine LDAP Synchronisation zusätzlich zur Authentifizierung. Darüber kannst du das einrichten.
LDAP/AD-Synchronisation - KIX 18 Administration (DE) (kixdesk.com)

Alternativ kannst du ja in der Sysconfig unter "Authentication###000-Default" auch mehrere Config Blöcke anlegen mit unterschiedlichen ADs. 
Authentifizierung/Autorisierung und Anbindung Active Directory - KIX 18 Administration (DE) (kixdesk.com)

Auch hier bietet wiederum KIX Pro den CronJob, zu finden im Sysconfig Schlüssel "Daemon::SchedulerCronTaskManager::Task###AuthSynchronize".

Viele Grüße
Frank

ChristianLoeschner

Hallo Frank,
vielen Dank für deine Antwort. Die LDAP-Syncronisation habe ich vorhin  auch gefunden und teste das gerade... Leider noch nicht von Erfolg gekrönt, da ich immer die Meldung bekomme: "Could not connect to LDAP <Connection timed out>!"
Ich habe die Verbindung mal mit einem PowerShell Script getestet und da geht es.. Muss jetzt mal schauen, warum KIX die Verbindung nicht akzeptiert...

Gruß Christian

ChristianLoeschner

Also:
Mir stellt sich jetzt bei der Konfiguration des Jobs die Frage, wie ich den Authentication Type setze. Ich habe einen LDAP den ich mit "None" abfragen will und einen,  den ich mit "Secure" abfragen muss. Ich habe jetzt versucht, in den Parametern folgendes zu ergänzen:
"authentication": "None",Aber das führt nicht zum Erfolg.
ich bekomme weiter den Timeout... Leider wird dieses Thema auch im Handbuch nicht beschrieben.

Hat jemand eine Idee?

Gruß Christian

PS: Ich wünsche ein schönes Wochenende!

ChristianLoeschner

So. Ich mache Fortschritte..
Ich kann jetzt beide LDAP Server erstmal erreichen.
Jetzt bekomme ich bei einem Server folgende Rückmeldung:

Bind failed! (8) 00002028: LdapErr: DSID-0C090275, comment: The server requires binds to turn on integrity checking if SSL\TLS are not already active on the connection, data 0, v3839
Kann mir jemand weiterhelfen?

Gruß Christian

Beatrice Müller

Hi Christian,

schick mal bitte die Konfiguration (natürlich mit angewandelten Daten).
Die Meldung kommt von deinem AD zurück und besagt, dass eine verschlüsselte Verbindung notwendig ist.
Verwendest du ldaps und hast du ggf. Zertifikate eingespielt?

Die Herstellung der Kommunikationswege zwischen den Systemen ist Aufgabe der Infrastruktur.
KIX greift dabei nur auf aktive Verbindungen zu.
Wende dich mit den Fehlermeldungen an deinen Administrator. Ggf. finden sich noch Hinweise in den Logs.

Viele Grüße
Beatrice

ChristianLoeschner

#6
Hallo.
Anbei die Konfiguration des Jobs:
AlwaysFilter
(sAMAccountName=*MaxMustermann*)
BaseDN
OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz
Debuggen
1
DestCharset
utf-8
DryRun
1
Host
[
"xxx.yyy.zzz"
]
PageSize
0
Parameter
{"port":"389","version":"3","timeout":"60","async":"0"}
SearchUserDN
CN=MaxMustermann,OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz
SearchUserPw
xxxxxxxxxxx
UID
samaccountname
UserAttr
UID
Contact/User Sync Map
{"Email":"mail", "Title":"title", "Firstname":"givenname", "Lastname":"sn", "Street":"streetAddress", "City":"l", "Zip":"postalCode", "Phone":"telephoneNumber", "Mobile":"mobile",.....

Ich habe die Abfrage zuvor mit einem anderen Rechner aus dem selben Netz mittels eines Powershell scriptes getestet. hier mal das Script:
$benutzerName = Read-Host "Benutzername"
$login = Read-Host "Loginname"
$passSec = read-host "passwort" -AsSecureString
$auth = [System.DirectoryServices.AuthenticationTypes]::Secure

$pass = [Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($passSec))


$ldapFilter = "(sAMAccountName=*$benutzerName*)"
$searchRoot = "LDAP://xxx.yyy.zzz"
$searcher = New-Object DirectoryServices.DirectorySearcher
$searcher.SearchRoot = New-Object DirectoryServices.DirectoryEntry($searchRoot, $login, $pass, $auth)
write-host ($searchRoot, $login, $pass, $auth)
$searcher.Filter = $ldapFilter
$searcher.PropertiesToLoad.Clear()
try {
$results = $searcher.FindAll()
write-host "ergebnisse: "$results.Count
if ($results -ne $null){
foreach ($result in $results){
Write-Host "Benutzer gefunden ======================================================="
foreach ($property in $result.Properties.PropertyNames){
$values = $result.Properties[$property]
write-host "$property : $values"
}
}
}else{
write-host "Benutzer nicht gefunden"}
}catch{
write-host $_.Exception.Message
}

Für den KIX Server sind sowohl der Port 389 als auch der Port 636 freigeschaltet.

Verwende ich in KIX bei den Parametern als Port 636, bekomme ich die Meldung:
Bind failed! (1) I/O Error Connection reset by peer

Vielen Dank für die Unterstützung!

Beatrice Müller

Versuche es vorerst mit dem Tool ldapsearch (sowohl Port 398 als auch 636) - auf dem KIX-Host:
ldapsearch -xLLL -h "xxx.yyy.zzz" -D "CN=MaxMustermann,OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz" -b "OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz" -w "xxxxxxxxxxx"ldapsearch -xLLL -H "ldaps://xxx.yyy.zzz:636" -D "CN=MaxMustermann,OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz" -b "OU=Usr,OU=Customer,DC=xxx,DC=yyy,DC=zzz" -w "xxxxxxxxxxx"
Verwende alternativ auch einmal die IP-Adresse um ein DNS-Problem auszuschließen.

ChristianLoeschner

#8
Nach Rücksprache mit meinen Admins, ist ldapsearch nicht installiert (und wird es auch nicht). Daher kann ich diesen Test leider nicht durchführen.

Ich habe allerdings mal die Verbindung zum LDAP unter die Lupe genommen und versucht, explizit eine LDAPS verbindung herzustellen... Diese wird vom Server abgelehnt.
Lediglich Verbindungen über ldap mit authenticate secure werden angenommen.

Beatrice Müller

Das macht es natürlich schwierig.
Wir sieht es denn aus mit openssl (Zertifikatsprüfung) aus?
openssl s_client -connect xxx.yyy.zzz:636
openssl s_client -CApath /etc/ssl/certs/ -connect xxx.yyy.zzz:636