Definere autorisasjonspolicy
I Altinn Studio kan apputvikleren definere autorisasjonspolicyen for tjenesten.
Apputvikleren definerer autorisasjonsreglene for en tjeneste i en XACML-policyfil som ligger i app-lageret. XACML-policyen inneholder én eller flere regler som bestemmer hvem som kan utføre forskjellige handlinger på forskjellige ressurser. Du kan redigere XACML-filen i et tekstredigeringsprogram etter eget valg.
Regler fra app-malen
Når du oppretter en app i Altinn Studio, er den basert på gjeldende ASP.NET-mal og inkluderer en autogenerert XACML policy-fil (policy.xml).
Du kan endre autorisasjonsreglene i policy.xml, som ligger i App/config/authorization i app-lageret. Du finner detaljer om konfigurering av policyfilen nedenfor. Du kan også finne mange eksempler på regler i regelbiblioteket.
Ressursattributter
Ressursattributtene til regler beskriver hvilken tjeneste eller del av tjenesten reglene gjelder for.
| Attributt | Beskrivelse |
|---|---|
| urn:altinn:org | Organisasjonsdelen av ressursattributtet definerer hvilken organisasjon som eier appen. |
| urn:altinn:app | Appdelen identifiserer selve appen. |
| urn:altinn:task | Oppgavedelen av ressursen gjør det mulig å ha egne regler for de ulike oppgavene. |
| urn:altinn:event | Hendelsesdelen av ressursen gjør det mulig å ha egne regler for lesing av hendelser. |
Eksempel
Eksempelet nedenfor viser en del av XACML 3.0-policyen der en ressurs er definert.
App/config/authorization/policy.xml<xacml:AllOf>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">skd</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:altinn:org" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">taxreport</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:altinn:app" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">instantiate</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:altinn:event" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
</xacml:AllOf>
Subjektattributter
Subjektdelen for regelen definerer hvem regelen er rettet mot.
| Attributt | Beskrivelse |
|---|---|
| urn:altinn:rolecode | Rollekoden brukes for regler som retter seg mot sluttbrukere og systemer. |
| urn:altinn:org | Organisasjonskoden brukes for regler som retter seg mot organisasjoner. |
En fullstendig liste over rolletyper finner du på Altinn API.
Det er viktig å lese Veiledning for autorisasjonsregler før du velger rolle.
Eksempler
Eksempel med rollekode:
App/config/authorization/policy.xml<xacml:AllOf>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">regna</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:altinn:rolecode" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
</xacml:AllOf>
Eksempel med organisasjon:
App/config/authorization/policy.xml<xacml:AllOf>
<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">skd</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:altinn:org" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
</xacml:AllOf>
Action-attributter
Action-attributtene beskriver hvilken operasjon regelen gjelder for.
| Attributt | Beskrivelse |
|---|---|
| urn:oasis:names:tc:xacml:1.0:action:action-id | Handlingen som regelen gjelder for. I app-lib-dotnet kan dette være read, write, instantiate, complete og delete. Dette utvides når ny funksjonalitet legges til. |
Eksempel med read-operasjon:
App/config/authorization/policy.xml<xacml:Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">read</xacml:AttributeValue>
<xacml:AttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
</xacml:Match>
</xacml:AllOf>
Obligation
Obligation-delen av policyen brukes til å definere informasjon som skal brukes av PEP (Policy Enforcement Point). Det nødvendige autentiseringsnivået er satt til 3 som standard. Dette gjøres som en obligation i XACML Policy-filen.
Hvis nødvendig autentiseringsnivå er satt til 4, må du definere at tjenesteeier kan samhandle med det gjennom nivå 3-autentisering for Maskinporten. Dette fordi Maskinporten er definert som nivå 3. Se regelbiblioteket for eksempler.
Eksempel med autentiseringsnivå 3:
App/config/authorization/policy.xml<xacml:ObligationExpressions>
<xacml:ObligationExpression FulfillOn="Permit" ObligationId="urn:altinn:obligation:authenticationLevel1">
<xacml:AttributeAssignmentExpression AttributeId="urn:altinn:obligation1-assignment1" Category="urn:altinn:minimum-authenticationlevel">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">3</xacml:AttributeValue>
</xacml:AttributeAssignmentExpression>
</xacml:ObligationExpression>
</xacml:ObligationExpressions>
API-scopes
API-scopes brukes for å autorisere tilgang til API-ene selv, nærmere bestemt API-ene som har med “instans”-ressursen å gjøre.
Det finnes innebygde scopes for brukere og tjenesteeiere:
altinn:instances.readogaltinn:instances.writefor brukere (og systembrukere)altinn:serviceowner/instances.readogaltinn:serviceowner/instances.writefor tjenesteeiere
Disse scopene kan også skreddersys spesifikt fra app til app. Les om hvordan du konfigurerer API-scopes.
- API Scopes-konfigurasjon
Slik konfigurerer du tilpassede API-scopes for tjenesten.
- Regelbibliotek
Her finner du eksempler på autorisasjonsregler du kan bruke i en app. Husk å bytte ut tags ([RULE_ID]) med en egen ID. [ORG] og [APP] kan stå som de er, siden de erstattes med informasjon fra applicationmetadata.json hvis du har oppdatert LocalTest etter januar 2023.
- Veiledning for autorisasjonsregler
Autorisasjonsregler må du definere med omhu. Denne veiledningen forteller hva du som applikasjonseier må vurdere før du setter autorisasjonsregler for en applikasjon.