Web-brugerstyring med hård hånd

Brugerstyring til web er ikke så svært at udvikle med session-variabler og login-scripts, men den hjemmelavede brugerstyring har nogle unoder i forhold til at benytte webserverens indbyggede HTTP-autentifikation. Apache har en række muligheder til at styre brugere, og i denne artikel ser vi på mulighederne.

Hvad er HTTP-autentifikation

Brugerstyring er vigtig til mange typer af webbaserede applikationer. Der er ofte behov for, at applikationen holder styr på, hvilke brugere, der udfører hvilke handlinger, fra de har logget på systemet, til deres session er afsluttet.

Grundlæggende er der to måder at udføre brugerstyring på: HTTP-brugeridentifikation (Basic authentication), som webserveren håndterer, og styring med session-variabler.

Brugerstyring med session-variabler har vi gennemgået i en tidligere artikel. Denne metode er både nem at implementere og vil ofte opfylde behovet.

Men problemet med denne metode er, at det kun er sider med scripts, som kan beskyttes. Statiske HTML-sider og andre ressourcer, som grafik og andet, kan stadig tilgås, hvis blot brugeren kender webadressen til den pågældende ressource.

I nogle tilfælde kan man have et behov for fuldstændig at lukke dele af mappe-hierarkiet på webserveren af for uvedkommende brugere. Så kan man putte hvad som helst ind i brugernes mapper, og være helt sikker på, at den kun er autentificerede brugere, som har adgang til ressourcerne i disse mapper.

Umiddelbart kan HTTP-autentifikation virke en smule indviklet, da det kræver et samspil med webserveren, men det behøver slet ikke være så svært.

Hvad er HTTP-autentifikation
Ved HTTP-brugeridentifikation (Basic authentication) sættes webserveren op til at betragte en del af webstedet som beskyttet. Man skal definere et realm - et rige - hvor brugeren må befinde sig. Hvis brugeren bevæger sig fra et realm til et andet, skal hun igen indtaste brugernavn og password. For de nysgerrige gennemgår vi processen i detaljer i det følgende.

Når en ressource er sat op til at være beskyttet med basic authentication, som metoden kaldes, foregår det ved at webserveren returnerer statuskode

401 Authentication Required

til browseren. Når browseren modtager svaret, spørger den brugeren om brugernavn og password. I Internet Explorer og Netscape foregår det ved, at en lille dialogboks kommer frem. De indtastede værdier sendes tilbage til serveren, og hvis brugerens oplysninger stemmer overens med serveren brugerliste, returneres den ønskede ressource.

Da HTTP-protokollen er tilstandsløs, skal denne transaktion foretages for hver eneste beskyttede ressource. Heldigvis for brugeren gemmer browseren login-informationen i resten af sessionen, og fremsender brugernavn og password automatisk, når brugeren bevæger sig rundt i det beskyttede realm. Når sessionen er slut, som regel når brugeren lukker browser-programmet, smides informationen væk, og ved næste session starter login-processen forfra.

Brugerfiler og Apache-konfiguration

I Apache kan brugere, som skal styres med HTTP-autentifikation, opsættes manuelt, og det gennemgår vi i det følgende.

Med Apache følger programmet htpasswd, som skaber en fil med brugeroplysninger. Når en ny password-fil skal oprettes, skal parameteren -c for create angives. Stien til filen, og til slut brugernavnet som skal tilføjes passwordfilen, skal også oplyses. Programmet afvikles i et terminalvindue, og under Windows ser det sådan ud:

D:\PROGRA~1\EASYPHP\APACHE\BIN>htpasswd -c testbrugerfil tania
Automatically using MD5 format on Windows.
New password: *****
Re-type new password: *****
Adding password for user tania

Nu tilføjes de følgende linier til Apaches konfigurationsfil:
Alias /test/ "D:\Program Files\EasyPHP\www\test"

<Directory "D:\Program Files\EasyPHP\www\test">
AuthType Basic
AuthName "By Invitation Only"
AuthUserFile "D:\Program Files\EasyPHP\apache\bin\testbrugerfil"
Require valid-user
</Directory>


Som altid med Apache er der mange konfigurationsmuligheder, og de gennemgås udførligt i Apache-manualen.

Derefter genstartes serveren, og når klienten åbner adressen

http://localhost/test/
dukker dialogboksen frem i browseren:

Metoden med at tilføje brugere manuelt er selvfølgelig ikke brugbar, hvis der er mange brugere. Derudover kan der opstå ydelsesmæssige problemer, hvis filen med brugeroplysninger bliver for stor.

Heldigvis kan Apache konfigureres til at benytte databaser som lagring for brugeroplysninger. En række forskellige database-typer er understøttet, og det nemmeste er at benytte "flade" databaser, enten i formatet DB (også kendt som Berkeley DB) og DBM-filer. De to Apache-moduler, som klarer ærterne her, er henholdsvis mod_auth_db og mod_auth_dbm, som skal være installeret.

Den gode nyhed er, at sådanne database-filer kan manipuleres ved hjælp af scripting-sprog som for eksempel PHP. På den måde kan man altså automatisere processen, og bygge mere venlige webgrænseflader til administration af brugerne.

De flade databaser er nemme at have med at gøre, da de simpelthen blot binder en bestemt nøgle med en bestemt værdi. Det er primitivt, men let at gå til. Funktionerne til at håndtere tabellerne med findes i kapitel XX. (DBM Functions) i den seneste version af PHP-manualen samt kapitel XVII. Database (dbm-style) abstraction layer functions. Ligeledes kan PHP-scripts tilgå brugerens status ved hjælp af variablerne $PHP_AUTH_USER og $PHP_AUTH_PW. Herom kan man læse mere i en artikel på websitet WebmasterBase.

Læses lige nu

    Annonce

    Patent- og Varemærkestyrelsen

    Infrastrukturspecialist - byg bro mellem cloud og datacenter

    Københavnsområdet

    Capgemini Danmark A/S

    Open Application (Denmark)

    Københavnsområdet

    Capgemini Danmark A/S

    Client Partner

    Københavnsområdet

    Forsvarsministeriets Materiel- og Indkøbsstyrelse

    Specialister til Netværksoperations til Forsvarets nye Digitale Backbone

    Midtjylland

    Computerworld Events

    Vi samler hvert år mere end 6.000 deltagere på mere end 70 events for it-professionelle.

    Ekspertindsigt – Lyt til førende specialister og virksomheder, der deler viden om den nyeste teknologi og de bedste løsninger.
    Netværk – Mød beslutningstagere, kolleger og samarbejdspartnere på tværs af brancher.
    Praktisk viden – Få konkrete cases, værktøjer og inspiration, som du kan tage direkte med hjem i organisationen.
    Aktuelle tendenser – Bliv opdateret på de vigtigste dagsordener inden for cloud, sikkerhed, data, AI og digital forretning.

    Sikkerhed | Online

    Computerworld Cyber Briefing: Cyberresiliens

    De fleste organisationer har en plan for recovery. Få ved dog, hvilke systemer der skal op at køre først for at holde forretningen i gang. Kom med, når vi ser nærmere på, hvordan Cohesity, Dustin og HPE hjælper organisationer med at definere og...

    It-løsninger | Horsens

    Dynamics AX og FO: Næste kapitel for din virksomhed

    Få overblik over vejen fra Dynamics AX til Finance & Operations – eller løft værdien af Dynamics FO. Hør praksisnære cases om strategi, migration og optimering. Vælg spor, få dyb faglig indsigt, styrk beslutningerne. Tilmeld dig konferencen i...

    Jura | København

    Compliance Day 2026

    Computerworld samler NIS2, AI Act, DORA, GDPR og ledelsesansvar i ét skarpt program. Få styr på kravene og omsæt dem til styring, beslutninger og handling i hverdagen. Tilmeld dig Compliance Day.

    Se alle vores events inden for it

    Navnenyt fra it-Danmark

    Stine Willemoes Kondrup, Senior Project Manager hos Ascom, har pr. 22. juni 2026 fuldført uddannelsen Master i it, linjen i organisation på Aalborg Universitet via It-vest-samarbejdet. Færdiggjort uddannelse
    Genetec har pr. 1. august 2026 ansat Jan Julin som Channel Account Executive. Han skal især beskæftige sig med styrke samarbejdet med partnere og kunder i Danmark, Finland og Baltikum. Han kommer fra en stilling som Senior Business Development Manager hos Dahua Technology. Han har tidligere beskæftiget sig med videoovervågning, adgangskontrol, sikkerhedsteknologi, salg og forretningsudvikling. Nyt job

    Jan Julin

    Genetec

    Sophie Dalsgaard Myhrmann, er pr. 1. september 2026 ansat hos Elbek & Vejrup A/S som Project Manager i Logistik & Produktion. Hun skal især beskæftige sig med projektledelse indenfor logistik og produktion. Hun er nyuddannet cand.it, i IT, kommunikation og Organisation fra Aarhus Univeristet. Nyt job

    Sophie Dalsgaard Myhrmann

    Elbek & Vejrup A/S

    Allan Hougaard, der arbejder med softwareudvikling og -arkitektur hos Sparinvest, har pr. 30. juni 2026 fuldført uddannelsen Master i it, linjen i softwarekonstruktion på Aarhus Universitet via It-vest-samarbejdet. Færdiggjort uddannelse

    Allan Hougaard

    Sparinvest