Opgaver - Modul 16

Opgave 1 - Undersøg en usikker API

På GitHub findes der begyndelsen til en sikker API. Den er ret usikker at bruge i praksis, da den er password-baseret (klartekst) og kun virker med passwordet “password123”. Den er dog et godt udgangspunkt til at få lavet noget mere sikkert.

I denne opgave skal du prøvekøre API’en, læse koden, lave nogle små ændringer og teste dem med Postman.

  1. Kopier koden fra modul16 / unsecure-api til en ny folder på din PC.
  2. Start programmet med dotnet run.
  3. Tilgå de tre endpoints som du kan se i Program.cs ved at bruge Postman eller tilsvarende program. Notér ned hvilke http status-koder du får tilbage.
  4. Der er to endpoints, der er beskyttede af hver deres policy. Læs koden i DummyAuthenticationHandler.cs og prøv at se om du kan regne ud hvilken af de to endpoints, man kan få adgang til, og hvordan man skal lave requestet i Postman, så adgangen virker og man får http status 200 som svar. Hint: Du skal tilføje noget under “Headers”.
  5. Hvornår får man 401 Unauthorized og hvornår får man 403 Forbidden?
  6. Hvordan bliver Program.cs og DummyAuthenticationHandler.cs bundet sammen?

Prøv at lave følgende ændring i koden:

  1. Det skal nu også være muligt at bruge passwordet “cake123”.
  2. Med det nye password, skal der være adgang til GET “/api/cake”, men ikke GET “/api/admin”.
  3. Test din ændring i Postman.

Opgave 2 - Hashing af passwords

Med udgangspunkt i koden fra opgave 1, skal der laves ændringer, så der ikke længere gemmes passwords i klartekst. I stedet skal der gemmes hash-værdier fra passwords. Vi gemmer stadig hash-værdierne direkte i koden for at holde det simpelt. Hash-værdierne skal være baseret både på et password og en salt.

Kort og godt skal følgende ændringer laves:

I filen modul16 / password-hashing / Program.cs kan du se et kodeeksempel på hvordan man kan lave et password om til en kryptografisk sikker hash value med salt i.

Test efterfølgende den forbedrede API med Postman.

Opgave 3 - Arbejd videre med din egen API

Med teknikkerne fra de forrige opgaver, tag en af dine egne API’er, og indfør nogle sikre endpoints der kun kan tilgås med det korrekte brugernavn og password. Test det i Postman.