Ontwerp

Must-have

API

De API wordt gebouwd met OpenAPI, specifiek de NuGet package Microsoft.Azure.Functions.Worker.Extensions.OpenApi. Hiermee kan ik gemakkelijk nieuwe endpoints maken, en het sluit direct aan met Azure Functions. model

De volgende endpoints worden gerealiseerd:

  • /programmes
  • /courses
  • /organisations

Per endpoint worden minimaal de verplichte velden gebruikt.

Een endpoint ziet er ongeveer zo uit:

[Function("GetOrganisations")]
[Authorize("Reader")]
public async Task<HttpResponseData> GetOrganisations() { }

JWT (OAuth2)

Om ervoor te zorgen dat niet iedereen zomaar de API kan gebruiken en om rechten te kunnen beheren, wordt gebruik gemaakt van JWT tokens samen met OAuth2.

Via Azure kan een gebruiker of applicatie een JWT token aanvragen met behulp van een Client ID en Client Secret. In de token zitten vervolgens rollen opgeslagen die later gebruikt worden voor autorisatie binnen de API.

Bijvoorbeeld:

  • ReadWrite
  • Read

De rollen worden gecontroleerd via een [Authorize] attribuut boven de Azure Function.

Secrets zoals:

  • Client Secret
  • Connection Strings
  • API keys

worden opgeslagen binnen Azure en niet hardcoded in de applicatie.

secret

Should-have

Om ervoor te zorgen dat iedereen weet hoe de OOAPI werkt, zal ik documentatie bijhouden via Azure DevOps. Dit is waar de Wiki van het HIP staat. Ik zal niet alleen opschrijven wat ik allemaal al gedaan heb, maar ook wat er nog gedaan moet worden. mapping