en
Språk
  • en
  • de
  • fr
  • es
  • br
  • ru
  • jp
  • kr
AI-översättning
  • ae
  • cn
  • vn
  • id
  • eu
  • il
  • gr
  • no
  • fi
  • dk
  • se
  • tr
  • bg
  • nl
  • it
  • pl
  • hu
  • ro
  • ua
  • cs

LDAP -autentisering

LDAP

Så här konfigurerar du LDAP -autentisering

Översikt
Deklarerar LDAP -autentiseringsläge
I farten användarskapande
Gruppbaserad LDAP-inloggning
Felsökning
Hörnsituationer

 

Översikt

LDAP (Lightweight Directory Access Protocol) är ett mjukvaruprotokoll som gör det möjligt för alla att lokalisera organisationer, individer och andra resurser som filer och enheter i ett nätverk, oavsett om det är offentligt Internet eller på ett företags intranät. LDAP är en "lätt" (mindre mängd kod) version av Directory Access Protocol (DAP), som är en del av X.500, en standard för katalogtjänster i ett nätverk. LDAP är lättare eftersom den i sin ursprungliga version inte innehöll säkerhetsfunktioner. Easy Redmine har stöd för LDAP -autentisering med en eller flera LDAP -kataloger. De katalogtjänsttyper som stöds inkluderar Active Directory, OpenLDAP, eDirectory, Sun Java System Directory Server samt andra kompatibla katalogtjänster.

En LDAP -katalog är organiserad i en enkel "träd" hierarki som består av följande nivåer:

  1. Rotkatalogen (startplatsen eller källan till trädet), som förgrenar sig till
  2. Länder, som alla grenar ut till
  3. Organisationer, som förgrenar sig till
  4. Organisatoriska enheter (divisioner, avdelningar och så vidare), som grenar ut till (inkluderar en post för)
  5. Individer (som inkluderar människor, filer och delade resurser som skrivare)

 

Deklarerar LDAP -autentiseringsläge

Gå till Administration och klicka på "LDAP -autentisering" i menyn. Här hittar du listan över alla befintliga LDAP -autentiseringslägen inklusive alternativen för att testa eller ta bort alla. För att skapa en ny, klicka på den gröna knappen "Nytt autentiseringsläge" i det övre högra hörnet.

LDAP -tjänsteleverantören använder en URL för att konfigurera anslutningen till katalogservern. Följande fält bör anges för att generera LDAP -anslutnings -URL:

  • Namn: Ett godtyckligt namn för katalogen.
  • värd: LDAP -värdnamnet (testserver).
  • Port: LDAP -porten (standard är 389).
  • LDAPS: Markera detta om du vill eller behöver använda LDAPS för att komma åt katalogen.
  • Konto: Ange ett användarnamn som har läsåtkomst till LDAP, annars lämna detta fält tomt om din LDAP kan läsas anonymt (Active Directory -servrar tillåter i allmänhet inte anonym åtkomst).
  • Lösenord: Lösenord för kontot.
  • Bas -DN: Den översta nivån för ditt LDAP -katalogträd (exempel: dc = exempel, dc = com).
  • LDAP -filter: Filter kan användas för att begränsa antalet användare eller grupper som har åtkomst till ett program. I huvudsak begränsar filtret vilken del av LDAP -trädet programmet synkroniseras från. Ett filter kan och bör skrivas för både användar- och gruppmedlemskap. Detta säkerställer att du inte översvämmar din applikation med användare och grupper som inte behöver åtkomst.
     

    Provfilter

    (varning) Dessa filter är skrivna för Active Directory. För att kunna använda dem för något som OpenLDAP måste attributen ändras.

    Detta synkroniserar bara användare i gruppen 'CaptainPlanet' - detta bör tillämpas på Användarobjektfilter:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    Och detta kommer att söka efter användare som är medlem i denna grupp, antingen direkt eller via häckning:

    (&(objectCategory=Person)(sAMAccountName=*)(memberOf:1.2.840.113556.1.4.1941:=cn=CaptainPlanet,ou=users,dc=company,dc=com))

    (info) Viktigt för Active Directory att ha memberOf: 1.2.840.113556.1.4.1941 om du vill hitta kapslade grupper (ersätt inte den numeriska strängen) i CaptainPlanet -gruppen.

    Detta kommer att söka efter användare som är medlemmar i någon eller alla de fyra grupperna (eld, vind, vatten, hjärta)

    (&(objectCategory=Person)(sAMAccountName=*)(|(memberOf=cn=fire,ou=users,dc=company,dc=com)(memberOf=cn=wind,ou=users,dc=company,dc=com)(memberOf=cn=water,ou=users,dc=company,dc=com)(memberOf=cn=heart,ou=users,dc=company,dc=com)))
  • Timeout (i sekunder): Om LDAP -leverantören inte får ett LDAP -svar inom den angivna perioden avbryter den läsförsöket. Heltalet ska vara större än noll. Ett heltal som är mindre än eller lika med noll betyder att ingen lästidsgräns är specificerad vilket motsvarar att vänta på svaret oändligt tills det tas emot som standard för det ursprungliga beteendet. Om den här egenskapen inte är specificerad är standard att vänta på svaret tills det tas emot.
  • On-the-fly-användarskapande: Genom att kontrollera detta kommer alla LDAP -användare att få sitt Easy Redmine -konto automatiskt skapat första gången han loggar in på Easy Redmine. Annars måste du manuellt skapa användaren i Easy Redmine för varje LDAP -användare som vill logga in.

Attribut (exempel):

  • Inloggningsattribut: Inloggningsnamnet under vilken en användare loggar in och autentiseras.
  • Attribut för förnamn: Attribut för förnamn.
  • Efternamn attribut: Attribut för efternamn.
  • E -postattribut: Attribut för e -postadress.

Easy Redmine -användare ska nu kunna autentisera med sitt LDAP -användarnamn och lösenord om deras konton är inställda för att använda LDAP för autentisering (kolla inställningen "Autentiseringsläge" när du redigerar användarens profil).

För att testa detta, skapa en Easy Redmine-användare med en inloggning som matchar hans LDAP-konto (normalt kommer Easy Redmine att ge dig råd genom att leta upp LDAP-data), välj den nyskapade LDAP i listrutan Autentiseringsläge (det här fältet är synlig på kontoskärmen endast om en LDAP deklareras) och lämna sitt lösenord tomt. Försök att logga in på Easy Redmine med LDAP -användarnamn och lösenord.

 

I farten användarskapande

Genom att kontrollera on-the-fly-användarskapande, kommer alla LDAP -användare att få sitt Easy Redmine -konto automatiskt skapat första gången han loggar in på Easy Redmine.
För det måste du ange LDAP -attributnamnet (förnamn, efternamn, e -post) som ska användas för att skapa deras Easy Redmine -konton.

Här är ett typiskt exempel med Active Directory:

Namn = My Directory Host = host.domain.org Port = 389 LDAPS = inget konto = MyDomain \ UserName (eller UserName@MyDomain beroende på AD -server) Lösenord = Bas-DN = CN = användare, DC = värd, DC = domän, DC = org On-the-fly-användare skapande = ja Attribut Logga in = sAMAccountName Förnamn = givenName Efternamn = sN E-post = e-post

Här är ett annat exempel på Active Directory med ett uppdelat intranät:

Namn = Bara en beskrivning för sidan för autentiseringslägen Host = DepartmentName.OrganizationName.local Port = 389 LDAPS = inget konto = DepartmentName \ UserName (eller UserName@MyDomain beroende på AD -server eller bind DN uid = Manager, cn = användare, dc = MyDomain, dc = com) Lösenord = Bas-DN = DC = Avdelningsnamn, DC = Organisationsnamn, DC = lokal On-the-fly-användare skapande = ja Attribut Logga in = sAMAccountName Förnamn = förnamn Efternamn = sN E-post = e-post

Observera att LDAP -attributnamn är skiftlägeskänsliga.

Dynamiskt bindningskonto

Ovanstående installation skulle behöva ett särskilt konto på katalogservern som Easy Redmine använder för att förautentisera. Det är möjligt att använda sökordet $ inloggning i kontofältet som sedan skulle ersättas av den aktuella inloggningen. Lösenordet kan lämnas tomt i det här fallet, till exempel:

Konto: $ login@COMPANY.DOMAIN.NAME

or

Konto: företagets inloggning

Bas -DN -varianter

Även om det är fullt möjligt att bas -DN ovan är standard för Active Directory, använder Active Directory på min arbetsgivares webbplats inte användarbehållaren för standardanvändare, så dessa instruktioner skickade mig ner en lång och smärtsam väg. Jag rekommenderar att du bara försöker "DC = värd, DC = domän, DC = org" om inloggningen misslyckas med inställningarna där.

 

Gruppbaserad LDAP -inloggning

Om du bara vill tillåta inloggningar för användare som tillhör en viss LDAP -grupp bör du följa instruktionerna nedan. De är baserade på OpenLDAP LDAP -server och Easy Redmine.

1. (OpenLDAP -server) Aktivera medlem i överlagring

1.1. Skapa en fil:

vim ~/memberof_add.ldif

Med nedanstående innehåll:

dn: cn = modul, cn = config
objectClass: olcModuleList
cn: modul
olcModulePath:/usr/lib/ldap
olcModuleLoad: medlem av

1.2. Skapa en fil:

vim ~/memberof_config.ldif

Med nedanstående innehåll:

dn: olcOverlay = memberof, olcDatabase = {1} hdb, cn = config
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objektClass: topp
olcOverlay: medlem av
olcMemberOfDangling: ignorera
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfNames
olcMemberOfMemberAD: medlem
olcMemberOfMemberOfAD: memberOf

1.3. Ladda dem. Det beror på din OpenLDAP -konfiguration, så vi kommer att föreslå några möjligheter:

sudo ldapadd -c -Y EXTERNAL -H ldapi: /// -f memberof_add.ldif
sudo ldapadd -c -Y EXTERNAL -H ldapi: /// -f memberof_config.ldif

eller:

ldapadd -D cn = admin, cn = config -w "lösenord" -H ldapi: /// -f memberof_add.ldif
ldapadd -D cn = admin, cn = config -w "lösenord" -H ldapi: /// -f memberof_config.ldif

En omstart behövs INTE om du använder dynamisk körtidskonfigurationsmotor (slapd-config).

1.4. (Valfritt) Testa det:

ldapsearch -D cn = admin, dc = exempel, dc = com -x -W -b 'dc = exempel, dc = com' -H 'ldap: //127.0.0.1: 389/' '(& (objectClass = posixAccount ) (memberOf = cn = ldapeasyredmine, ou = grupper, dc = exempel, dc = com)) '

2. (OpenLDAP -server) Skapa gruppen. I det här exemplet är användaren "ldap_user_1" och gruppen är "ldapeasyredmine":

dn: cn = ldapeasyredmine, ou = grupper, dc = exempel, dc = com
cn: ldapeasyredmine
beskrivning: Anställda får logga in på Easy Redmine biljettsystem
medlem: cn = ldap_user_1, ou = people, dc = exempel, dc = com
objektklass: groupOfNames
objektklass: topp

Justera "dn" och "cn" s för att passa din DIT -struktur

3. (Easy Redmine) Redigera LDAP -autentiseringsläget. I mitt fall är "ldap_user_1" en "posixAccount" objektklass:

Bas -DN: dc = exempel, dc = com
Filter: (& (objectClass = posixAccount) (memberOf = cn = ldapeasyredmine, ou = grupper, dc = exempel, dc = com))

 

Felsökning

Om du vill använda on-the-fly-användarskapande, se till att Easy Redmine kan hämta all nödvändig information från din LDAP för att skapa en giltig användare.
Till exempel fungerar inte direkt användarskapande om du inte har giltiga e-postadresser i din katalog (du får ett felmeddelande "Ogiltigt användarnamn/lösenord" när du försöker logga in).
(Detta är inte sant med nyare Easy Redmine -versioner; dialogrutan för användarskapande fylls med allt det kan hitta från LDAP -servern och ber den nya användaren att fylla i resten.)

Se också till att du inte har något anpassat fält markerat som Obligatorisk för användarkonton. Dessa anpassade fält skulle förhindra att användarkonton skapas direkt.

Fel i inloggningssystemet rapporteras inte med någon verklig information i Easy Redmine -loggarna, vilket gör det svårt att felsöka. Du kan dock hitta det mesta av informationen du behöver använda Wireshark mellan din Easy Redmine -värd och LDAP -servern. Observera att detta bara fungerar om du har behörighet att läsa nätverkstrafik mellan de två värdarna.

Du kan också använda verktyget 'ldapsearch' för att testa om dina inställningar är korrekta. Logga in på Linux -maskinen som är värd för din Easy Redmine (och installera eventuellt ldaputils) och kör detta:

ldapsearch -x -b  "dc=example,dc=com" -H ldap://hostname/ -D "DOMAIN\USER" -w mypassword [searchterm]

Om det lyckas får du en lista över innehållet i annonsen som matchar din sökfråga. Då vet du hur du fyller i fälten i LDAP -konfigurationen i Easy Redmine.

Alternativa sätt att verifiera funktionaliteten

  • Prova att ta bort LDAP -filter som, om de är felaktigt inställda, kan ta bort de användare du vill hitta.
  • Bredvid "Login -attributet" finns en bokikon. Om du klickar på den och LDAP är korrekt inställd, fylls de "vanliga attributen" automatiskt i förväg av den faktiska LDAP-servern. I stället för textfält visas markeringsrutor för ett fall som användaren vill ändra inställningarna. I de flesta fall behöver användaren inte fylla i detta alls. Om detta fungerar så är det troligt att allt annat fungerar.
  • För anslutningsproblem kan du använda knappen "Test" på LDAP -serverlistan. Var försiktig, detta tjänar bara till att testa om du kan ansluta till LDAP. Det vanliga problemet är att administratörer inte fyller LDAP -systemanvändaren även om LDAP -inställningarna fortfarande är skyddade. I det här fallet körs testet OK eftersom anslutningen fungerar men inga användare kan läggas till eftersom LDAP inte "ser" någon.
  • För att testa om LDAP verkligen fungerar kan numret "Tillgängliga användare" också användas - om värdet är 0 returnerar LDAP ingen data och är förmodligen felaktigt inställd. Om det finns ett nummer kan du klicka på det för att expandera och se vad LDAP visar (och justera filtren därefter).

Konto värdeformat

Användarnamnet för bindningsuppgifterna kan behöva anges som en DN snarare än som en UPN (user@domain.com) eller som domän \ användare, som påpekas av denna kommentar i källa: trunk/vendor/plugins/ruby-net-ldap-0.0.4/lib/net/ldap.rb:

  # Som beskrivs under #bind kräver de flesta LDAP-servrar att du tillhandahåller ett fullständigt DN # som bindningsuppgifter, tillsammans med en autentisering som ett lösenord.

Därför användare med MyDomain \ MyUserName eller MittAnvändarnamn@MyDomain.com användarnamn kanske bara anger MyUserName som ett inloggningsnamn för Easy Redmine.

Långsam LDAP -autentisering

Om LDAP -autentisering är långsam och du har ett AD -kluster, försök att ange en av de fysiska AD -servrarna i värdfältet. Det kan hjälpa.

ÖppnaDS

Om du använder OpenDS -servern kan du ha problem med förfrågningskontrollen "Sidvisade resultat" som skickas med den första frågan som söker efter användaren med det angivna inloggningsattributet. Denna begäranskontroll 1.2.840.113556.1.4.319 är inte tillåten för anonyma användare som standard, vilket förhindrar att Easy Redmine hittar användaren i katalogen redan innan bindningen sker.

Lägg till en global ACI så här

./dsconfig -h SERVER_IP -p 4444 -D cn = "Directory Manager" -w PASSWORD -n set -access -control -handler -prop --trustAll --add global -aci: \ (targetcontrol = \ "1.2.840.113556.1.4.319 .3.0 \ "\) \ \ (version \ 1.2.840.113556.1.4.319 \; \ acl \ \" Anonym \ control \ access \ to \ XNUMX \ "\; \ allow \ \ (läs \) \ userdn = \ "ldap: /// någon \" \; \)

Notera: Ange kommandot på en rad, använd Escape som exakt anges (\ efter "acl" är tänkt att vara "\" för mellanslag).

Vissa användare kan inte logga in

Problem: En specifik UU för användare kan inte logga in (ogiltig användare eller lösenord) medan alla andra är det. Användarna finns på en avlägsen webbplats, men användare i de andra OU: erna på samma webbplats får inte detta fel.

Lösning: Problemet är förmodligen inte relaterat till felaktiga inställningar utan snarare ett Active Directory (AD) -problem. Användarna som inte kunde ansluta hade fältet "Logga in på" inställt på en viss dator i AD -användarens egenskaper (AD -administration). Efter att ha ändrat det till "Logga in överallt" borde det fungera. Mer specifikt måste detta fält vara inställt på: AD -användare -> Egenskaper -> Konto -> Logga in överallt.

Problem med inloggning vid användning av LDAPS utan ett giltigt certifikat

Du kan stöta på problem med inloggning när du använder LDAPS utan ett giltigt certifikat. I Redmine 4 valideras alltid LDAPS -certifikat. Med ett ogiltigt certifikat kan användare inte logga in. Naturligtvis, rätt och långsiktig lösning är att använda ett giltigt certifikat. Men tills du uppnår detta är den tillfälliga lösningen att gå till Administration >> LDAP -autentisering >> Redigera respektive auktoriseringsläge.

Ändra inställningen till LDAPS (utan certifikatkontroll).

Med Easy Redmine Server-lösningen kan du ändra den i bulk från spårkonsolen
skenor r "AuthSource.update_all (verify_peer: false)" -e produktion

eller via SQL
UPDATE auth_sources set verify_peer = 0;

 

Hörnsituationer

  • När du importerar/skapar användare automatiskt från LDAP föredras standardinställningen för användartyp som anges i formuläret för användarskapande framför standardinställningen för användartyp som anges i LDAP. När användaren väl har skapats kan den här inställningen inte senare ändras (om du inte skapar en ny LDAP).

Prova Easy Redmine i 30 dagars gratis provperiod

Fullständiga funktioner, SSL-skyddad, dagliga säkerhetskopior, i din geolokalisering