-
AutorBeiträge
-
-
14. September 2023 um 12:12 Uhr - Views: 479 #15623
Moin,
ich versuche gerade eine Docker-Installation zu realisieren, die Kerberos nutzt, um sich an einem AD zu authentifizieren.
Die Installation soll allerdings ausschließlich intern genutzt werden und das auch von nicht Domänen-Mitgliedern, daher ist reines HTTP gewünscht.
Ich habe daher die ENV-Vorlage HTTPS_Kerberos gewählt und in der CUSTOM_NGINX den Redirect entfernt. Das scheint aber leider keinerlei Auswirkungen zu haben, es wird immer noch von HTTP auf HTTPs umgeleitet.
Wie kann ich wohl in der Konfiguration den Redirect korrekt deaktivieren ?
Gruß und Danke
-
14. September 2023 um 12:43 Uhr #15625
Hallo Bernhard Bergmann,
nach der Anleitung sollte alles laufen. Punkt 4 kann dabei übersprungen werden
https://doc.otobo.de/manual/installation/10.1/de/content/installation-docker.html
Schau mal in den folgenden Post, da habe ich eine Install Anleitung verfasst.
https://otobo.io/de/forums/topic/docker-installation-nicht-moeglich/#post-15125 da ist eine
Die AD Authentifizierung für Agenten bzw. Customer, wurde auch bereits im Forum beschrieben.
Gruß Marcel
-
14. September 2023 um 13:20 Uhr #15626
Hallo Marcel,
erstmal vielen Dank für die schnelle Antwort.
Die Anleitung habe ich für die erste Installation genutzt, lief auch einwandfrei, nur HTTP.
Dann wollte ich die AD Anbindung machen, die Anleitung dazu habe ich auch gefunden (https://doc.otobo.de/manual/installation/10.1/de/content/sso-kerberos.html), nur da scheint dann HTTPs die Grundlage zu sein, es findet sich ja auch keine ENV-Vorlage für HTTP und Kerberos. Und damit kam dann der Redirect von HTTP auf HTTPs ins Spiel.
-
14. September 2023 um 13:25 Uhr #15627
Per LDAP, da intern, ist keine Lösung?
Gruß Marcel
-
14. September 2023 um 13:43 Uhr #15628
In der Anleitung oder Hier mal nach LDAP bzw Agenten-Authentifizierungs-Backend suchen.
Agenten-Authentifizierungs-Backend
Die Tabelle users enthält standardmäßig Ihre Agentendaten. Sie können einen Verzeichnis-Server (LDAP/Active Directory) zur Authentifizierung an Ihre Installation anhängen. Um dies zu erreichen, kopieren Sie den folgenden Block aus der Defaults.pm und fügen ihn in die Config.pm ein.Um dies zu erreichen per SSH (putty) auf dem Server einloggen und die Datei editieren.
sudo docker exec -it otobo_web_1 bash
cd /opt/otobo/Kernel
mit dem Editor vi oder nano die Datei Config.pm bearbeiten
Gruß Marcel
-
18. September 2023 um 11:49 Uhr #15639
Hallo Marcel,
vielen Dank für Deinen Input. Kerberos legen wir zu den Akten, ich habe es heute mal mit der LDAP-Variante versucht. Funktioniert leider auch nicht so auf Anhieb.
ich bekomme ständig im Log des Web-Containers einen „AcceptSecurityContext error, data 52e“ und habe bereits in der Config.pm diverse Schreibweisen des Benutzernamens ausprobiert.
Auch wird nach der Anpassung der Config.pm die lokale Anmeldung unterbunden, dazu habe ich auf die Schnelle aber leider auch nichts gefunden, um das parallel zu ermöglichen.
-
20. September 2023 um 16:22 Uhr #15647
Hallo,
bei 52e klingelt bei mir „First bind failed“, was eigentlich immer bedeutet, dass der SearchUser fehlt, oder Benutzername/Passwort falsch ist.
Viele Grüße
Stefan
-
-
18. September 2023 um 12:57 Uhr #15640
Hallo Bernhard,
hier mal meine Testdatei. Haben aber aktuell kein Ldap angebunden.
###############################################################################################
# LDAP Anbindung Anfang #
##########################################################################################################################################
# Customer User LDAP Backend and Settings #
###########################################$Self->{CustomerUser1} = {
Module => ‚Kernel::System::CustomerUser::LDAP‘,
Params => {
#Host => ‚ldaps://ad-server.domain.local‘,
Host => ‚ldap://ldap-host‘,
BaseDN => ‚DC=standort,DC=int‘,
SSCOPE => ’sub‘,
#UserDN => ‚cn=otrs user, ou=User_Special, dc=domain, dc=local‘,
UserDN => ‚CN=ldap-user,OU=Service_Accounts,OU=User,OU=IT,OU=Site01,DC=standort,DC=int‘,
UserPw => ‚ldap-kennwort‘,
#AlwaysFilter => ‚(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*)(sn=*)(givenname=*)(!(givenname=\00)))‘,
# this option. e. g. AlwaysFilter => ‚(mail=*)‘ or AlwaysFilter => ‚(objectclass=user)‘
#AlwaysFilter => ‚(objectclass=user)(mail=*)‘,
AlwaysFilter => ‚(&(objectCategory=person)(objectClass=user)(!(userAccountControl:1.2.840.113556.1.4.803:=2))(mail=*)(sn=*)(givenname=*)(!(givenname=\00)))‘
SourceCharset => ‚utf-8‘,
DestCharset => ‚utf-8‘,
Params => {
# sslversion => ‚tlsv1_2′,
#},
port => 389,
timeout => 120,
async => 0,
version => 3,
},
},
CustomerKey => ’sAMAccountName‘,
CustomerID => ‚mail‘,
CustomerUserListFields => [‚cn‘, ‚mail‘],
CustomerUserSearchFields => [’sAMAccountName‘, ‚cn‘, ‚mail‘, ’sn‘, ‚mobile‘, ‚telephonenumber‘],
CustomerUserPostMasterSearchFields => [‚mail‘],
CustomerUserNameFields => [‚givenname‘, ’sn‘],
# CacheTTL => 1200,
Map => [
[ ‚UserSalutation‘, ‚Title‘, ‚title‘, 1, 0, ‚var‘ ],
[ ‚UserFirstname‘, ‚Firstname‘, ‚givenname‘, 1, 1, ‚var‘ ],
[ ‚UserLastname‘, ‚Lastname‘, ’sn‘, 1, 1, ‚var‘ ],
[ ‚UserLogin‘, ‚Login‘, ’sAMAccountName‘, 1, 1, ‚var‘ ],
[ ‚UserEmail‘, ‚Email‘, ‚mail‘, 1, 1, ‚var‘ ],
[ ‚UserCustomerID‘, ‚CustomerID‘, ‚mail‘, 0, 1, ‚var‘ ],
[ ‚UserPhone‘, ‚Phone‘, ‚telephonenumber‘, 1, 0, ‚var‘ ],
[ ‚UserMobile‘, ‚Mobile‘, ‚mobile‘, 1, 0, ‚var‘ ],
[ ‚UserAddress‘, ‚Address‘, ‚postaladdress‘, 1, 0, ‚var‘ ],
],
};#################################################################################################
# —————————————————- #
# LDAP AUTH #
# —————————————————- ## LDAP Backend
$Self->{AuthModule} = ‚Kernel::System::Auth::LDAP‘;
$Self->{‚AuthModule::LDAP::Host‘} = ‚ldap://ldap-host‘;
$Self->{‚AuthModule::LDAP::BaseDN‘} = ‚DC=standort,DC=int‘;
$Self->{‚AuthModule::LDAP::UID‘} = ’samaccountname‘;# Check if the user is allowed to auth in a posixGroup
$Self->{‚AuthModule::LDAP::GroupDN‘} = ‚CN=OtoboHelpdeskAgents,OU=FU_Groups,OU=Groups,OU=IT,OU=Site01,DC=standort,DC=int‘;
$Self->{‚AuthModule::LDAP::AccessAttr‘} = ‚member‘;
$Self->{‚AuthModule::LDAP::UserAttr‘} = ‚DN‘;
$Self->{‚AuthModule::LDAP::SearchUserDN‘} = ‚CN=ldap-user,OU=Service_Accounts,OU=User,OU=IT,OU=Site01,DC=standort,DC=int‘;
$Self->{‚AuthModule::LDAP::SearchUserPw‘} = ‚ldap-kennwort‘;# ————————————————— #
# Authentication sync settings #
# (enable agent data sync. after succsessful #
# authentication) #
# ————————————————— #
# (take care that Net::LDAP is installed!)
$Self->{AuthSyncModule} = ‚Kernel::System::Auth::Sync::LDAP‘;
$Self->{‚AuthSyncModule::LDAP::Host‘} = ‚ldap://ldap-host‘;
$Self->{‚AuthSyncModule::LDAP::BaseDN‘} = ‚DC=standort,DC=int‘;
$Self->{‚AuthSyncModule::LDAP::UID‘} = ’samaccountname‘;
$Self->{‚AuthSyncModule::LDAP::SearchUserDN‘} = ‚CN=ldap-user,OU=Service_Accounts,OU=User,OU=IT,OU=Site01,DC=standort,DC=int‘;
$Self->{‚AuthSyncModule::LDAP::SearchUserPw‘} = ‚ldap-kennwort‘;
$Self->{‚AuthSyncModule::LDAP::UserSyncMap‘} = {
# DB -> LDAP
UserFirstname => ‚givenName‘,
UserLastname => ’sn‘,
UserEmail => ‚mail‘,
UserLogin => ’sAMAccountName‘
};# Net::LDAP new params
$Self->{‚AuthSyncModule::LDAP::Params‘} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};$Self->{‚AuthSyncModule::LDAP::AccessAttr‘} = ‚member‘;
$Self->{‚AuthSyncModule::LDAP::UserAttr‘} = ‚DN‘;# Sync LDAP groups to OTOBO groups
$Self->{‚AuthSyncModule::LDAP::UserSyncGroupsDefinition‘} = {
# ldap group
‚CN=OtoboHelpdeskAgents,OU=FU_Groups,OU=Groups,OU=IT,OU=Site01,DC=standort,DC=int‘ => {
# otrs group
‚admin‘ => {
# permission
rw => 1,
ro => 1,
},
‚faq‘ => {
rw => 0,
ro => 1,
},
},
‚CN=OtoboHelpdeskCustomers,OU=FU_Groups,OU=Groups,OU=IT,OU=Site01,DC=standort,DC=int‘ => {
‚users‘ => {
rw => 1,
ro => 1,
},
}
};####################################
# Customer authentication settings #
####################################$Self->{‚Customer::AuthModule‘} = ‚Kernel::System::CustomerAuth::LDAP‘;
$Self->{‚Customer::AuthModule::LDAP::Host‘} = ‚ldap://ldap-host‘;
$Self->{‚Customer::AuthModule::LDAP::BaseDN‘} = ‚DC=standort,DC=int‘;
$Self->{‚Customer::AuthModule::LDAP::UID‘} = ’samaccountname‘;# Check if the user is allowed to auth in a posixGroup
$Self->{‚Customer::AuthModule::LDAP::GroupDN‘} = ‚CN=OtoboHelpdeskCustomers,OU=FU_Groups,OU=Groups,OU=IT,OU=Site01,DC=standort,DC=int‘;
$Self->{‚Customer::AuthModule::LDAP::AccessAttr‘} = ‚member‘;$Self->{‚Customer::AuthModule::LDAP::SearchUserDN‘} = ‚CN=ldap-user,OU=Service_Accounts,OU=User,OU=IT,OU=Site01,DC=standort,DC=int‘;
$Self->{‚Customer::AuthModule::LDAP::SearchUserPw‘} = ‚ldap-kennwort‘;
$Self->{‚Customer::AuthModule::LDAP::Params‘} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};$Self->{CustomerUser} = {
Name => ‚LDAP Backend‘,
Module => ‚Kernel::System::CustomerUser::LDAP‘,
Params => {
Host => ‚ldap://ldap-host‘,
BaseDN => ‚DC=standort,DC=int‘,
SSCOPE => ’sub‘,
UserDN => ‚CN=ldap-user,OU=Service_Accounts,OU=User,OU=IT,OU=Site01,DC=standort,DC=int‘,
UserPw => ‚ldap-kennwort‘,
AlwaysFilter => “,
},CustomerKey => ’sAMAccountName‘,
CustomerID => ‚mail‘,
CustomerUserListFields => [’sAMAccountName‘, ‚cn‘, ‚mail‘],
CustomerUserSearchFields => [’sAMAccountName‘, ‚cn‘, ‚mail‘],
CustomerUserPostMasterSearchFields => [‚mail‘],
CustomerUserNameFields => [‚givenname‘, ’sn‘],
CustomerUserSearchListLimit => 1000,Map => [
[ ‚UserSalutation‘, ‚Title‘, ‚title‘, 1, 0, ‚var‘ ],
[ ‚UserFirstname‘, ‚Firstname‘, ‚givenname‘, 1, 1, ‚var‘ ],
[ ‚UserLastname‘, ‚Lastname‘, ’sn‘, 1, 1, ‚var‘ ],
[ ‚UserLogin‘, ‚Login‘, ’sAMAccountName‘, 1, 1, ‚var‘ ],
[ ‚UserEmail‘, ‚Email‘, ‚mail‘, 1, 1, ‚var‘ ],
[ ‚UserCustomerID‘, ‚CustomerID‘, ‚mail‘, 0, 1, ‚var‘ ],
[ ‚UserPhone‘, ‚Phone‘, ‚telephonenumber‘, 1, 0, ‚var‘ ],
],
};# UserTable
$Self->{DatabaseUserTable} = ‚users‘;
$Self->{DatabaseUserTableUserID} = ‚id‘;
$Self->{DatabaseUserTableUserPW} = ‚pw‘;
$Self->{DatabaseUserTableUser} = ‚login‘;# —————————————————- #
# End LDAP Auth #
# —————————————————- ##################################################################################################
# LDAP Anbindung Ende
#################################################################################################Gruß Marcel
-
25. September 2023 um 17:33 Uhr #15657
Vielen vielen Dank für die ganzen Hinweise und Hilfestellungen. Hab das System nochmal komplett neu aufgesetzt und alles von vorne konfiguriert.
Inzwischen kann ich mich mit einem AD-Benutzer als Agent anmelden.
Bei der CustomerUser-LDAP (AD) – Anbindung habe ich aber jetzt noch ein Mapping-Problem, wo ich keine Lösung finde. Ich habe einen Kunden angelegt mit KdNr 10000 und einen Benutzer zu diesem Kunden erstellt.
der Login scheint auch zu funktionieren, denn ich bekomme die Meldung, dass die Authentifizierung erfolgreich war, aber kein Benutzer in der Datenbank gefunden wurde. Ich vermute hier also ein Mapping-Problem zum manuell erstellten Kunden-Benutzer.
Wie bekomme ich es hin, dass die authentifizierten Benutzer aus der LDAP/AD-Anbindung immer dem Kunden 10000 zugeordnet werden ?
# customer unique id
CustomerKey => ’sAMAccountname‘,
# customer #
CustomerID => ‚mail‘, #habe hier auch mal 10000 versucht, ändert leider nichts
CustomerUserListFields => [’sAMAccountname‘, ‚cn‘, ‚mail‘],
CustomerUserSearchFields => [’sAMAccountname‘, ‚cn‘, ‚mail‘],
CustomerUserSearchPrefix => “,
CustomerUserSearchSuffix => ‚*‘,
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => [‚mail‘],
CustomerUserNameFields => [‚givenname‘, ’sn‘],
# Configures the character for joining customer user name parts. Join single space if it is not defined.
CustomerUserNameFieldsJoin => “,
# show customer user and customer tickets in the external interface
CustomerUserExcludePrimaryCustomerID => 0,
# add a ldap filter for valid users (expert setting)
# # CustomerUserValidFilter => ‚(!(description=gesperrt))‘,
# admin can’t change customer preferences
AdminSetPreferences => 0,
# cache time to live in sec. – cache any ldap queries
# CacheTTL => 0,
CustomerCompanySupport => 1,
Map => [
# note: Login, Email and CustomerID needed!
# var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly, http-link-target, link class(es)
[ ‚UserTitle‘, Translatable(‚Title or salutation‘), ‚title‘, 1, 0, ‚var‘, “, 1, undef, undef ],
[ ‚UserFirstname‘, Translatable(‚Firstname‘), ‚givenname‘, 1, 1, ‚var‘, “, 1, undef, undef ],
[ ‚UserLastname‘, Translatable(‚Lastname‘), ’sn‘, 1, 1, ‚var‘, “, 1, undef, undef ],
[ ‚UserLogin‘, Translatable(‚Username‘), ’sAMAccountname‘, 1, 1, ‚var‘, “, 1, undef, undef ],
[ ‚UserEmail‘, Translatable(‚Email‘), ‚mail‘, 1, 1, ‚var‘, “, 1, undef, undef ],
[ ‚UserCustomerID‘, Translatable(‚CustomerID‘), ‚mail‘, 0, 1, ‚var‘, “, 1, undef, undef ],
# [ ‚UserCustomerIDs‘, Translatable(‚CustomerIDs‘), ’second_customer_ids‘, 1, 0, ‚var‘, “, 1, undef, undef ],
[ ‚UserPhone‘, Translatable(‚Phone‘), ‚telephonenumber‘, 1, 0, ‚var‘, “, 1, undef, undef ],
[ ‚UserAddress‘, Translatable(‚Address‘), ‚postaladdress‘, 1, 0, ‚var‘, “, 1, undef, undef ],
[ ‚UserComment‘, Translatable(‚Comment‘), ‚description‘, 1, 0, ‚var‘, “, 1, undef, undef ],# this is needed, if „SMIME::FetchFromCustomer“ is active
# [ ‚UserSMIMECertificate‘, ‚SMIMECertificate‘, ‚userSMIMECertificate‘, 0, 1, ‚var‘, “, 1, undef, undef ],# Dynamic field example
# [ ‚DynamicField_Name_X‘, undef, ‚Name_X‘, 0, 0, ‚dynamic_field‘, undef, 0, undef, undef ],
],
}; -
25. September 2023 um 18:31 Uhr #15658
Hallo Berhard,
hast du mal Probiert, bei dem Abschnitt „Map => [“ auch mal anstatt mail die deine Kundennummer „10000“ zu setzten.
Gruß Marcel
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.