Skip to main content

Microsoft Entra ID

Microsoft Entra ID er identitetstilbyderen Kartverket bruker internt for sine ansatte. Velger du Microsoft Entra ID som identitetstilbyder for din applikasjon, sÄ er det fordi du Þnsker Ä tilby tjenesten din for internt ansatte i Kartverket.

En klientregistrering i Microsoft Entra ID kalles for en app-registration. For Ă„ opprette en app-registration har du to muligheter:

  • Bruke Kubernetes-ressursen AzureAdApplication. Denne ressurstypen er tilgjengelig via Kubernetes-operatoren Azurerator, utviklet av NAV sitt plattformteam (NAIS).
  • Bruke Kubernetes-ressursen SecurityConfig, som er en Kartverket-tilpasset abstraksjon pĂ„ toppen av Azurerator. Les mer om SecurityConfig i dokumentasjonen for Accesserator. Denne vil opprette en AzureAdApplication-ressurs under panseret. Dersom du uansett

En vil typisk velge Ă„ bruke SecurityConfig fremfor AzureAdApplication dersom en uansett skal bruke fĂžrstnevnte til annen funksjonalitet, som Token Exchange, token-uthenting eller validering med Texas, OPA eller annet.

đŸ”č AzureAdApplication​

Azurerator introduserer CRD-en AzureAdApplication, som hÄndterer opprettelse og vedlikehold av app-registrations i Microsoft Entra ID. App-registrations opprettet med Azurerator vil fÄ navn basert pÄ hvor de er plassert i et Kubernetes-cluster, i.e. cluster:namespace:name. Etter Ä ha fullfÞrt opprettelsen, vil Azurerator opprette en Kubernetes-hemmelighet (Secret) i samme namespace med hemmeligheter som kan brukes av applikasjoner til tilgangsstyring, som for eksempel client_id, client_secret, private_key_jwt, diverse URL-er og lignende.

tip

Azurerator hÄndterer rullering av hemmeligheter for deg! Hemmeligheten som Azurerator oppretter vil ha to sett med client_id og private_key_jwt: ett aktivt og ett neste. NÄr det aktive settet nÊrmer seg utlÞp, vil Azurerator automatisk generere et nytt sett og oppdatere app-registreringen i Entra ID.

spec (object, required) – Spesifikasjon til AzureAdApplication

allowAllUsers (bool, required) – Bestemmer om alle brukere i tenanten som Azurerator er konfigurert mot skal fĂ„ tilgang.

claims (object, optional) – Definerer konfigurasjon av claims som inkluderes i tokenene som returneres til Entra ID applikasjonen.
groups ([]object, optional) – En liste over Entra ID gruppe ID-er som skal inkluderes i groups-claimet i tokenene utstedt av Entra ID. Dette tildeler ogsĂ„ grupper til app-registreringen brukt for tilgangskontroll. Kun direkte medlemmer av gruppene fĂ„r tilgang.

id (string, required) – Objekt-ID-en (OID) til en Entra ID-gruppe.

replyUrls ([]object, required) – URL-er som applikasjonen godtar som svaradresser etter autentisering.

url (string, required) – En godkjent svaradresse (reply URL) for applikasjonen.

logoutUrl (string, optional) – URL-en brukere blir omdirigert til nĂ„r de logger ut av applikasjonen..

preAuthorizedApplications ([]object, optional) – Definerer andre app-registreringer som er forhĂ„ndsautorisert til Ă„ fĂ„ tilgang til denne applikasjonen. Her refereres det til tilsvarende AzureAdApplication.

application (string, required) – Navnet pĂ„ den forhĂ„ndsgodkjente applikasjonen.

namespace (string, required) – Namespacet hvor den forhĂ„ndsgodkjente applikasjonen befinner seg.

cluster (string, required) – Clusteret hvor den forhĂ„ndsgodkjente applikasjonen befinner seg.

permissions (object, optional) – Spesifiserer hvilke claims den forhĂ„ndsautoriserte applikasjonen har.

scopes ([]string, optional) – Liste med egendefinerte tilgangs-scopes tildelt til den forhĂ„ndsautoriserte appliaksjonen.

roles ([]string, optional) – Liste med egendefinerte tilgangs-roller tildelt til den forhĂ„ndsautoriserte appliaksjonen.

secretName (string, required) – Navnet pĂ„ den resulterende Secret-ressursen som vil bli opprettet.

secretKeyPrefix (string, optional) – Et valgfritt brukerdefinert prefiks som brukes pĂ„ nĂžklene i den genererte hemmeligheten, og erstatter standardprefikset (AZURE).

secretProtected (bool, optional) – Angir om hemmeligheten skal tilbaketrekkes selv nĂ„r den ikke er i bruk.

singlePageApplication (bool, optional) – Angir om denne Entra ID-applikasjonen skal registreres som en single-page-application for bruk i klient-side-applikasjoner uten tilgang til hemmeligheter.

FÞlgende eksempel oppretter app-registreringen atgcp1-sandbox:tilgangsstyring-main:test-app. Den gir kun tilgang til direkte medlemmer av gruppene med objekt-ID 4bdc77ce-2a99-406c-a07e-88a1eba82dd9 eller 1262b1c5-d2db-44ad-96e3-ed8637e6b996. Den forhÄndsautoriserer ogsÄ app-registration med navn atgcp1-dev:other-namespace:other-app. NÄr registrering er fullfÞrt vil Azurerator opprette Kubernetes-hemmeligheten entraid-secret i namespacet tilgangsstyring-main.

Hvis denne klientregistreringen skal brukes sammen med Ztoperator for Ä beskytte din applikasjon og eventuelt logge inn brukere, sÄ er det et par felt som mÄ konfigureres riktig.

  • spec.replyUrls mĂ„ samsvare med spec.ingresses i din Skiperator-Application og spec.autoLogin.redirectPath i din Ztoperator-AuthPolicy.
  • spec.logoutUrl mĂ„ matche spec.ingresses i din Skiperator-Application.
  • spec.secretName mĂ„ matche spec.oAuthCredentials i Ztoperator-AuthPolicy.
  • spec.singlePageApplication mĂ„ vĂŠre satt til false ettersom Ztoperator ikke gjennomfĂžrer innloggingsflyten i en offentlig klient.
Klientregistrering mot Microsoft Entra ID med Azurerator
apiVersion: nais.io/v1
kind: AzureAdApplication
metadata:
name: test-app
namespace: tilgangsstyring-main
spec:
allowAllUsers: false
claims:
groups:
- id: 4bdc77ce-2a99-406c-a07e-88a1eba82dd9
- id: 1262b1c5-d2db-44ad-96e3-ed8637e6b996
replyUrls:
- url: https://test-app.atgcp1-sandbox.kartverket-intern.cloud/oauth2/callback
logoutUrl: https://test-app.atgcp1-sandbox.kartverket-intern.cloud/
preAuthorizedApplications:
- application: other-app
namespace: other-namespace
cluster: atgcp1-dev
secretName: entraid-secret
secretKeyPrefix: CUSTOM_PREFIX
secretProtected: true
singlePageApplication: false
Hemmelighet opprettet av Azurerator etter fullfĂžrt klientregistrering
apiVersion: v1
kind: Secret
metadata:
name: entraid-secret
namespace: tilgangsstyring-main
data:
AZURE_APP_CERTIFICATE_KEY_ID: ++++++++
AZURE_APP_CLIENT_ID: ++++++++
AZURE_APP_CLIENT_SECRET: ++++++++
AZURE_APP_JWK: ++++++++
AZURE_APP_JWKS: ++++++++
AZURE_APP_NEXT_CERTIFICATE_KEY_ID: ++++++++
AZURE_APP_NEXT_CLIENT_SECRET: ++++++++
AZURE_APP_NEXT_JWK: ++++++++
AZURE_APP_NEXT_PASSWORD_KEY_ID: ++++++++
AZURE_APP_PASSWORD_KEY_ID: ++++++++
AZURE_APP_PRE_AUTHORIZED_APPS: ++++++++
AZURE_APP_TENANT_ID: ++++++++
AZURE_APP_WELL_KNOWN_URL: ++++++++
AZURE_OPENID_CONFIG_ISSUER: ++++++++
AZURE_OPENID_CONFIG_JWKS_URI: ++++++++
AZURE_OPENID_CONFIG_TOKEN_ENDPOINT: ++++++++
type: Opaque