Autorisasjon

AuthorizationAdministration

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.

ImportAuthorizationPolicy

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>

GetRoles

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>

GetReportees

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)

GetReporteeByTempKey

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

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.

AuthorizeAccessExternalV2

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>