AD indlæsningsintegration

AD indlæsningsintegration indlæser brugeroplysninger fra Active Directory ind i SOFD Core. Dette dokument beskriver installation og konfiguration.

KomponentServicenavnDownloadÆndringslog
AD indlæsningsintegrationSOFD Core AD Event DispatcherDownloadÆndringslog

Forudsætninger#

Windows Server#

Servicen skal installeres på en Windows maskine med:

  • Netværksmæssig adgang til kommunens AD
  • Netværksmæssig adgang til SOFD Core i skyen via HTTPS.
  • .NET Framework 4.6.1 eller nyere

Service konto i AD#

Der skal oprettes en service konto i kommunes AD.

Kontoen skal have læseadgang til alle de bruger-attributter der skal læses fra brugerkonti inkl. den attribut som indeholder brugerens cpr-nummer.

Endelig skal systembrugeren også have rettighed til at replikere data fra Active Directory. Det har en domæneadministrator automatisk, men det anbefales i stedet at tildele den enkelte replikeringsrettighed direkte til service kontoen via nedenstående vejledning.

  1. Åben “Active Directory Users and Computers” konsollen
  2. Vælg domænet, højreklik, og vælg “Properties”.
  3. Gå til “Security”-fanen og tilføj systembrugeren.
  4. Sæt rettigheden Replicating Directory Changes til “Allow”.

Replicating Directory Changes er i udgangspunktet den eneste replikeringsrettighed der skal tildeles. Det gælder også når cpr-attributten er markeret confidential, som anbefalet i afsnittet Afklaring af cpr-attribut.

Der findes en yderligere replikeringsrettighed, Replicating Directory Changes In Filtered Set, som kun er nødvendig i det tilfælde der er beskrevet herunder. Den bør kun efterspørges når den faktisk er nødvendig, da den indgår i kendte angreb mod domænet og mange kommuners sikkerhedsafdeling derfor ikke tillader den.

Replicating Directory Changes In Filtered Set er nødvendig hvis en af de attributter der skal synkroniseres har talværdien 512 med i sin searchFlags-værdi i AD-skemaet. Langt de fleste attributter har den ikke, så værdien bør slås op før rettigheden efterspørges.

De 512 markerer at attributten ikke må replikeres ud til en skrivebeskyttet domænecontroller, altså den type domænecontroller nogle kommuner placerer på lokationer hvor den fysiske sikkerhed er dårlig. I Microsofts dokumentation hedder listen over den slags attributter “RODC filtered attribute set”. Nogle kommuner sætter flaget på cpr-attributten netop for at holde cpr-numre væk fra de udsatte servere.

Værdien 512 forveksles let med de 128 der markerer attributten som confidential. De to har hver sin betydning, og kun 512 kræver denne rettighed. Er begge sat, står der 640 i searchFlags.

Den faktiske værdi for en attribut kan læses sådan. Bemærk at der skal filtreres på lDAPDisplayName, da attributten hedder noget andet i skemaet (attributten employeeNumber ligger på skema-objektet Employee-Number).

Get-ADObject -SearchBase (Get-ADRootDSE).schemaNamingContext -LDAPFilter "(lDAPDisplayName=employeeNumber)" -Properties lDAPDisplayName,searchFlags | Select-Object Name,lDAPDisplayName,searchFlags

Er de 512 sat, findes attributten slet ikke på de skrivebeskyttede domænecontrollere. Læser integrationen fra en af dem, kan attributten derfor ikke hentes uanset hvilke rettigheder service kontoen har, og integrationen skal i stedet pege på en almindelig, skrivbar domænecontroller.

Bemærk at der kan gå nogle minutter fra en rettighed er sat, til den slår igennem. Hvis man under kørsel af softwaren får “Access Denied” i loggen i kaldet til Active Directory, så er det disse synkroniseringsrettigheder der mangler.

Rettigheden Replicating Directory Changes All skal ikke tildeles. Den dækker Active Directorys hemmelige attributter, som er en fast liste af attributter med adgangskoder og trust-oplysninger, og de indlæses ikke af denne integration. Er rettigheden tildelt ved en tidligere installation, kan den fjernes igen.

API bruger til SOFD Core backend#

Der skal i konfigurationen indtastes et brugernavn og kodeord. Disse udleveres af Digital Identity.

Afklaring af cpr-attribut#

Det skal afklares hvilken attribut i AD der indeholder/skal indeholde brugerens cpr-nummer. Det kan eksempelvis være attributten EmployeeNumber.

Det anbefales at den valgte attribut skjules for almindelige brugere ved at tilføje confidentiality bit på attributten. Bemærk at det ikke er alle felter i AD der understøtter denne mulighed.

Dette kan f.eks. gøres via ADSI Edit MMC snap-in ved at tilføje bit 8 (tal-værdi 128) til searchFlags på attributten. Bemærk at hvis searchFlags har en værdi i forvejen, og den ikke i forvejen har bit 8 sat, skal bit 8 (tal-værdi 128) lægges til denne værdi.

Med dette flag sat er det kun brugere med CONTROL_ACCESS rettighed i AD, der kan læse/skrive attributten (default administratorer).

Service kontoen skal derfor også have Read Property og CONTROL_ACCESS på netop denne attribut. Rettigheden gives afgrænset til den enkelte attribut, og der er ikke behov for yderligere replikeringsrettigheder.

dsacls "DC=kommune,DC=dk" /I:S /G "KOMMUNE\sofdservice:RPCA;employeeNumber;user"

Den valgte attribut til cpr-nummer angives i indstillingen ActiveDirectory.Property.Cpr under konfiguration i det næste afsnit af denne vejledning.

Afklaring af affiliation-attribut#

Det er muligt at lade Active Directory være master for et organisatorisk tilhørsforhold til den autoritative organisation i SOFD Core.

Normalt defineres dette tilhørsforhold via en integration til f.eks. lønsystemet, men der kan være brugere som kun findes i Active Directory, men hvor man alligevel ønsker at indplacere dem organisatorisk. Det kan eksempelvis være eksterne konsulenter.

Hvis man ønsker denne funktionalitet, kan man i indstillingen ActiveDirectory.Property.Affiliation angive navnet på en AD attribut. Brugere hvor der i denne attribut står en værdi der matcher et masterId fra lønsystemet (LOS ID), vil få oprettet et organisatorisk tilhørsforhold til den tilsvarende organisatoriske enhed i SOFD Core.

Installation af Windows Service#

Der skal installeres og konfigureres en Windows Service på en server hvor der er netværksmæssig adgang til kommunens AD samt SOFD Core i skyen via HTTPS.

Download service#

Hent installeren via download-linket øverst på siden eller fra den samlede Download-oversigt.

Konfiguration af service#

Konfiguration af servicen foretages i appSettings sektionen i xml-filen SOFDCoreAD.Service.exe.config som ligger i roden af installationsmappen (default C:\Program Files (x86)\Digital Identity\SofdCoreADEventDispatcher).

De indstillinger der skal konfigureres under en standardinstallation er fremhævet med gult (markeret med * i tabellen nedenfor).

IndstillingEksempelKommentar
serilog:*Diverse indstillinger til opsætning af log.
ActiveDirectory.AllowMultipleUsersFalseAngivelse af om synkroniseringen skal understøtte at synkronisere flere brugere med samme cpr-nummer.
ActiveDirectory.ReadAltSecurityIdentitiesFalseHvis “True” indlæses attributten altSecurityIdentities fra AD-brugerne til SOFD Core.
ActiveDirectory.RequireSigningFalseHvis “True” oprettes forbindelsen til AD med krav om signering (Secure + Signing). Anvendes hvis domænet kræver LDAP signing.
ActiveDirectory.IgnoredDCPrefixrodcDomænecontrollere hvis navn starter med den angivne tekst anvendes ikke. Anvendes hvis integrationen skal holdes væk fra bestemte domænecontrollere, f.eks. skrivebeskyttede domænecontrollere. Der sammenlignes med domænecontrollerens fulde DNS-navn, og der skelnes mellem store og små bogstaver. Indstillingen findes ikke i standardkonfigurationen og skal tilføjes manuelt hvis den ønskes.
ActiveDirectory.TreatDisabledAsEnabledFalseAngivelse af om disablede AD-brugere skal synkroniseres til SOFD Core.
ActiveDirectory.IntegratedSecurityFalseAngivelse af om servicen skal afvikles i kontekst af servicens logon-bruger.
ActiveDirectory.Usernameusername@domainAngivelse af brugernavn til opslag i AD såfremt servicen ikke afvikles i kontekst af servicens logon-bruger jf. ovenstående indstilling. Kan være blank.
ActiveDirectory.PasswordAngivelse af password til AD-bruger såfremt servicen ikke afvikles i kontekst af servicens logon-bruger. Kan være blank.
ActiveDirectory.Filtersamaccountname=a*Angivelse af et ldap-filter til afgrænsning af hvilke AD-konti der skal synkroniseres til SOFD Core. Kan være blank.
ActiveDirectory.Property.Cpr *EmployeeNumberAngivelse af hvilken attribut i AD der indeholder cpr-nummer.
ActiveDirectory.Property.EmployeeIdAngivelse af hvilken attribut i AD der indeholder medarbejderens medarbejdernummer.
ActiveDirectory.Property.MobilemobileAngivelse af hvilken attribut i AD der indeholder medarbejderens mobilnummer
ActiveDirectory.Property.SecretMobilepagerAngivelse af hvilken attribut i AD der indeholder et mobilnummer som medarbejderen ønsker at holde hemmeligt
ActiveDirectory.Property.PhoneAngivelse af hvilken attribut i AD der indeholder medarbejderens telefonnummer
ActiveDirectory.Property.DepartmentNumberAngivelse af hvilken attribut i AD der indeholder afdelingsnummeret
ActiveDirectory.Property.FaxNumberAngivelse af hvilken attribut i AD der indeholder faxnummeret
ActiveDirectory.Property.PhotoAngivelse af hvilken attribut i AD der indeholder medarbejderens billede
ActiveDirectory.Property.AffiliationextensionAttribute1Angivelse af hvilken attribut i AD der angiver organisatorisk tilhørsforhold. Kan være blank.
ActiveDirectory.Property.AffiliationStopDateextensionAttribute2Angivelse af hvilken attribut i AD der angiver stopdato på organisatorisk tilhørsforhold. Anvendes sammen med ovenstående setting.
ActiveDirectory.Property.OU.AffiliationextensionAttribute3Som ActiveDirectory.Property.Affiliation, men master-id’et (LOS ID) for det organisatoriske tilhørsforhold læses fra den angivne attribut på brugerens OU i stedet for på selve brugeren. Kan være blank.
ActiveDirectory.LocalExtention.* (* angiver hvad feltet skal hedde i SOFD Core)wWWHomePageMan kan tilføje et vilkårligt antal af indstillinger med dette prefix for at læse værdien fra denne AD-attribut ind i et custom felt i SOFD Core. Kan udelades.
ActiveDirectory.Cron0/10 * 5-22 ? * * *Cron-udtryk der angiver hvor ofte der læses ændringer fra AD. Default er hvert 10. sekund hvis der angives en værdi i konfigurationen.
ActiveDirectory.ExcludeOUsOU=old users,OU=testkøbing,DC=test,DC=dk; OU=old users 2,OU=testkøbing,DC=test,DC=dkEn semikolon-separeret liste af enheders distinguished name. Brugere i enhederne, der listes her, bliver ikke synkroniseret.
ActiveDirectory.IncludeOUsOU=old users,OU=testkøbing,DC=test,DC=dk; OU=old users 2,OU=testkøbing,DC=test,DC=dkEn semikolon-separeret liste af enheders distinguished name. Såfremt denne liste ikke er tom, er det kun brugere under disse OUer der bliver synkroniseret.
ActiveDirectory.DisableAccountOrdersAttributeextensionAttribute10Såfremt den angive attribut er udfyldt med “true” så vil integrationen sætte alle IDM undtagelsesmarkeringer på personen i OS2sofd. Bemærk at undtagelesmarkeringer ikke fjernes automatisk igen. Det sker kun ved at de manuelt fjernes fra personen i OS2sofd GUI
Backend.Password *API-password til SOFD Core backend API (udleveres af Digital Identity)
CyberArk.EnabledFalseHvis “True” hentes hemmeligheder (backend-password og SOFD ApiKey) fra CyberArk i stedet for at stå i klartekst i konfigurationen.
CyberArk.CyberArkAPIhttps://cyberark.kommune.dkURL’en til kommunens CyberArk Web Service (CCP/AIM). Anvendes når CyberArk.Enabled er “True”.
CyberArk.CyberArkAppIdSOFDCoreApp ID i CyberArk der anvendes ved opslag.
CyberArk.CyberArkSafeSOFDNavnet på den safe i CyberArk hvor hemmelighederne er gemt.
CyberArk.CyberArkObject.SOFDNavnet på objektet i CyberArk-safen der indeholder SOFD ApiKey (svarer til UploadConfig.SofdCoreApiKey).
CyberArk.CyberArkObject.BackendNavnet på objektet i CyberArk-safen der indeholder backend-passwordet (svarer til Backend.Password).
UploadConfig.EnabledFalseSæt til “True” hvis man ønsker at konfigurationsfilen uploades til SOFD Core
UploadConfig.SofdCoreUrlhttps://kommune.sofd.ioSkal udfyldes hvis ovenstående er sat til True. Her skal stå URL’en på SOFD Core
UploadConfig.SofdCoreApiKeyXxxxSkal udfyldes hvis ovenstående er sat til True. Skal udfyldes med ApiKey for AD Dispatcher agenten. Bemærk denne er forskellig fra Backend.Password

Skal OS2sofds genaktiverings-flow (Reaktiver-ordrer) bruges, skal deaktiverede AD-konti også indlæses. Sæt ActiveDirectory.TreatDisabledAsEnabled til True, så deaktiverede konti synkroniseres til SOFD Core. Ellers kan OS2sofd ikke danne reaktiverings-ordrer for genansatte.

Såfremt ActiveDirectory.IntegratedSecurity er sat til “true” i xml-konfigurationen skal service kontoen angives på “Log On” fanen i Windows Services.

På “Log On”-fanen vælges “This account”, og domænekontoen (fx domain\sofdservice) angives med tilhørende password.

Start af service#

Efter servicen er konfigureret startes den via Windows Services eller tilsvarende kommandolinjeværktøjer.

Servicen hedder “SOFD Core AD Event Dispatcher” i Windows Services.

Ved start/genstart af servicen foretages altid en fuld synkronisering.

Det er derfor en god idé at kigge i logfilen om alt er gået godt. Logfilens placering kan ses i indstillingen serilog:write-to:RollingFile.pathFormat.

Logfilen bør få sekunder efter opstart indeholde 3 linjer der ser nogenlunde sådan her ud:

2019-09-04 06:00:04 [Information] [SOFDCoreAD.Service.Job.SynchronizeJob] Performing full sync
2019-09-04 06:00:06 [Information] [SOFDCoreAD.Service.ActiveDirectory.ActiveDirectoryService] Found 4860 users in Active Directory
2019-09-04 06:00:12 [Information] [SOFDCoreAD.Service.Job.SynchronizeJob] Full sync complete

Ændringslog#

Ændringslog for AD indlæsningsintegration. Nyeste version øverst.

VersionDatoÆndring
2.12.010.09.2026Listen af domænecontrollere caches i en time, og advarslen om domænecontrollere med forældede oplysninger logges kun når antallet ændrer sig
2.11.010.09.2026Domænecontrollere findes nu ved at læse konfigurationspartitionen, så en domænecontroller der er fjernet uden ordentlig demotering springes over i stedet for at afbryde synkroniseringen
2.10.001.07.2026Ændringsloggen vedligeholdes nu i onlinedokumentationen, og den installerede version skrives til version.txt i installationsmappen
2.9.108.01.2026Tilføjet fejlhåndtering i tilfælde af at en delta-sync-bruger er blevet flyttet i AD
2.9.003.01.2026Tilføjet understøttelse af indstillingen ActiveDirectory.IncludeOUs
2.8.017.10.2025Ændret binding-indstillinger ved forbindelse til AD
2.7.003.07.2025Tilføjet styring via DisableAccountOrders-attributten
2.6.010.01.2025Tilføjet styring af tilhørsforhold på OU-niveau
2.5.008.01.2025Tilføjet egenskaben AffiliationStopDate til at sætte stopdato på tilhørsforhold
2.4.128.11.2024Kun udførlig logning ved udelukkelse
2.4.007.10.2024Konfigurationsindstilling til at ignorere en bestemt DC
2.3.001.08.2024Tilføjet understøttelse af CyberArk (Privileged Access Management)
2.2.131.01.2024Rettet udlæsning af AccountExpirationDate (den læste 1 dag for tidligt)
2.2.010.01.2024Læser AltSecurityIdentities hvis den indeholder MitID Erhverv-UUID’et
2.1.129.11.2023Rettet off-by-one-fejl i udløb af adgangskode
2.1.024.11.2023Tilføjet understøttelse af at hente whenCreated fra AD-brugeren
2.0.127.07.2023Tilføjet fejlhåndtering ved forbindelse til en DC
2.0.024.10.2022Understøtter indlæsning af UPN i SOFD
1.9.120.04.2022Rettet fejl ved læsning af lastpwdset fra deltasync
1.9.007.03.2022Understøtter DepartmentNumber og FaxNumber på AD-konti
1.8.217.12.2021Kan nu udelukke OU’er
1.8.128.06.2021Rettet NPE ved tjek for kontolåsning
1.8.028.06.2021Læser LockoutTime
1.7.307.06.2021Rettet versionerings-opsætning
1.7.204.06.2021Sender nu ClientVersion-header til backend-API’et
1.7.102.06.2021Rettet problem med udløb på slettede konti
1.7.019.05.2021Bruger TLS 1.2
1.6.019.04.2021Sender AccountExpire-information til SOFD Core
1.5.114.10.2020AD-synkroniseringsinterval er nu et konfigurerbart cron-udtryk
1.5.005.06.2020Understøtter billeder fra AD
1.4.022.05.2020Understøtter læsning af AD-data fra fil i stedet for fra AD
1.3.023.04.2020Understøtter upload af lokal konfiguration til SOFD
1.2.009.04.2020Sender “dage til næste adgangskodeskift” til SOFD
1.1.004.04.2020Forenklet konfiguration, forbedret backend-integration
1.0.224.01.2020Understøttelse af Mobile og SecretMobile
1.0.115.01.2020Tilføjet changelog. Forbindelser til Active Directory via LDAP kan nu kræve signering.
1.0.0Ingen changelog