Skip to main content

Tutorials

Under finner du video-gjennomganger av hvordan du kan sikre applikasjoner med Ztoperator på SKIP for identitetstilbyderne Microsoft Entra ID, ID-Porten og Ansattporten.

🔹 Microsoft Entra ID

Følgende eksempel går gjennom hvordan man kan konfigurere en Ztoperator-AuthPolicy til å beskytte en eksempelapplikasjon og logge inn brukere mot Kartverket sin Microsoft Entra ID. Til det så benyttes Azurerator til klientregistrering, Skiperator til applikasjonsutrulling og Ztoperator til tilgangsstyring og innloggingsflyt.

Oppsettet for eksempelet finner du i env/atgcp1-sandbox/ztoperator-demo-entraid i tilgangsstyring-apps.

Den beskyttede applikasjonen kan nås på entraid-ztoperator.atgcp1-sandbox.kartverket.cloud.

📋 Manifester

Følgende manifester ble opprettet for å realisere eksempelet:

AzureAdApplication: ztoperator-demo-entraid/entraid-reg
apiVersion: nais.io/v1
kind: AzureAdApplication
metadata:
name: entraid-reg
spec:
claims:
groups:
- id: a6578085-e0ee-4168-bf97-1b3026f6f3bd # Kartverket@kartverket.no
replyUrls:
- url: https://entraid-ztoperator.atgcp1-sandbox.kartverket.cloud/oauth2/callback
secretName: entraid-secret
Application: ztoperator-demo-entraid/entraid-demo-app
apiVersion: skiperator.kartverket.no/v1alpha1
kind: Application
metadata:
name: entraid-demo-app
spec:
podSettings:
annotations:
sidecar.istio.io/userVolume: |
[
{
"name": "istio-oauth2",
"secret": {
"secretName": "authpolicy-entraid-envoy-secret"
}
}
]
sidecar.istio.io/userVolumeMount: |
[
{
"name": "istio-oauth2",
"mountPath": "/etc/istio/config",
"readonly": true
}
]
image: ghcr.io/kartverket/ztoperator-echo-app:v0
port: 5000
env:
- name: ECHO_TITLE
value: Hello from Entra ID Ztoperator Demo
ingresses:
- entraid-ztoperator.atgcp1-sandbox.kartverket.cloud
AuthPolicy: ztoperator-demo-entraid/authpolicy-entraid
apiVersion: ztoperator.kartverket.no/v1alpha1
kind: AuthPolicy
metadata:
name: authpolicy-entraid
spec:
enabled: true
selector:
matchLabels:
app: entraid-demo-app
wellKnownURI: https://login.microsoftonline.com/7f74c8a2-43ce-46b2-b0e8-b6306cba73a3/v2.0/.well-known/openid-configuration
audience:
- 51525343-f969-4820-9ddc-4c41526f6aae
ignoreAuthRules:
- paths:
- /
- /favicon.ico
autoLogin:
enabled: true
logoutPath: /logout
redirectPath: /oauth2/callback
scopes:
- 51525343-f969-4820-9ddc-4c41526f6aae/.default
oAuthCredentials:
clientIDKey: AZURE_APP_CLIENT_ID
clientSecretKey: AZURE_APP_CLIENT_SECRET
secretRef: entraid-secret
outputClaimToHeaders:
- claim: preferred_username
header: zt-mail
- claim: name
header: zt-name

🪪 ID-Porten

Følgende eksempel går gjennom hvordan man kan konfigurere en Ztoperator-AuthPolicy til å beskytte en eksempelapplikasjon og logge inn brukere mot ID-Porten i test. Til det så benyttes Digdir sin selvbetjeningsløsning til klientregistrering, Skiperator til applikasjonsutrulling og Ztoperator til tilgangsstyring og innloggingsflyt.

Oppsettet for eksempelet finner du i env/atgcp1-sandbox/ztoperator-demo-idporten i tilgangsstyring-apps.

Den beskyttede applikasjonen kan nås på idporten-ztoperator.atgcp1-sandbox.kartverket.cloud.

📋 Manifester

Følgende manifester ble opprettet for å realisere eksempelet:

ExternalSecret: ztoperator-demo-idporten/idporten-secrets
apiVersion: external-secrets.io/v1
kind: SecretStore
metadata:
name: idporten-gsm
spec:
provider:
gcpsm:
projectID: tilgangsstyring-sandbox-e5ab
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: idporten-secrets
spec:
secretStoreRef:
kind: SecretStore
name: idporten-gsm
target:
name: idporten-secrets
data:
- secretKey: CLIENT_ID
remoteRef:
key: idporten-client-id
metadataPolicy: None
- secretKey: CLIENT_SECRET
remoteRef:
key: idporten-client-secret
metadataPolicy: None
refreshInterval: 1h
Application: ztoperator-demo-idporten/idporten-demo-app
apiVersion: skiperator.kartverket.no/v1alpha1
kind: Application
metadata:
name: idporten-demo-app
spec:
podSettings:
annotations:
sidecar.istio.io/userVolume: |
[
{
"name": "istio-oauth2",
"secret": {
"secretName": "authpolicy-idporten-envoy-secret"
}
}
]
sidecar.istio.io/userVolumeMount: |
[
{
"name": "istio-oauth2",
"mountPath": "/etc/istio/config",
"readonly": true
}
]
image: ghcr.io/kartverket/ztoperator-echo-app:v0
port: 5000
env:
- name: ECHO_TITLE
value: Hello from Ztoperator ID-Porten Demo App
ingresses:
- idporten-ztoperator.atgcp1-sandbox.kartverket.cloud
AuthPolicy: ztoperator-demo-idporten/authpolicy-idporten
apiVersion: ztoperator.kartverket.no/v1alpha1
kind: AuthPolicy
metadata:
name: authpolicy-idporten
spec:
enabled: true
selector:
matchLabels:
app: idporten-demo-app
wellKnownURI: https://test.idporten.no/.well-known/openid-configuration
audience:
- 8ad04c24-ac32-4252-9491-763d83d2cfad
acceptedResources:
- https://idporten-ztoperator.atgcp1-sandbox.kartverket.cloud
ignoreAuthRules:
- paths:
- /
- /favicon.ico
autoLogin:
enabled: true
logoutPath: /logout
redirectPath: /oauth2/callback
scopes:
- openid
- profile
oAuthCredentials:
clientIDKey: CLIENT_ID
clientSecretKey: CLIENT_SECRET
secretRef: idporten-secrets
outputClaimToHeaders:
- claim: pid
header: zt-pid

👩‍💼 Ansattporten

Følgende eksempel går gjennom hvordan man kan konfigurere en Ztoperator-AuthPolicy til å beskytte en eksempelapplikasjon og logge inn brukere mot Ansattporten i test. Til det så benyttes Digdir sin selvbetjeningsløsning til klientregistrering, Skiperator til applikasjonsutrulling og Ztoperator til tilgangsstyring og innloggingsflyt.

Oppsettet for eksempelet finner du i env/atgcp1-sandbox/ztoperator-demo-ansattporten i tilgangsstyring-apps.

Den beskyttede applikasjonen kan nås på ansattporten-ztoperator.atgcp1-sandbox.kartverket.cloud.

📋 Manifester

Følgende manifester ble opprettet for å realisere eksempelet:

ExternalSecret: ztoperator-demo-ansattporten/ansattporten-secrets
apiVersion: external-secrets.io/v1
kind: SecretStore
metadata:
name: ansattporten-gsm
spec:
provider:
gcpsm:
projectID: tilgangsstyring-sandbox-e5ab
---
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: ansattporten-secrets
spec:
secretStoreRef:
kind: SecretStore
name: ansattporten-gsm
target:
name: ansattporten-secrets
data:
- secretKey: CLIENT_ID
remoteRef:
key: ansattporten-client-id
metadataPolicy: None
- secretKey: CLIENT_SECRET
remoteRef:
key: ansattporten-client-secret
metadataPolicy: None
refreshInterval: 1h
Application: ztoperator-demo-ansattporten/ansattporten-demo-app
apiVersion: skiperator.kartverket.no/v1alpha1
kind: Application
metadata:
name: ansattporten-demo-app
spec:
podSettings:
annotations:
sidecar.istio.io/userVolume: |
[
{
"name": "istio-oauth2",
"secret": {
"secretName": "authpolicy-ansattporten-envoy-secret"
}
}
]
sidecar.istio.io/userVolumeMount: |
[
{
"name": "istio-oauth2",
"mountPath": "/etc/istio/config",
"readonly": true
}
]
image: ghcr.io/kartverket/ztoperator-echo-app:v0
port: 5000
env:
- name: ECHO_TITLE
value: Hello from Ztoperator Ansattporten Demo App
ingresses:
- ansattporten-ztoperator.atgcp1-sandbox.kartverket.cloud
AuthPolicy: ztoperator-demo-ansattporten/authpolicy-ansattporten
apiVersion: ztoperator.kartverket.no/v1alpha1
kind: AuthPolicy
metadata:
name: authpolicy-ansattporten
spec:
enabled: true
selector:
matchLabels:
app: ansattporten-demo-app
wellKnownURI: https://test.ansattporten.no/.well-known/openid-configuration
audience:
- a2b58353-e3b5-4f69-a453-3f180c1f00de
acceptedResources:
- https://ansattporten-ztoperator.atgcp1-sandbox.kartverket.cloud
ignoreAuthRules:
- paths:
- /
- /favicon.ico
autoLogin:
enabled: true
logoutPath: /logout
redirectPath: /oauth2/callback
scopes:
- openid
- profile
loginParams:
authorization_details: |
[
{
"type": "ansattporten:altinn:service",
"resource": "urn:altinn:resource:5822:1",
"allow_multiple_organizations": false
}
]
oAuthCredentials:
clientIDKey: CLIENT_ID
clientSecretKey: CLIENT_SECRET
secretRef: ansattporten-secrets
outputClaimToHeaders:
- claim: pid
header: zt-pid