Skip to content

Commit

Permalink
Feature/webupdate3 (#1680)
Browse files Browse the repository at this point in the history
* updates

* updates

* updates

* Updates

* Updates

* Updates

* Updates

* Updates

* updates

* Updates

* Updates

* nb text
  • Loading branch information
TheTechArch authored Jun 13, 2024
1 parent 620c87a commit d97c37a
Show file tree
Hide file tree
Showing 8 changed files with 703 additions and 68 deletions.
15 changes: 10 additions & 5 deletions content/authentication/about/_index.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,18 @@
---
title: About Altinn Authentication
linktitle: About
description: The authentication component provides functionality to authenticate users and systems accessing Altinn Apps and Altinn platform.
tags: [platform, authentication]
toc: true
description: The Altinn Authentication component provides functionality for authenticating users and systems accessing Altinn Apps and the Altinn platform.
toc: false
weight: 1
---

The authentication component is not an ID-provider and only create authentication sessions based on external ID-providers.
The authentication component is not an ID-provider and only creates authentication sessions based on external ID-providers like [ID-porten](https://eid.difi.no/en/id-porten),
[Maskinporten](https://samarbeid.digdir.no/maskinporten/maskinporten/25), or [Feide](https://www.feide.no/).

The authentication component creates JWT tokens with claims about the user and system.

The authentication component creates JWT tokens with claims about user and system.
The claims are based on the authentication information coming from the ID-providers.

Repository for Altinn Authentication can be found [here](https://github.com/Altinn/altinn-authentication).

Backlog with open issues can be found [here](https://github.com/Altinn/altinn-authentication/issues).
20 changes: 13 additions & 7 deletions content/authentication/about/_index.nb.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
---
title: Authentication
description: The authentication component provides functionality to authenticate users and systems accessing Altinn Apps and Altinn platform.
tags: [platform, authentication]
toc: true
title: About Altinn Authentication
linktitle: About
description: Altinn-autentiseringskomponenten gir funksjonalitet for å autentisere brukere og systemer som får tilgang til Altinn-apper og Altinn-plattformen.
toc: false
weight: 1
---

The authentication component is not an ID-provider and only create authentication sessions based on external ID-providers.
Autentiseringskomponenten er ikke en ID-leverandør og oppretter kun autentiseringssesjoner basert på eksterne
ID-leverandører som [ID-porten](https://eid.difi.no/nb/id-porten), [Maskinporten](https://samarbeid.digdir.no/maskinporten/maskinporten/25) eller [Feide](https://www.feide.no/).

The authentication component creates JWT tokens with claims about user and system.
The claims are based on the authentication information coming from the ID-providers.
Autentiseringskomponenten oppretter JWT-tokene med påstander om brukeren og systemet.

Påstandene er basert på autentiseringsinformasjonen som kommer fra ID-leverandørene.

Repository for Altinn-autentisering finner du [her](https://github.com/Altinn/altinn-authentication).

Backlog med åpne saker finner du [her](https://github.com/Altinn/altinn-authentication/issues).
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
title: Ta i bruk systembruker for API leverandører
linktitle: Systembruker for API
description: Systembruker er et nytt konsept for API autentisering. Denne guiden beskriver hvordan man som API tilbyder kan beskytte sine API med dette.
title: Utilize system user for API providers
linktitle: Systemusers for API
description: System user is a new concept for API authentication. This guide describes how API providers can protect their APIs using this concept.
toc: false
weight: 1
---
Expand All @@ -10,23 +10,29 @@ weight: 1
Denne funksjonaliteten er i test og kan endres
{{</notice>}}

## Bakgrunn
## Background

Bakgrunnen til systembruker konsept kan leses om [her](../../what-do-you-get/systemuser/).
You can read about the background of the system user concept [here](../../what-do-you-get/systemuser/).

## Forutsetninger

Forutsetninger for at man API leverandør kan benytte seg av systembruker er
## Prerequisites

- Avtale med maskinporten som API Leverandør
- Avtale med Digdir for ressurser i system registeret
- Opprettet ressurser(er) som skal autoriseres på
- Fått tildelt scope for PDP integrasjon
- Integrasjon med Altinn PDP
To use a system user as an API provider, the following prerequisites must be met:

## Validering av Maskinporten token
- Agreement with Maskinporten as an API provider
- Agreement with Digdir for access to the resource registry for resource creation
- Creation of necessary resources to be authorized
- Assigned scope for PDP integration
- Integration with Altinn PDP

## Validation of Maskinporten Token

The token itself is validated as a standardized Maskinporten token. [Read more at Maskinporten](https://docs.digdir.no/docs/Maskinporten/maskinporten_guide_apitilbyder).

A system user token contains more details than a regular Maskinporten token.

Below is an example token.

Selve tokenet valideres som et standardisert Maskinporten token.

### JWT Token

Expand Down Expand Up @@ -61,8 +67,7 @@ Selve tokenet valideres som et standardisert Maskinporten token.
}

```

Verdiene som er viktige er
Verdiene som er viktige for API leverandør er.


| Verdi | Betydning |
Expand All @@ -72,18 +77,15 @@ Verdiene som er viktige er
|authorization_details:system_id | Referanse til systemet som systembrukeren peker på |
|Consumer:id | Organisasjonsnr til systemleverandør (organisasjon som har autentisert seg mot Maskinporten) |

See also the documentation at [Maskinporten](https://docs.digdir.no/docs/Maskinporten/maskinporten_func_systembruker).

## Authorization of System User

The API provider must call Altinn PDP to authorize access for the system user. This is done by sending a request to Altinn PDP.

Se også dokumentasjon hos [Maskinporten](https://docs.digdir.no/docs/Maskinporten/maskinporten_func_systembruker).


## Autorisasjon av systembruker

API leverandøren må kalle Altinn PDP for å autorisere tilgangen til systembrukeren.

Dette gjøres via et kall
The API provider must configure which actions and resources are accessed via the API to build the complete request.

Below is an example of a request made by the system user **a545ca29-7fb8-4810-a2f2-0be171cb2a26**, attempting to perform a **read** operation on a resource of type **kravogbetaling** for the organization **923609016**.

```json
{
Expand Down Expand Up @@ -115,11 +117,11 @@ Dette gjøres via et kall
"Attribute": [
{
"AttributeId": "urn:altinn:resource",
"Value": "ttdintegrationtest1"
"Value": "kravogbetaling"
},
{
"AttributeId": "urn:altinn:organization:identifier-no",
"Value": "312824450"
"Value": "923609016"
}
]
}
Expand All @@ -129,3 +131,40 @@ Dette gjøres via et kall

```

Altinn PDP returnerer svaret som en XACML Json respons hvor det informeres om request autorisert eller ikke.

API tilbyder må i sitt API ha logikk for å kunne avvise eller godta forespørsel fra system basert på dette.


```json
{
"Response": [
{
"Decision": "Permit",
"Status": {
"StatusCode": {
"Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
}
},
"Obligations": [
{
"id": "urn:altinn:obligation:authenticationLevel1",
"attributeAssignment": [

{
"attributeId": "urn:altinn:obligation-assignment:1",
"value": "2",
"category": "urn:altinn:minimum-authenticationlevel",
"dataType": "http://www.w3.org/2001/XMLSchema#integer",
"issuer": null
}
]
}
]
}
]
}
```


Se flere eksempler på bruk av Altinn PDP her.
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
---
title: Ta i bruk systembruker for API-leverandører
linktitle: Systembruker for API
description: Systembruker er et nytt konsept for API-autentisering. Denne guiden beskriver hvordan API-leverandører kan beskytte sine API-er med dette konseptet.
toc: false
weight: 1
---

{{<notice warning>}}
Denne funksjonaliteten er i test og kan endres
{{</notice>}}

## Bakgrunn

Bakgrunnen til systembruker konsept kan leses om [her](../../what-do-you-get/systemuser/).

## Forutsetninger

For å kunne bruke systembruker som API-leverandør må følgende forutsetninger være oppfylt:

- Avtale med Maskinporten som [API-leverandør](https://docs.digdir.no/docs/Maskinporten/maskinporten_guide_apitilbyder)
- Avtale med Digdir for tilgang til ressursregisteret for opprettelse av ressurser
- Opprettelse av [nødvendige ressurser](/authorization/guides/create-resource-resource-admin/) som skal autoriseres
- Tildelt scope for PDP-integrasjon
- Integrasjon med Altinn PDP

## Validering av Maskinporten token

Selve tokenet valideres som et standardisert Maskinporten token. [Les mer hos Maskinporten](https://docs.digdir.no/docs/Maskinporten/maskinporten_guide_apitilbyder).

Et systembrukertoken inneholder en del flere detaljer enn et vanlig Maskinporten token.

Nedenfor vises et eksempeltoken.

### JWT Token

```json
{
"authorization_details" : [ {
"type" : "urn:altinn:systemuser",
"systemuser_org" : {
"authority" : "iso6523-actorid-upis",
"id" : "0192:310385980"
},
"systemuser_id" : [ "a545ca29-7fb8-4810-a2f2-0be171cb2a26" ],
"system_id" : "systembrukar_test"
} ],
"scope" : "krr:global/kontaktinformasjon.read",
"supplier" : {
"authority" : "iso6523-actorid-upis",
"ID" : "0192:991825827"
},
"iss" : "https://maskinporten.dev/",
"client_amr" : "private_key_jwt",
"token_type" : "Bearer",
"exp" : 1718124836,
"delegation_source" : "https://maskinporten.dev/",
"iat" : 1718124716,
"client_id" : "fc9a8287-e7cb-45e5-b90e-123048d32d85",
"jti" : "8aVHR7gkm7HDqakr8mfs8rAQQR_OAU4WG0BXUPi5Leg",
"consumer" : {
"authority" : "iso6523-actorid-upis",
"ID" : "0192:314330897"
}
}

```

Verdiene som er viktige for API leverandør er.


| Verdi | Betydning |
|----|-----|
|authorization_details:systemuser_id| Unik id for systembrukeren. Det er denne verdien som Altinn trenger for å kunne autorisere tilgang. Det er denne som har fått delegert tilganger. |
|authorization_details:systemuser_org:id | Organisasjonen som har opprettet systembrukeren |
|authorization_details:system_id | Referanse til systemet som systembrukeren peker på |
|Consumer:id | Organisasjonsnr til systemleverandør (organisasjon som har autentisert seg mot Maskinporten) |




Se også dokumentasjon hos [Maskinporten](https://docs.digdir.no/docs/Maskinporten/maskinporten_func_systembruker).

## Autorisasjon av systembruker

API-leverandøren må kalle Altinn PDP for å autorisere tilgangen til systembrukeren. Dette gjøres ved å sende et kall til Altinn PDP.

API-leverandøren må konfigurere hvilke handlinger og ressurser som aksesseres via API-et for å bygge opp den totale forespørselen.

Nedenfor vises et eksempel på et kall utført av systembruker **a545ca29-7fb8-4810-a2f2-0be171cb2a26** som prøver å gjøre en **read**-operasjon
på en ressurs av typen **kravogbetaling** for organisasjonen **923609016**.


```json
{
"Request": {
"ReturnPolicyIdList": true,
"AccessSubject": [
{
"Attribute": [
{
"AttributeId": "urn:altinn:systemuser:uuid",
"Value": "a545ca29-7fb8-4810-a2f2-0be171cb2a26"
}
]
}
],
"Action": [
{
"Attribute": [
{
"AttributeId": "urn:oasis:names:tc:xacml:1.0:action:action-id",
"Value": "read",
"DataType": "http://www.w3.org/2001/XMLSchema#string"
}
]
}
],
"Resource": [
{
"Attribute": [
{
"AttributeId": "urn:altinn:resource",
"Value": "kravogbetaling"
},
{
"AttributeId": "urn:altinn:organization:identifier-no",
"Value": "923609016"
}
]
}
]
}
}

```

Altinn PDP returnerer svaret som en XACML Json respons hvor det informeres om request autorisert eller ikke.

API tilbyder må i sitt API ha logikk for å kunne avvise eller godta forespørsel fra system basert på dette.


```json
{
"Response": [
{
"Decision": "Permit",
"Status": {
"StatusCode": {
"Value": "urn:oasis:names:tc:xacml:1.0:status:ok"
}
},
"Obligations": [
{
"id": "urn:altinn:obligation:authenticationLevel1",
"attributeAssignment": [

{
"attributeId": "urn:altinn:obligation-assignment:1",
"value": "2",
"category": "urn:altinn:minimum-authenticationlevel",
"dataType": "http://www.w3.org/2001/XMLSchema#integer",
"issuer": null
}
]
}
]
}
]
}
```


Se flere eksempler på bruk av Altinn PDP her.
Loading

0 comments on commit d97c37a

Please sign in to comment.