Brugerkonto Agent

Brugerkonto Agent udfører OS2sofds kontoordrer lokalt hos kommunen. Den opretter, aktiverer, deaktiverer og sletter brugerkonti i Active Directory og Exchange på baggrund af de bestillinger, OS2sofd danner. Dette dokument beskriver installation og konfiguration.

KomponentServicenavnDownloadÆndringslog
Brugerkonto AgentSOFD Core Account AgentDownload (OS2sofd 2026R2 og nyere)
Download (OS2sofd 2026R1 og tidligere)
Ændringslog

Forudsætninger#

Windows Server#

Servicen skal installeres på en Windows maskine med:

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

Service konto i AD#

Der skal oprettes en service konto i kommunes AD.

Kontoen skal have skriveadgang til alle de bruger-attributter der skal opdateres fra SOFD Core, inkl CPR nummer attributten.

Kontoen skal ligeledes have lov til at oprette AD konti, sætte kodeord på AD konti, samt oprette Exchange konti via powershell remoting (Enable-Mailbox og Enable-RemoteMailbox kommandoer).

Det sidste kræver at brugerkontoen er medlem af gruppen “Organization Management”.

API bruger til SOFD Core backend#

Der skal i konfigurationen indtastes en API nøgle til SOFD Core. Denne kan oprettes i SOFD Cores administrative brugergrænseflade. Det er vigtigt at denne API nøgle tildeles skriveadgang til SOFD Core, da den skal opdatere SOFD Core med status på bestillinger af brugerkonti.

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 og Exchange server 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 applicationSettings sektionen i xml-filen SOFD Core User Agent.exe.config som ligger i roden af installationsmappen (default C:\Program Files (x86)\Digital Identity\SofdCoreAccountAgent).

IndstillingEksempelKommentar
SofdUrlhttps://kommune.sofd.ioPeger på SOFD installationen for kommunen
SofdApiKeyxxxxxxDet kodeord som er valgt til klienten i SOFD
ExchangeCreateEnabledTrueHvis der løbende skal oprettes nye Exchange konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”
ExchangeDeactivateEnabledTrueHvis der løbende skal deaktiveres Exchange konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”
ExchangeCleanupEnabledTrueHvis der løbende skal udføres oprydning (CLEANUP) på Exchange konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”.
ExchangeServerexchange.kommune.dkServernavnet på exchange serveren
ExchangeDefaultMailDomain@kommune.dkMail domæne
ExchangeCustomMailDomains06e489a4-169f-4242-bb30-41148f0a7c6c=@kommune2.dk;5f447097-a9bd-419a-81c7-00b2b613c8e3=@kommune3.dkSemikolon-separeret angivelse af hvilke UUID’er (på enheder) der skal have et andet mail domæne. Efterlad blank hvis dette ikke er ønsket.
ExchangeOnlineTrueSættes til “True” hvis der er tale om et hybrid setup, hvor Exchange konti skal oprettes i skyen via en hybrid gateway.
ExchangeOnlineMailDomain@kommune.mail.onmicrosoft.comUdfyldes hvis ovenstående er True, og skal sættes til online domænet
ExchangeUsePSSnapinFalseSættes til “True” hvis agenten skal anvende “Add-PSSnapin Microsoft.Exchange.Management.powershell” i stedet for “New-PSSession …”. Dette kræver at snap-in er installeret på serveren, men er nødvendigt såfremt man ønsker at afvikle agenten under en managed service account (GMSA). Installation af Exchange Snapin er beskrevet i afsnittet nedenfor.
ExchangeCreatePowershellExchange\createExchange.ps1Sti til powershell script der afvikles i forbindelse med oprettelse af Exchange konti. Kan sættes til blank hvis man ikke ønsker noget powershell afviklet.
ExchangeDeactivatePowershellExchange/deactivateExchange.ps1Sti til powershell script der afvikles i forbindelse med deaktivering af Exchange konti. Kan sættes til blank hvis man ikke ønsker noget powershell afviklet.
ExchangeCleanupPowershellExchange\cleanupExchange.ps1Sti til powershell script der afvikles i forbindelse med oprydning (CLEANUP) af Exchange konti. Kan sættes til blank hvis man ikke ønsker noget powershell afviklet.
ActiveDirectoryEnableAccountCreationTrueHvis der løbende skal oprettes nye AD konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”.
ActiveDirectoryEnableAccountDeactivationTrueHvis der løbende skal deaktiveres AD konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”.
ActiveDirectoryEnableAccountDeletionTrueHvis der løbende skal slettes AD konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”.
ActiveDirectoryEnableAccountCleanupTrueHvis der løbende skal udføres oprydning (CLEANUP) på AD konti på baggrund af bestillinger i SOFD, skal denne sættes til “True”.
ActiveDirectoryAttributeCpremployeeNumberDenne skal udfyldes med navnet på den attribut i AD, hvor medarbejdernes CPR nummer skal sættes ved oprettelse.
ActiveDirectoryAttributeEmployeeIdemployeeIdDenne attribute skal KUN udfyldes hvis man kører i det scenarie hvor der oprettes en AD konto per ansættelse. I så fald skal den udfyldes med navnet på den attribut hvor man ønsker at medarbejder ID’et skal skrives til
ActiveDirectoryUserOUOU=Users,DC=kommune,DC=localDen OU i AD’et hvor brugerkonti skal oprettes
ActiveDirectoryCreatePowershellActiveDirectory\createUser.ps1Stien til det powershell script der skal afvikles ved oprettelse af nye AD konti. Lad den være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryReactivatePowershellActiveDirectory\reactivateUser.ps1Stien til det powershell script der skal afvikles ved genaktivering (REACTIVATE) af en eksisterende, deaktiveret AD konto. Lad den være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryDeactivatePowershellActiveDirectory\disableUser.ps1Stien til det powershell script der skal afvikles når en AD konto deaktiveres. Lad den være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryDeletePowershellActiveDirectory\deleteUser.ps1Stien til det powershell script der skal afvikles når en AD konto slettes. Lad den være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryCleanupPowershellActiveDirectory\cleanupUser.ps1Stien til det powershell script der skal afvikles ved oprydning (CLEANUP) af en deaktiveret AD konto. Agenten udfører kun oprydningen hvis kontoen stadig er deaktiveret i AD. Lad den være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryEnableAccountExpireTrueAngiver om applikationen må sætte udløbsdato på AD konti eller ej. Denne skal være sat til True, hvis man bruger pause-markeringer i SOFD Core.
ActiveDirectoryDeletePowershellBeforeDeleteFalseAngiver om det lokalt-tilpassede powershell script ved sletning skal afvikles før sletningen gennemføres i AD (default false).
UPNChoiceEXCHANGESættes til “AD”, “EXCHANGE” eller “BOTH”, og angiver hvilken kontotype der bestemmer hvad der skrives i UserPrincipalName på brugeren i AD. Ved “BOTH” anvendes først AD når denne oprettes, og det bliver så overskrevet når/hvis brugeren får en exchange konto.
DefaultUPNDomain@kommune.dkSåfremt UPNChoice er “AD”, anvendes denne som suffix efter samaccountname i UserPrincipalName
AlternativeUPNDomains185af372-5f79-42f9-8578-b91f20adf6fb=@domain1;a34dc2c4-97bd-42ec-a9fb-42d31c2f21bb=domain2Semikolonsepareret streng med org-uuid,UPNDomain som kan anvendes hvis UPNChoice er “AD” og ansatte i nogle enheder skal have et andet UPN domæne i end default (f.eks. @kommunebiblioteker.dk)
ExistingAccountExcludeOUsOU=Slettede brugere,DC=kommune,DC=dkSemikolon-separareret liste af Ouer. Brugere under disse OUer vil blive ignoreret når agenten skal afgøre om en eksisterende bruger skal gen-aktiveres, eller om der skal oprettes en ny bruger.
ActiveDirectoryJobCron0 0-59/5 * ? * *Cron udtryk til afvikling af oprettelse af AD konto-ordrer.
ExchangeJobCron0 1-59/5 * ? * *Cron udtryk til afvikling af oprettelse af Exchange konto-ordrer.
ActiveDirectoryExpirePasswordOnCreateTrueSættes til “False” hvis brugere ikke skal tvinges til at skifte kodeord ved næste login efter oprettelse af AD konto. Default er “True”.
ExchangeOnlyPowershellTrueSættes til “True” hvis agenten ikke skal benytte den indbyggede Exchange-integration, men udelukkende afvikle de konfigurerede Exchange powershell scripts.
ActiveDirectoryInitialPasswordDet initiale kodeord der sættes på nyoprettede AD konti. Hvis feltet er tomt, genereres et tilfældigt kodeord (GUID).
ActiveDirectoryExpirePowershellActiveDirectory\expireUser.ps1Stien til det powershell script der skal afvikles når en AD konto sættes til at udløbe (pause-markering). Lad være blank hvis der ikke ønskes afviklet noget powershell.
ActiveDirectoryUserIdGroupingsSemikolon-separeret liste af præfikser der anvendes til at gruppere usernames, f.eks. for at adskille interne og eksterne brugere under generering af nye usernames.
IgnoredDCPrefixPræfiks der anvendes til at filtrere domain controllers fra. Domain controllers hvis navn starter med dette præfiks ignoreres ved discovery.
CyberArkEnabledFalseSættes til “True” for at hente SOFD API-nøglen fra CyberArk i stedet for direkte fra SofdApiKey.
CyberArkAPIhttps://cyberark.kommune.dkURL’en til kommunens CyberArk Web Service (CCP/AIM). Anvendes når CyberArkEnabled er “True”.
CyberArkAppIdSOFDCoreApp ID i CyberArk der anvendes ved opslag af SOFD API-nøglen.
CyberArkSafeSOFDNavnet på den safe i CyberArk hvor SOFD API-nøglen er gemt.
CyberArkObjectSofdApiKeyNavnet på det objekt i CyberArk safen der indeholder SOFD API-nøglen.

Start af service#

Efter servicen er konfigureret startes den via Windows Services eller tilsvarende kommandolinjeværktøjer. Her er det vigtigt at servicen konfigureres til at starte med den AD konto som har de fornødne rettigheder.

Afvikling af powershell#

Hvis man har slået afvikling af powershell til, skal man opsætte et powershell script på nedenstående måde. Bemærk det er muligt at slå det til “per hændelse”, fx for hhv oprettelse og deaktivere af AD konti og oprettelse af Exchange konti.

For alle hændelsestyper, er det den samme struktur som powershell scriptet skal have

function Invoke-Method {
    param(
        [string] $SAMAccountName = $(throw "Please specify a sAMAccountName."),
        [string] $Name = $(throw "Please specify a name."),
        [string] $Uuid = $(throw "Please specify a uuid.")
    )

    $result = "Creating " + $SAMAccountName + ", " + $Name + ", " + $Uuid;

    $result | Out-File 'c:\logs\log.txt'
}

Der skal være en funktion i scriptet der hedder “Invoke-Method”, som tager 3 obligatoriske argumenter, hhv

  • sAMAccountName
  • Name
  • Uuid

Disse 3 værdier vil indeholde hhv kontonavnet på den AD bruger som hændelsen vedrører, det fulde navn på medarbejderen, samt UUID’et på medarbejderen i SOFD, så man kan lave opslag i SOFD for at hente yderligere oplysninger.

Der følger 3 eksempel-scripts med når man installerer servicen, som man kan rette i. De er alle ens, og skriver blot hændelsen til en logfil.

Agenten sender derudover et antal valgfrie navngivne parametre når disse er tilgængelige: EmailAlias (alias for nye Exchange-konti), DC (domain controller), OptionalJson (kontekstdata fra ordren), Date (udløbsdato ved expire-bestillinger) og OrderedBy (id på den administrator der har bestilt handlingen). Disse kan tilføjes til Invoke-Method-funktionen som ekstra param-argumenter, hvis scriptet skal bruge dem.

Exchange Snapin (kun ved GMSA-konto)#

Exchange Snapin er kun relevant, hvis Brugerkonto Agent skal afvikles under en Group Managed Service Account (GMSA). I så fald kan agenten ikke anvende den almindelige Exchange-fjernforbindelse (New-PSSession), men skal bruge Exchange Management Snapin lokalt på serveren. Det aktiveres ved at sætte ExchangeUsePSSnapin til True (se indstillingstabellen ovenfor), hvilket kræver at snap-in’en er installeret som beskrevet nedenfor. Kører agenten under en almindelig domænekonto, er dette afsnit ikke relevant.

For at bruge Exchange Snapin modul skal det installeres. Dette gøres ved at installere Exchange Management Console:

Brug jeres exchange server installations iso fil.

Installerer kun exchange management console, ellers koster det en exchange licens. men tjek med jeres eget licens team i forhold til de aftaler i har.

Installation af Exchange Management Console#

Gennemgå installations-guiden sådan:

  1. På “Check for Updates?”: vælg “Don’t check for updates right now”.
  2. Setup kopierer de nødvendige filer (“Copying Files…”).
  3. På “Introduction”: tryk Next.
  4. På “License Agreement”: vælg “I accept the terms in the license agreement” og tryk Next.
  5. På “Recommended Settings”: vælg “Use recommended settings” og tryk Next.
  6. På “Server Role Selection”: vælg kun “Management tools”, sæt flueben i “Automatically install Windows Server roles and features that are required to install Exchange Server”, og tryk Next.
  7. På “Installation Space and Location”: behold stien C:\Program Files\Microsoft\Exchange Server\V15 og tryk Next.
  8. På “Readiness Checks” (Prerequisite Analysis) vises eventuelle fejl (fx pending reboot, AD-schema der ikke er opdateret, eller manglende IIS-komponenter).
  9. Installér de komponenter, Exchange beder om, og tryk Retry.
  10. Tryk Install. (På “Readiness Checks” kan der være advarsler, fx at Setup forbereder organisationen med ‘Setup /PrepareAD’.)
  11. Når “Setup Completed” vises, tryk Finish, og genstart computeren for at fuldføre installationen.

Se eventuelt Microsofts vejledning: Install the Exchange management tools.

Rettigheder til service kontoen#

Når Exchange Snapin er installeret, skal service kontoen have læseadgang til Exchange-installationen, og særligt til filen inproxy.dll, der ligger her:

C:\Program Files\Microsoft\Exchange Server\V15\Mailbox\address\smtp\amd64\inproxy.dll

Giv service kontoen se-SofdCore-ADS “Full control” til filen (under “Advanced Security Settings” for inproxy.dll).

Ændringslog#

Ændringslog for Brugerkonto Agent. Nyeste version øverst.

VersionDatoÆndring
3.0.024.05.2026BREAKING CHANGE
• denne version virker kun med OS2sofd 2026R2 eller nyere
• denne version introducerer reactivate-ordretypen og forhindrer create-ordrer i at udløse genaktivering
• denne version introducerer cleanup-PowerShell-scripts, der udløses af en ny “cleanup”-ordretype, beregnet til at køre PowerShell dage efter deaktiveringsjobbet
2.21.005.05.2026Tilføjet indstillingen ActiveDirectoryExpirePasswordOnCreate, der valgfrit kan springe “skift adgangskode ved næste login”-flaget over på nyoprettede konti
2.20.029.04.2026Behandler deaktiver-, slet- og udløbs-ordrer før opret-ordrer for at undgå “object already exists”-fejl, når en konto deaktiveres og genoprettes i samme kørsel
2.19.023.04.2026Reduceret hukommelsesforbrug i Exchange-PowerShell-scripts ved at erstatte Import-PSSession med Invoke-Command
2.18.010.12.2025Tilføjet håndtering af meget lange navne for at undgå CN-længde over 64 tegn
2.17.029.09.2025Tilføjet pause-data-parameter (json) til ExpireJob
2.16.002.06.2025Mulighed for at lade genaktivering af en AD-konto fejle, hvis der findes flere deaktiverede AD-konti med samme CPR
2.15.010.05.2025Videregiver hvilken administrator der bestilte oprettelsen af AD-kontoen
2.14.001.05.2025Brugerdefineret konfiguration af brugernavns-grupperinger til at adskille eksterne og interne brugere under IdM-processer
2.13.029.04.2025Escaper anførselstegn i optionalJson i custom PowerShell
2.12.007.02.2025Understøtter at køre slet-PowerShell før kontoen slettes
2.11.010.12.2024Tilføjet Expire-PowerShell-script og rettet nogle PowerShell-fejl
2.10.022.11.2024Tilføjet valgfri DC-filtrering i konfigurationen
2.9.125.10.2024Rettet syntaksfejl i createExchange.ps1
2.9.005.09.2024Understøtter valgfri JSON-payload ved oprettelse af AD-konto
2.8.001.08.2024Tilføjet understøttelse af CyberArk (Privileged Access Management)
2.7.213.05.2024Rettet fejl i parameter-rækkefølgen ved kald af Exchange-PowerShell-scripts
2.7.127.02.2024Stopper afviklingen ved fejl (rettet 1 tilfælde hvor afviklingen fortsatte efter en fejl)
2.7.011.01.2024Tilføjet domain controller-parameter til Exchange-scripts
2.6.023.03.2023Rettet en fejl ved aktivering af on-premise Exchange-postkasse for brugere med eksisterende postkasse
2.5.003.02.2023Ignorerer vikar-konti (vikXXXX-konti oprettet af OS2vikar)
2.4.409.01.2023Udelukkelse af OU’er i konfigurationen har nu kun effekt ved forsøg på genaktivering af konti
2.4.303.10.2022Rettet syntaksfejl i disableMailboxOnPremise.ps1
2.4.219.05.2022Rettet null pointer-undtagelse ved deaktivering af konti
2.4.118.05.2022Tilføjet fejllogning når deaktivering af konto fejler
2.4.019.04.2022Kan nu konfigurere jobbets afviklingstidspunkt i konfigurationsfilen
2.3.028.03.2022Kan nu udelukke OU’er ved tjek for eksisterende AD-konti
2.2.227.01.2022Kan nu bruge BOTH som UPNChoice-indstilling. Ændret måden remote-postkasser deaktiveres på.
2.2.118.01.2022Rettet en fejl, der forhindrede sletning af AD-konto, hvis bruger-objektet havde underobjekter i AD
2.2.022.12.2021Understøtter SUBSTITUTE (vikar) affiliationTypes (kræves for at bruge vikar-modulet i SOFD Core)
2.1.1020.12.2021Når der aktiveres en remote-postkasse på en bruger med usertype RemoteUserMailbox, deaktiveres den eksisterende postkasse nu først
2.1.903.11.2021Tilføjet mulighed for at vælge mellem Exchange og AD som kilde til UserPrincipalName-attributten
2.1.809.07.2021Opdateret eksempel-PowerShell-scripts til at vise $DC-parameteren, og rettet konfigurations-upload
2.1.716.06.2021EnableMailboxRemote finder nu en DomainController før postkassen sættes
2.1.614.06.2021EnableMailboxRemote finder nu en DomainController før postkassen aktiveres
2.1.507.06.2021Tilføjet rettelser til versionering
2.1.403.06.2021DisableExchange rydder nu mail-attributten i AD
2.1.302.06.2021Rettelse i PowerShell-runneren ved håndtering af return-statements
2.1.202.06.2021Rettet fejl, der fik PowerShell-fejl til at fremstå som succes
2.1.120.05.2021Rettet problem med userAccountControl-flaget
2.1.019.05.2021Understøtter TLS 1.2
2.0.019.04.2021Videresender DC til lokale PowerShell-scripts; understøttelse af AccountExpiry-ordretyper; omskrivning af Exchange-integrationen til PowerShell
1.6.825.03.2021Tilføjet prefix-metode til writeback-DSL.
1.6.723.03.2021Rettet fejl i OU-udelukkelse. Tilføjet master-filter for Manager.
1.6.619.03.2021Rettet Manager-fejl. Tilføjet OU-udelukkelseskonfiguration til writeback.
1.6.515.03.2021Rettet fejl i tag-DSL
1.6.412.03.2021Rettet fejl ved kald af DeactivateExchange-PowerShell
1.6.310.03.2021Tilføjet static-metode til writeback-DSL. Tilføjet håndtering af accountExpires i writeback
1.6.205.03.2021Tilføjet understøttelse af telefontyper. Tilføjet left- og right-funktion til writeback-DSL
1.6.124.02.2021Rettet NPE-undtagelse når brugeren ikke har et primært tilhørsforhold. Fjernet kravet om ExchangeServer-egenskaben når der køres med ExchangeOnlyPowershell=true.
1.6.022.02.2021Understøttelse af kun at køre PowerShell ved oprettelse/sletning i Exchange
1.5.404.02.2021Rettet nedarvningsfejl i tag-mapping
1.5.302.02.2021Rettet fejl ved skrivning af samme sofd-værdi til flere AD-attributter. Tilføjet understøttelse af tags ved skrivning til AD-attributter.
1.5.214.12.2020Rettet fejl i ExchangeService, der gjorde at PowerShell-sessioner ikke blev frigivet korrekt
1.5.111.12.2020Understøttelse af unilogin-mapping i writeback
1.5.010.11.2020Understøtter vedligehold af AD’ets manager-attribut
1.4.121.10.2020Understøtter concat() til attribut-writeback
1.4.029.09.2020Implementering af ny navnestandard (kræver at SOFD Core også opdateres)
1.3.628.09.2020Tilføjet quickfix til EmployeeID-matchningsproblem ved genaktivering af AD-konti
1.3.503.09.2020Skiftet til 64bit. Kan nu bruge PSSnapin ved forbindelse til Exchange.
1.3.428.08.2020Yderligere logning når brugernavn ikke kan genereres
1.3.327.08.2020Fejlrettelse til e-mailadressen i OPUS-mailudsendelse
1.3.214.08.2020Rettet PowerShell-pipeline-fejl ved oprettelse af Exchange-postkasse
1.3.107.08.2020Sætter Alias og EmailPolicy ved aktivering af remote-postkasse
1.3.006.08.2020Quickfixes til brugernavnsgenerering for Exchange og OPUS (midlertidigt, indtil en langsigtet løsning laves)
1.2.404.08.2020Sender EmailAlias til Exchange-PowerShell-scripts
1.2.324.07.2020Understøtter alle telefontyper
1.2.230.06.2020Understøtter konti med bindestreg-CPR ved genaktivering
1.2.125.06.2020Rettet fejl i den nye brugernavnsgenerator
1.2.012.06.2020Understøtter userIds med fast længde
1.1.022.04.2020Tillader upload af den lokale konfiguration til SOFD Core
1.0.403.04.2020Ændret adfærd for EmployeeID-feltet, så det også kan sættes i ikke-singleUser-tilfælde
1.0.302.04.2020Rettet tastefejl i logbesked, og rettet mappe-placering af ad-mapping.xml
1.0.229.03.2020Tilføjet -Confirm:$false til Disable-Mailbox-kommandoer for Exchange
1.0.128.03.2020Tilføjet genereret userId til statusbeskeden i SOFD Core GUI; rettet fejl i Attribute Writeback, der forårsagede en FULD synkronisering hvert 5. minut
1.0.026.03.2020Opdateret med rettelse for userTypes