Integrasjon av Altinn-app med Maskinporten
Hvordan sette opp en integrasjon mellom en Altinn-app og Maskinporten.
Denne veiledningen viser hvordan du setter opp en Altinn-applikasjon med en HTTP-klient som benytter Maskinporten for autentisering av forespørslene. Dette er nyttig når applikasjonen må utføre autoriserte forespørsler på vegne av eieren av applikasjonen, i stedet for den aktive brukeren.
For å sette dette opp, må følgende gjøres:
- Sørg for at organisasjonen har tilgang til Azure Key Vault.
- Opprett integrasjonen mot Maskinporten i Samarbeidsportalen.
- Lagre autentiseringsnøkkelen for integrasjonen i Azure Key Vault.
- Konfigurer applikasjonen til å bruke Maskinporten-klienten og hente hemmeligheter fra Azure Key Vault.
Tilgang til Azure Key Vault
Før du går videre med denne veiledningen, må du forsikre deg om at du har tilgang til Azure Key Vault for organisasjonen din. Dette sikrer at nøklene som opprettes senere i veiledningen kan lagres riktig som hemmeligheter i Azure.
Hvis tilgang mangler, se Tilgang til logger og hemmeligheter.
Maskinporten-integrasjon
I denne delen skal vi sette opp Maskinporten-klienten. En del av oppsettet inkluderer opprettelse av nøkler som senere skal lagres i Azure Key Vault. Hvis ulike personer i organisasjonen har tilgang til forskjellige ressurser som trengs i denne prosessen, anbefales det å samarbeide og utføre disse trinnene på samme maskin. Dette er for å unngå å sende hemmeligheter mellom maskiner.
Når tilgang til å opprette hemmeligheter i Azure Key Vault er bekreftet, kan du fortsette med å opprette integrasjonen.
Konfigurasjon av Azure Key Vault
Når applikasjonen forberedes til å bruke hemmeligheter fra Azure Key Vault, må følgende trinn utføres:
Legg til hemmelighetene som ble hentet under konfigurasjon av Maskinporten-klienten, i Azure Key Vault:
- Base64-kodet JWT offentlig og privat nøkkelpar
- Klient-ID for integrasjonen
Det er viktig at navnet på disse hemmelighetene i Azure Key Vault tilsvarer navnet på seksjonen i appsettings-filen i kodebasen til applikasjonen.
For eksempel, hvis seksjonen for Maskinporten-integrasjonen ser slik ut:
{ "MaskinportenSettings": { "Environment": "test", "ClientId": "", "Scope": "altinn:serviceowner/instances.read", "EncodedJwk": "", "ExhangeToAltinnToken": true, "EnableDebugLog": true } }
Må hemmelighetene i Azure Key Vault ha navn som dette:
MaskinportenSettings--ClientId MaskinportenSettings--EncodedJwk
For at applikasjonen skal kunne lese hemmelighetene fra Azure Key Vault, må konfigureres først. Se seksjoner om hemmeligheter for hvordan dette oppnås.
Legg til appsettings-eksempelet ovenfor i
appsettings.{env}.json
-filen.
NB: Hemmelighetene leses av applikasjonen ved oppstart, så hvis du endrer hemmelighetene etter at applikasjonen er publisert, må du publisere applikasjonen på nytt før endringene trer i kraft.
Sett opp applikasjonen til å bruke Maskinporten-integrasjonen
Når applikasjonen skal tilpasses for å bruke Maskinporten-integrasjonen, må vi gjøre noen endringer i Program.cs
-filen.
Først må vi legge til MaskinportenHttpClient-tjenesten med riktig konfigurasjon i metoden RegisterCustomAppServices
:
void RegisterCustomAppServices(IServiceCollection services, IConfiguration config, IWebHostEnvironment env)
{
// ...
services.AddMaskinportenHttpClient<SettingsJwkClientDefinition, YourCustomClient>(config.GetSection("MaskinportenSettings"));
}
Deretter må vi legge til Azure Key Vault som konfigurasjonsleverandør til vår host. Dette gjøres ved å endre metoden ConfigureWebHostBuilder
:
void ConfigureWebHostBuilder(IWebHostBuilder builder)
{
builder.ConfigureAppWebHost(args);
// Add Azure KV provider for TT02 & Prod environments
if (!builder.Environment.IsDevelopment())
{
builder.AddAzureKeyVaultAsConfigProvider();
}
}