AuthorizationAdministration er tjenesten i Altinn for import av eksterne regler og ressurser brukt til å ta avgjørelser der Altinns autorisasjonskomponent benyttes. Er tilknyttet tjenesten AuthorizationDecisionPointExternal som benytter importert informasjon.
Operasjon for å importere XACML regler for ekstern autorisering.
Tabellen under beskriver datakontrakten for operasjonen:
Input | Beskrivelse |
---|---|
authorizationRulesXml | XML på XACML standard som inneholder autorisasjonsreglene |
Returverdi | Beskrivelse |
Boolsk | Returnere status for regelimporten, true, vellykket eller false, feilet |
Altinn spesifikke elementer XACML-forespørselen:
Foreldrenode | AttributeId | AttributeValue verdier |
---|---|---|
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:rolecode | Kode for rollen |
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:authenticationlevel | Autentiseringsnivå 0, 1, 2, 3, 4. Hvilke nivå som skal kreves for en resurs. |
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:delegatable | true / false kan rettigheten delegeres videre |
Subject | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:external-resource | Ekstern ressursdefinisjon |
Subject | urn:oasis:names:tc:xacml:2.0:action:urn:altinn:action-id | Read Write Sign ArchiveRead ArchiveDelete ServiceOwnerArchiveRead Delegate |
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:rolecode | Kode for rollen |
Følgende er et eksempel på valid XACML for eksterne regler: AuthorizationPolicy
<?xml version="1.0" encoding="utf-8"?>
<xacml:Policy xmlns:xacml="urn:oasis:names:tc:xacml:2.0:policy:schema:os" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:policy:schema:os http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-policy-schema-os.xsd" PolicyId="#1" Version="1.0" RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combiningalgorithm:deny-overrides">
<xacml:Description>This is an example RolePolicy XACML and how it should be sent from external systems to add external rules</xacml:Description>
<xacml:Target/>
<xacml:Rule RuleId="#1" Effect="Permit">
<xacml:Description>This is a rule giving a person with DAGL READ for the external resource NAVRF1030</xacml:Description>
<xacml:Target>
<xacml:Subjects>
<xacml:Subject>
<xacml:SubjectMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">DAGL</xacml:AttributeValue>
<xacml:SubjectAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:rolecode" DataType="http://www.w3.org/2001/XMLSchema#string"/>
</xacml:SubjectMatch>
<xacml:SubjectMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">2</xacml:AttributeValue>
<xacml:SubjectAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:authenticationlevel" DataType="http://www.w3.org/2001/XMLSchema#string"/>
</xacml:SubjectMatch>
<xacml:SubjectMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#boolean">false</xacml:AttributeValue>
<xacml:SubjectAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:delegatable" DataType="http://www.w3.org/2001/XMLSchema#string"/>
</xacml:SubjectMatch>
</xacml:Subject>
</xacml:Subjects>
<xacml:Resources>
<xacml:Resource>
<xacml:ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">NAVRF1030</xacml:AttributeValue>
<xacml:ResourceAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:external-resource" DataType="http://www.w3.org/2001/XMLSchema#string"/>
</xacml:ResourceMatch>
</xacml:Resource>
</xacml:Resources>
<xacml:Actions>
<xacml:Action>
<xacml:ActionMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:string-equal">
<xacml:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Read</xacml:AttributeValue>
<xacml:ActionAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:2.0:action:urn:altinn:action-id" DataType="http://www.w3.org/2001/XMLSchema#string "/>
</xacml:ActionMatch>
</xacml:Action>
</xacml:Actions>
</xacml:Target>
</xacml:Rule>
</xacml:Policy>
Operasjon for å hente ut en liste over roller etter angitte søkekriterier
Tabellen under beskriver datakontrakten for operasjonen:
Input | Beskrivelse |
---|---|
systemUserName | Org.nummer for enheter, fødselsnummer for enkeltpersoner |
systemPassword | Passord |
roleSearchBE | ExternalRoleSearchBE-objekt |
Returverdi | Beskrivelse |
ExternalRoleBEList | Liste med ExternalRoleBE-objekter |
Returverdi | Beskrivelse |
ExternalRoleBE | |
RoleTypeSource | |
RoleCode | Rollekode |
RoleName | Navn på rolle |
OfferedBy | Enhet/bruker som rollen gjelder for |
Enhet/bruker som innehar rollen | Enhet/bruker som innehar rollen |
DelegatedBy | Enhet/bruker som har delegert rollen |
ExternalRoleSearchBE | |
CoveredByParty | Enhet som innehar rollen |
CoveredByUser | Bruker som innehar rollen |
LanguageID | Språkid (English 1033, Bokmål 1044, Nynorsk 2068) |
OfferedByParty | Enhet som rollen gjelder for |
RoleCodeFilter | Filtrer med spesific rollekode. Støtte for kun 1 rolle om gangen |
Dersom man sender med verdi i søket (RoleSearch-objektet) for OfferedByParty, kan man ikke samtidig sende med verdier for både CoveredByUser og CoveredByParty, og man kan heller ikke søke på OfferedParty uten å sende med verdi for enten CoveredByUser eller CoveredByParty.
Eksempelkall:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:ns="http://www.altinn.no/services/Authorization/Administration/2010/10" xmlns:ns1="http://schemas.altinn.no/services/Authorization/Administration/2009/10">
<soap:Header/>
<soap:Body>
<ns:GetRoles>
<ns:roleSearchBE>
<ns1:CoveredByParty>orgnummer1</ns1:CoveredByParty>
<ns1:CoveredByUser></ns1:CoveredByUser>
<ns1:LanguageID>1044</ns1:LanguageID>
<ns1:OfferedByParty>orgnummer2</ns1:OfferedByParty>
<ns1:RoleCodeFilter></ns1:RoleCodeFilter>
</ns:roleSearchBE>
</ns:GetRoles>
</soap:Body>
</soap:Envelope>
Operasjon for å hente ut en liste over mulige avgivere for et gitt fødselsnummer.
Tabellen under beskriver datakontrakten for operasjonen:
Input | Beskrivelse |
---|---|
userSSN | Fødselsnummeret til brukeren det skal hentes avgivere for – pålagt parameter |
retrieveInActiveReportee | Flagg for å sette om også inaktive avgivere skal returneres, standard False – valgfri parameter |
RetrieveSubEnitiy | Flagg for å sette om også underenheter skal returneres, standard False – valgfri parameter |
maximumReporteeCount | Verdi for maksimum antall avgivere som skal returneres, standard satt til alle – valgfri parameter |
Returverdi | Beskrivelse |
ExternalReporteeBEList | Liste med ExternalReporteeBE-objekter |
Returverdi | Beskrivelse |
ExternalReporteeBEList | Liste med ExternalReporteeBE-objekter |
Returverdi | Beskrivelse |
ExternalReporteeBE | |
Name | Avgivers navn |
OrganizationNumber | Organisasjonsnummer for denne avgiveren hvis dette er en organisasjon |
SSN | Fødselsnummer for denne avgiveren hvis dette er en person |
ReporteeType | Typebeskrivelse for hvilken type avgiver dette er: None, Person, Organization, eller SelfIdentified (ikke et praktisk mulig scenario i denne sammenhengen) |
Operasjon for å hente ut informasjon om avgiver basert på nøkkel opprettet for lenketjenesten. Nøkkelen er kun gyldig i en tidsbegrenset periode, og kan kun benyttes en gang.
Tabellen under beskriver datakontrakten for operasjonen:
Input | Beskrivelse |
---|---|
tempKey | Nøkkel som angitt i lenketjenestens request URL, vil utgå etter at informasjon er hentet ut – pålagt parameter |
Returverdi | Beskrivelse |
ExternalReporteeBE | ExternalReporteeBE-objekt |
Returverdi | Beskrivelse |
ExternalReporteeBE | |
Name | Avgivers navn |
OrganizationNumber | Organisasjonsnummer for denne avgiveren hvis dette er en organisasjon. |
SSN | Fødselsnummer for denne avgiveren hvis dette er en person |
ReporteeType | Typebeskrivelse for hvilken type avgiver dette er: None, Person, Organization, eller SelfIdentified (ikke et praktisk mulig scenario i denne sammenhengen) |
AuthorizationDecisionPointExternal er en tjeneste Altinn tilbyr til tjenesteeiere som ønsker å benytte Altinns autorisasjonskomponent. Tjenesten kan benyttes til autorisasjon både for eksterne resurser og for tjenester. Autorisasjons regler settes henholdsvis ved hjelp av AuthorizationAdministration tjenesten og i TUL.
Påfølgende kapitler beskriver tjenesteoperasjonene for denne tjenesten.
Operasjon som benytter XACML standarden og regler lagret i Altinn til å returnere en autorisasjonsbeslutning.
Besluttningsgrunnlaget til autorisasjon for eksterne resurser er de regler som tjenesteeier selv setter ved hjelp av tjenesten AutorizationAdministration når resursen defineres. Besluttningsgrunnlaget til autorisasjon for tjenester er de regler som tjenesteeier har satt på tjenesten i TUL.
Tabellen under beskriver datakontrakten for operasjonen:
Input | Beskrivelse |
---|---|
XACMLRequest | XACML standardisert forespørsel |
Returverdi | Beskrivelse |
Resultat | XACML standardisert svar |
Tjenesten benytter en XSD til å validere input.
I tillegg er det en del regler relatert til utfylling som XSD ikke klarer fange opp. XACML-forespørselen skal inneholde en kombinasjon av følgende elementer:
Foreldrenode | AttributeId | AttributeValue verdier |
---|---|---|
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:ssn | Utførende brukers fødselsnummer |
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:orgno | Utførende organisasjons organisasjonsnummer |
Subject | urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:oauth-accesstoken | Referanse token for et spesifikk samtykke utførende bruker/org skal benytte. Må hentes fra AuthorizationExternal/TokenExternalEC.svc tjenesten. |
Resource | urn:oasis:names:tcurn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno:xacml:2.0:resource:urn:altinn:reportee-ssn | Avgivers fødselsnummer |
Resource | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno | Avgivers organisasjonsnummer |
Resource | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:external-resource | Ekstern ressursdefinisjon |
Resource | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalservicecode | Eksterne tjenestekode |
Resource | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalserviceeditioncode | Ekstern utgavekode (tilhørende overnevnte tjenestekode) |
Resource | urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reporteeelementid | Den unike id’en til et reportee element |
Action | urn:oasis:names:tc:xacml:2.0:action:urn:altinn:action-id | Read Write Sign ArchiveRead ArchiveDelete ServiceOwnerArchiveRead Delegate |
Environment | urn:oasis:names:tc:xacml:2.0:action:urn:altinn:environment | De ulike miljøer |
Mulige Subject kombinasjoner: 1. Utførende brukers fødselsnummer (urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:ssn) eller utførende oranisasjons org.nummer (urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:orgno) 2. Utførende brukers fødselsnummer (urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:ssn) eller utførende oranisasjons org.nummer (urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:orgno), og referanse token for relatert samtykke (urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:oauth-accesstoken).
Mulige Resource kombinasjoner: 1. Avgivers fødselsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-ssn) eller avgivers organisasjonsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno), og ekstern tjenestekode og utgavekode (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalservicecode og urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalserviceeditioncode) 2. Avgivers fødselsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-ssn) eller avgivers organisasjonsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno), og ekstern ressursdefinisjon (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:external-resource). 3. Avgivers fødselsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-ssn) eller avgivers organisasjonsnummer (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno), og ReporteeElementId (urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reporteeelementid).
Signeringsrettigheter oppfører seg noe annerledes enn de andre. Signering er en rettighet som kun kan gis på konkrete prosesssteg i livsløpet til et element. For å kunne gi helt korrekt svar på om en person har lov til å signere er Altinn derfor avhengig av å få oppgitt id til et reporteeelement.
Unntaket fra dette er om en tjeneste har kun ett signeringssteg. I et slikt tilfelle kan Altinn anta at når det endelig skal signeres så vil aktivt prosesssteg være dette ene steget. På slike tjenester er det derfor trygt å oppgi tjenestekoder istedenfor reporteeelementid.
Hvis en tjeneste har flere signeringssteg vil Altinn velge det første signeringssteget i prosessen. Dette kan i enkelte tilfeller føre til feil konklusjon. Hvis for eksempel en revisor skal signere et element i signeringssteg 2 (etter regnskapsfører), så kan Altinn svare negativt på spørsmål om revisor kan signere (benytter sign steg 1) selv om revisor vil få lov når elementet endelig kommer til revisors signeringssteg i prosessen.
Altinn selv har ikke mulighet til å sjekke signeringsrettighet uten å ha id til et reporteeelement. Sjekk av signeringsrettighet basert på tjenestekoder er logikk laget spesielt for AuthorizeAccessExternalV2.
Det må også angis hvilke miljø det gjelder (urn:oasis:names:tc:xacml:2.0:action:urn:altinn:environment)
Nedenfor vises eksempler på gyldige forespørsler:
AuthorizationRequest
<?xml version="1.0" encoding="UTF-8"?>
<Request
xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os
http://docs.oasis-open.org/xacml/access_control-xacml-2.0-context-schema-os.xsd">
<!-- Altinn Sample Request. -->
<!-- This authorization request tries to verify if user 07037612345 is allowed to -->
<!-- perform read operation on external resource belonging to reportee 010203401944 -->
<!-- there is a registered consent for the record. -->
<Subject>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:ssn"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>07037512345</AttributeValue>
</Attribute>
</Subject>
<Resource>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-ssn"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>010203401944</AttributeValue>
</Attribute>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:external-resource"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>RF1080NAV</AttributeValue>
</Attribute>
</Resource>
<Action>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:action:urn:altinn:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>Read</AttributeValue>
</Attribute>
</Action>
<Environment>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:action:urn:altinn:environment"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>AT6</AttributeValue>
</Attribute>
</Environment>
</Request>
<?xml version="1.0" encoding="UTF-8"?>
<Request
xmlns="urn:oasis:names:tc:xacml:2.0:context:schema:os"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os
http://docs.oasis-open.org/xacml/access_control-xacml-2.0-context-schema-os.xsd">
<!-- Altinn Sample Request. -->
<!-- This authorization request tries to verify if user -->
<!-- 06069460079 is allowed to perform sign operation -->
<!-- on behalf of reportee 910453777 -->
<!-- on service 2298, edition 60804 -->
<Subject>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:subject:urn:altinn:ssn"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>06069460079</AttributeValue>
</Attribute>
</Subject>
<Resource>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:reportee-orgno"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>910453777</AttributeValue>
</Attribute>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalservicecode"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>2298</AttributeValue>
</Attribute>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:resource:urn:altinn:externalserviceeditioncode"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>60804</AttributeValue>
</Attribute>
</Resource>
<Action>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:action:urn:altinn:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>Sign</AttributeValue>
</Attribute>
</Action>
<Environment>
<Attribute
AttributeId="urn:oasis:names:tc:xacml:2.0:action:urn:altinn:environment"
DataType="http://www.w3.org/2001/XMLSchema#string">
<AttributeValue>TT02</AttributeValue>
</Attribute>
</Environment>
</Request>
Operasjonen returnerer XML som også følger XACML standarden. Under vises et eksempel på en response.
AuthorizationResponse
<xacml:Response xmlns:tns="urn:oasis:names:tc:xacml:2.0:policy:schema:os" xmlns:xacml="urn:oasis:names:tc:xacml:2.0:context:schema:os" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:oasis:names:tc:xacml:2.0:context:schema:os http://docs.oasis-open.org/xacml/2.0/access_control-xacml-2.0-context-schema-os.xsd">
<xacml:Result ResourceId="">
<xacml:Decision>Permit</xacml:Decision>
<xacml:Status>
<xacml:StatusCode Value="urn:oasis:names:tc:xacml:2.0:response:urn:altinn:ok" />
<xacml:StatusMessage></xacml:StatusMessage>
</xacml:Status>
<tns:Obligations>
<tns:Obligation FulfillOn="Permit" ObligationId="">
<tns:AttributeAssignment AttributeId="urn:oasis:names:tc:xacml:2.0:obligation:urn:altinn:authenticationlevel" DataType="http://www.w3.org/2001/XMLSchema#string">
<tns:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">3</tns:AttributeValue>
</tns:AttributeAssignment>
</tns:Obligation>
</tns:Obligations>
</xacml:Result>
</xacml:Response>