OS2sofd - Om OS2sofd: https://www.sofd.io/ - Brugervejledning: https://www.sofd.io/brugervejledning/ - Arkitektur: https://www.sofd.io/arkitektur/ - Implementeringsdrejebøger: https://www.sofd.io/implementation-guides/ - Drejebog: OPUS-kommune: https://www.sofd.io/implementation-guides/opus-loen-integration/ - Drejebog: SD-kommune: https://www.sofd.io/implementation-guides/sd-loen-integration/ - Brugerstyring: https://www.sofd.io/idm/ - Forudsætninger og forberedelse: https://www.sofd.io/idm/prerequisites/ - Processer og hændelser: https://www.sofd.io/idm/processes/ - Personinaktivering: https://www.sofd.io/idm/person-inactivation/ - Konfiguration: https://www.sofd.io/idm/configuration/ - Login og SAML: https://www.sofd.io/login/ - API: https://www.sofd.io/api/ - OData (læsning): https://www.sofd.io/api/odata/ - REST-API: https://www.sofd.io/api/rest/ - Fremtidig API-udvikling: https://www.sofd.io/api/strategi/ - Integrationer: https://www.sofd.io/integrationer/ - On-premise agenter: https://www.sofd.io/agents/ - Brugerkonto Agent: https://www.sofd.io/agents/user-account-agent/ - AD Writeback Agent: https://www.sofd.io/agents/ad-writeback-agent/ - AD Replikator Agent: https://www.sofd.io/agents/ad-replikator/ - AD indlæsningsintegration: https://www.sofd.io/agents/ad-indlaesningsintegration/ - OPUS indlæsningsintegration: https://www.sofd.io/agents/opus-indlaesningsintegration/ - Indlæsning af skoleelever: https://www.sofd.io/agents/skoleelev-indlaesning/ - OS2vikar - Brugerkonto Agent: https://www.sofd.io/agents/os2vikar-agent/ - Download: https://www.sofd.io/downloads/ - Ændringslog: https://www.sofd.io/changelog/ - Support og kontakt: https://www.sofd.io/support/ AD indlæsningsintegration indlæser brugeroplysninger fra Active Directory ind i SOFD Core. Dette dokument beskriver installation og konfiguration. | Komponent | Servicenavn | Download | Ændringslog | | --- | --- | --- | --- | | AD indlæsningsintegration | `SOFD Core AD Event Dispatcher` | [Download](https://www.sofd.io/download/SOFD%20Core%20-%20AD%20indlaesningsintegration.exe) | [Ændringslog](#æ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 rettigheder til at replikere data fra Active Directory. Dette vil brugeren automatisk have hvis denne er domæne administrator, men man kan også nøjes med at tilføje enkelte replikerings-rettigheder til brugeren 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, tilføj systembrugeren, og giv brugeren følgende replikeringsrettigheder (sat til "Allow"). Bemærk at den første formodentlig er den eneste, der er nødvendig (alt afhængig af hvilke attributter der skal synkroniseres): a. Replicating Directory Changes b. Replicating Directory Changes All (kun nødvendigt hvis der skal replikeres hemmelige attributter) c. Replicating Directory Changes In Filtered Set (kun nødvendigt hvis attributter der skal synkroniseres er beskyttede) Bemærk at der kan gå nogle minutter fra denne 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. ### 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). 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](../../downloads/). ### 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). | Indstilling | Eksempel | Kommentar | | --- | --- | --- | | serilog:* | | Diverse indstillinger til opsætning af log. | | ActiveDirectory.AllowMultipleUsers | False | Angivelse af om synkroniseringen skal understøtte at synkronisere flere brugere med samme cpr-nummer. | | ActiveDirectory.ReadAltSecurityIdentities | False | Hvis "True" indlæses attributten altSecurityIdentities fra AD-brugerne til SOFD Core. | | ActiveDirectory.RequireSigning | False | Hvis "True" oprettes forbindelsen til AD med krav om signering (Secure + Signing). Anvendes hvis domænet kræver LDAP signing. | | ActiveDirectory.TreatDisabledAsEnabled | False | Angivelse af om disablede AD-brugere skal synkroniseres til SOFD Core. | | ActiveDirectory.IntegratedSecurity | False | Angivelse af om servicen skal afvikles i kontekst af servicens logon-bruger. | | ActiveDirectory.Username | username@domain | Angivelse 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.Password | | Angivelse af password til AD-bruger såfremt servicen ikke afvikles i kontekst af servicens logon-bruger. Kan være blank. | | ActiveDirectory.Filter | samaccountname=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 * | EmployeeNumber | Angivelse af hvilken attribut i AD der indeholder cpr-nummer. | | ActiveDirectory.Property.EmployeeId | | Angivelse af hvilken attribut i AD der indeholder medarbejderens medarbejdernummer. | | ActiveDirectory.Property.Mobile | mobile | Angivelse af hvilken attribut i AD der indeholder medarbejderens mobilnummer | | ActiveDirectory.Property.SecretMobile | pager | Angivelse af hvilken attribut i AD der indeholder et mobilnummer som medarbejderen ønsker at holde hemmeligt | | ActiveDirectory.Property.Phone | | Angivelse af hvilken attribut i AD der indeholder medarbejderens telefonnummer | | ActiveDirectory.Property.DepartmentNumber | | Angivelse af hvilken attribut i AD der indeholder afdelingsnummeret | | ActiveDirectory.Property.FaxNumber | | Angivelse af hvilken attribut i AD der indeholder faxnummeret | | ActiveDirectory.Property.Photo | | Angivelse af hvilken attribut i AD der indeholder medarbejderens billede | | ActiveDirectory.Property.Affiliation | extensionAttribute1 | Angivelse af hvilken attribut i AD der angiver organisatorisk tilhørsforhold. Kan være blank. | | ActiveDirectory.Property.AffiliationStopDate | extensionAttribute2 | Angivelse af hvilken attribut i AD der angiver stopdato på organisatorisk tilhørsforhold. Anvendes sammen med ovenstående setting. | | ActiveDirectory.Property.OU.Affiliation | extensionAttribute3 | Som 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) | wWWHomePage | Man 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.Cron | 0/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.ExcludeOUs | OU=old users,OU=testkøbing,DC=test,DC=dk; OU=old users 2,OU=testkøbing,DC=test,DC=dk | En semikolon-separeret liste af enheders distinguished name. Brugere i enhederne, der listes her, bliver ikke synkroniseret. | | ActiveDirectory.IncludeOUs | OU=old users,OU=testkøbing,DC=test,DC=dk; OU=old users 2,OU=testkøbing,DC=test,DC=dk | En 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.DisableAccountOrdersAttribute | extensionAttribute10 | Så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.Enabled | False | Hvis "True" hentes hemmeligheder (backend-password og SOFD ApiKey) fra CyberArk i stedet for at stå i klartekst i konfigurationen. | | CyberArk.CyberArkAPI | https://cyberark.kommune.dk | URL'en til kommunens CyberArk Web Service (CCP/AIM). Anvendes når CyberArk.Enabled er "True". | | CyberArk.CyberArkAppId | SOFDCore | App ID i CyberArk der anvendes ved opslag. | | CyberArk.CyberArkSafe | SOFD | Navnet på den safe i CyberArk hvor hemmelighederne er gemt. | | CyberArk.CyberArkObject.SOFD | | Navnet på objektet i CyberArk-safen der indeholder SOFD ApiKey (svarer til UploadConfig.SofdCoreApiKey). | | CyberArk.CyberArkObject.Backend | | Navnet på objektet i CyberArk-safen der indeholder backend-passwordet (svarer til Backend.Password). | | UploadConfig.Enabled | False | Sæt til "True" hvis man ønsker at konfigurationsfilen uploades til SOFD Core | | UploadConfig.SofdCoreUrl | https://kommune.sofd.io | Skal udfyldes hvis ovenstående er sat til True. Her skal stå URL'en på SOFD Core | | UploadConfig.SofdCoreApiKey | Xxxx | Skal udfyldes hvis ovenstående er sat til True. Skal udfyldes med ApiKey for AD Dispatcher agenten. Bemærk denne er forskellig fra Backend.Password | > [!NOTE] > 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. | Version | Dato | Ændring | | --- | --- | --- | | 2.9.1 | 08.01.2026 | Tilføjet fejlhåndtering i tilfælde af at en delta-sync-bruger er blevet flyttet i AD | | 2.9.0 | 03.01.2026 | Tilføjet understøttelse af indstillingen ActiveDirectory.IncludeOUs | | 2.8.0 | 17.10.2025 | Ændret binding-indstillinger ved forbindelse til AD | | 2.7.0 | 03.07.2025 | Tilføjet styring via DisableAccountOrders-attributten | | 2.6.0 | 10.01.2025 | Tilføjet styring af tilhørsforhold på OU-niveau | | 2.5.0 | 08.01.2025 | Tilføjet egenskaben AffiliationStopDate til at sætte stopdato på tilhørsforhold | | 2.4.1 | 28.11.2024 | Kun udførlig logning ved udelukkelse | | 2.4.0 | 07.10.2024 | Konfigurationsindstilling til at ignorere en bestemt DC | | 2.3.0 | 01.08.2024 | Tilføjet understøttelse af CyberArk (Privileged Access Management) | | 2.2.1 | 31.01.2024 | Rettet udlæsning af AccountExpirationDate (den læste 1 dag for tidligt) | | 2.2.0 | 10.01.2024 | Læser AltSecurityIdentities hvis den indeholder MitID Erhverv-UUID'et | | 2.1.1 | 29.11.2023 | Rettet off-by-one-fejl i udløb af adgangskode | | 2.1.0 | 24.11.2023 | Tilføjet understøttelse af at hente whenCreated fra AD-brugeren | | 2.0.1 | 27.07.2023 | Tilføjet fejlhåndtering ved forbindelse til en DC | | 2.0.0 | 24.10.2022 | Understøtter indlæsning af UPN i SOFD | | 1.9.1 | 20.04.2022 | Rettet fejl ved læsning af lastpwdset fra deltasync | | 1.9.0 | 07.03.2022 | Understøtter DepartmentNumber og FaxNumber på AD-konti | | 1.8.2 | 17.12.2021 | Kan nu udelukke OU'er | | 1.8.1 | 28.06.2021 | Rettet NPE ved tjek for kontolåsning | | 1.8.0 | 28.06.2021 | Læser LockoutTime | | 1.7.3 | 07.06.2021 | Rettet versionerings-opsætning | | 1.7.2 | 04.06.2021 | Sender nu ClientVersion-header til backend-API'et | | 1.7.1 | 02.06.2021 | Rettet problem med udløb på slettede konti | | 1.7.0 | 19.05.2021 | Bruger TLS 1.2 | | 1.6.0 | 19.04.2021 | Sender AccountExpire-information til SOFD Core | | 1.5.1 | 14.10.2020 | AD-synkroniseringsinterval er nu et konfigurerbart cron-udtryk | | 1.5.0 | 05.06.2020 | Understøtter billeder fra AD | | 1.4.0 | 22.05.2020 | Understøtter læsning af AD-data fra fil i stedet for fra AD | | 1.3.0 | 23.04.2020 | Understøtter upload af lokal konfiguration til SOFD | | 1.2.0 | 09.04.2020 | Sender "dage til næste adgangskodeskift" til SOFD | | 1.1.0 | 04.04.2020 | Forenklet konfiguration, forbedret backend-integration | | 1.0.2 | 24.01.2020 | Understøttelse af Mobile og SecretMobile | | 1.0.1 | 15.01.2020 | Tilføjet changelog. Forbindelser til Active Directory via LDAP kan nu kræve signering. | | 1.0.0 | | Ingen changelog |