> For the complete documentation index, see [llms.txt](https://docs.devolutions.net/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.devolutions.net/powershell-universal/da/sikkerhed/enterprise-security/openid-connect.md).

# OpenID Connect

Konfigurer OpenID Connect-godkendelse i PowerShell Universal med Entra ID eller Okta, herunder claimtilknytning og delegerede adgangstokens.

{% hint style="info" %}
OpenID Connect kræver en [licens](https://store.devolutions.net/package#psu).
{% endhint %}

OpenID Connect er et godkendelseslag oven på OAuth 2.0, et autorisationsframework. Det understøttes af mange leverandører og giver mulighed for at godkende mod systemer som EntraID.

Dette dokument beskriver de trin, der er nødvendige for at konfigurere EntraID OpenID Connect og bruge det sammen med Universal.

## Konfiguration af Azure Entra ID (Azure Active Directory)

I Azure Portal skal De gå til Deres Entra ID-blad. Klik derefter på noden Enterprise Application, og klik derefter på New application.

Klik derefter på Create your own application.

Vælg et navn til Deres program, og vælg Register an application for at integrere med Microsoft Entra ID.

På siden Register an application skal De definere en omdirigerings-URI. Dette er URL'en til PowerShell Universal-serveren, som Entra ID omdirigerer brugeren til. Denne værdi er defineret i PowerShell Universal-konfigurationsfilen, `appsettings.json`.

Nu hvor programmet er oprettet, skal De fra siden Enterprise Applications klikke på enkeltlogon og derefter på Go to application. Dette fører Dem til siden for programregistrering.

Certificates and secrets og definer en ny hemmelighed. Dette bruges sammen med PowerShell Universal-konfigurationsfilen.

Nu skal vi indsamle flere oplysninger fra programmet for at angive dem til PowerShell Universal. Fra programmets startside skal De gemme Application (client) og directory (tenant) ID.

### Claim-tilknytning

For at levere gruppekrav til PowerShell Universal skal De eksponere gruppekravene fra Deres appregistrering. Klik på Token Configuration, og klik derefter på Add groups claim.

Når De har klikket på Add groups claim, har De mulighed for at vælge, hvilke grupper der leveres. Hvis De vælger All Groups, leveres gruppeclaims til PowerShell Universal

Hvis De vælger Groups assigned to the application, skal De sikre, at De markerer værdien Emit groups as role claims. Denne indstilling kræver en betalt Entra ID-plan.

Hvis De vil tildele en gruppe til Deres appregistrering, skal De finde Deres app i Enterprise Applications og klikke på User and Groups. Klik derefter på Add User\Group, og vælg de grupper, De vil have tildelt Deres program.

Når De har konfigureret groups-claimet i Entra ID, kan De derefter opdatere claim-tilknytningerne i PowerShell Universal til de angivne grupper.

For hver rolle, som De gerne vil tildele til en Entra ID-gruppe, skal De angive Claim Type og Claim Value for den rolle. Jeg har f.eks. en gruppe i mit miljø med id'et 446832da-d4ad-4972-b0a2-eda736129928. Claim Type for dette objekt er <http://schemas.microsoft.com/ws/2008/06/identity/claims/groups>.

For at tildele dette til administratorgruppen ville jeg gøre følgende.

Brugere i denne gruppe vil nu være en del af rollen Administrator i PowerShell Universal.

### Group Overages

For organisationer, der har brugere med mange grupper, bør De begrænse antallet af grupper, der sendes til PowerShell Universal. Afsendelse af et stort antal grupper kan overskride tokenets størrelse og forårsage autorisationsfejl. Hvis De ønsker at begrænse grupperne, skal De vælge Groups assigned to the application.

For at føje grupper til programmet skal De gå tilbage til siden for Enterprise-programmet og vælge Users and groups.

Klik på værdien Add user/group for at tildele disse grupper til Deres program. Når brugere logger på PowerShell Universal, leveres kun disse gruppeclaims.

Hvis De vil vide mere om Group Overages, [klik her](https://learn.microsoft.com/en-us/security/zero-trust/develop/configure-tokens-group-claims-app-roles#group-overages).

### Konfiguration af Universal til Entra ID

#### Brug Appsettings.json

{% hint style="info" %}
Læs mere om `appsettings.json` på vores [Indstillinger ](/powershell-universal/da/config/settings.md)side.
{% endhint %}

Nu hvor vi har fuldført konfigurationen af en AzureAD App Registration, kan vi opdatere filen `appsettings.json` med de relevante indstillinger. For mit program ville det se nogenlunde sådan ud.

{% code collapsedlinecount="10" %}

```javascript
    "OIDC": {
      "Enabled": "true",
      "CallbackPath": "/auth/signin-oidc",
      "ClientID": "<application ID>",
      "ClientSecret": "<client secret>",
      "Resource": "",
      "Authority": "https://login.microsoftonline.com/<directory ID>",
      "ResponseType": "code",
      "SaveTokens": "false",
      "GetUserInfo": false
    },
```

{% endcode %}

{% hint style="warning" %}
Hvis De bruger Chrome, skal De også aktivere HTTPS. De vil se en 500-fejl, hvis HTTPS ikke er aktiveret.
{% endhint %}

#### Brug Authentication.ps1

De kan bruge admin console til at konfigurere OpenID Connect. Vi anbefaler denne metode, da De ikke behøver at genstarte PowerShell Universal-tjenesten, efter at De har konfigureret OIDC.

For at tilføje en ny godkendelsesmetode skal De gå til Secure > Authentication og tilføje OpenID Connect-udbyderen.

Når udbyderen er tilføjet, kan De klikke på knappen details for at angive de indstillinger, De skal bruge for at godkende mod Deres OIDC-udbyder. Når De har angivet OIDC-indstillingerne, skal De sætte udbyderen til aktiveret og logge af. Når De besøger siden `/admin`, bliver De bedt om at logge på med OIDC.

### Delegerede adgangstokens

De kan bruge adgangstokens, der er genereret af et OIDC-logon, til andre tjenester, som brugeren kan have adgang til. I Deres OIDC-udbyder, f.eks. Entra ID, kan De tildele yderligere tilladelser til tokenet.

De skal også aktivere adgangstokens i godkendelsesflowet, så tokenet giver den nødvendige ressourceadgang.

Til sidst skal De i Deres PSU-fil `appsettings.json` sikre, at `SaveTokens` er aktiveret, at ressourcetypen omfatter token, og at den ressource, De vil have adgang til, er medtaget i indstillingen Resource. Den URL, De angiver i ressourcen, bør være anført i udbyderen.

Eksemplet nedenfor tilføjer en ressource til Microsoft O365.

{% code collapsedlinecount="10" %}

```javascript
    "OIDC": {
  "Enabled": "true",
  "CallbackPath": "/auth/signin-oidc",
  "ClientID": "<clientID>",
  "ClientSecret": "<clientSecret>",
  "Resource": "https://manage.office.com/",
  "Authority": "https://login.microsoftonline.com/tenant",
  "ResponseType": "id_token token",
  "SaveTokens": "true",
  "UseTokenLifetime": true
},
```

{% endcode %}

I Deres dashboard har De nu adgang til en `$AccessToken`- og `$IdToken`-variabel, som De kan bruge med cmdlets, der kræver autorisation.

For eksempel accepterer cmdletten `Connect-AzureAd` et adgangstoken.

{% code collapsedlinecount="10" %}

```powershell
Connect-AzureAD
       [-AzureEnvironmentName <EnvironmentName>]
       [-TenantId <String>]
       -AadAccessToken <String>
       [-MsAccessToken <String>]
       -AccountId <String>
       [-LogLevel <LogLevel>]
       [-LogFilePath <String>]
       [-InformationAction <ActionPreference>]
       [-InformationVariable <String>]
       [-WhatIf]
       [-Confirm]
       [<CommonParameters>]
```

{% endcode %}

### Opdateringstokens

De kan konfigurere Azure Active Directory og PowerShell Universal til at levere opdateringstokens, så der kan anmodes om nye tokens, hvis adgangstokenet udløber. For at gøre det skal De aktivere offline\_access i Deres appregistrering.

Når De konfigurerer PowerShell Universal, skal De anmode om omfanget `offline_access` og angive SaveTokens til true og bruge svartypen id\_token.

{% code collapsedlinecount="10" %}

```json
"OIDC": {
    "Enabled": "true",
    "CallbackPath": "/auth/signin-oidc",
    "ClientID": "----",
    "ClientSecret": "---",
    "Resource": "https://graph.microsoft.com",
    "Authority": "https://login.microsoftonline.com/----",
    "ResponseType": "code id_token",
    "SaveTokens": "true",
    "CorrelationCookieSameSite": "",
    "UseTokenLifetime": true,
    "Scope": "openid profile groups offline_access",
    "GetUserInfo": false
},
```

{% endcode %}

Når det er konfigureret, kan De få adgang til variablen `$RefreshToken` i Deres scripts og apps.

## Konfiguration af Okta

Okta understøtter OpenID Connect. De kan konfigurere et program til at tillade godkendelse mod PowerShell Universal-instanser.

I Deres Okta admin console skal De udvide Applications og klikke på Applications. Klik derefter på Create App Integration.

Vælg OIDC og Web Application.

Navngiv Deres program, og definer den Sign-In redirect URL, der bruges til at kalde Deres PowerShell Universal-server. De skal angive denne callback-URL i Deres PowerShell Universal-konfiguration.

Når De har oprettet Deres program, skal De notere Deres Client ID og Client Secret. De angiver disse i Deres PowerShell Universal-konfiguration.

På fanen Sign On skal De angive det gruppeclaimsfilter, der skal bruges til at levere claims til PowerShell Universal. Disse claims kan bruges til at tildele roller baseret på gruppemedlemskab: `groups` / regex `.*`.

Når De har konfigureret Deres program, kan De konfigurere PowerShell Universal.

### Konfiguration af Universal til Okta

Når De har defineret Deres Okta-program, kan De indstille filen `appsettings.json` til at bruge udbyderen til logon. Nedenfor er et eksempel på den sektion, der er påkrævet, for at Okta kan fungere. Bemærk scope-funktionaliteten, da den er påkrævet for at hente gruppemedlemskab.

{% code collapsedlinecount="10" %}

```json
    "OIDC": {
      "Enabled": "true",
      "CallbackPath": "/authorization-code/callback",
      "ClientID": "6f006906-643a-40fe-af00-9060cea5d6ef",
      "ClientSecret": "M~.rE56.md_MOpB2I5kwj_voFuX-i891N0",
      "Resource": "",
      "Authority": "https://poshtools.okta.com",
      "ResponseType": "code",
      "SaveTokens": "true",
      "CorrelationCookieSameSite": "",
      "UseTokenLifetime": true,
      "Scope": "openid profile groups",
      "GetUserInfo": true
    },
```

{% endcode %}

### Rollebaseret adgang

For at slå gruppemedlemskab op for Okta skal De bruge variablen `$UserInfo`, som er tilgængelig i `roles.ps1`. Denne variabel giver yderligere oplysninger om den bruger, der logger på.

Egenskaben groups indeholder en liste over grupper, som brugeren er medlem af. De kan validere medlemskab ved at kontrollere, om listen indeholder den ønskede gruppe.

{% code collapsedlinecount="10" %}

```powershell
param($User)

$UserInfo.groups -contains 'Administrators'
```

{% endcode %}

### Delegerede adgangstokens

Adgangstokens er tilgængelige for brugere i deres scripts. De kan bruge adgangstokens i jobs, der er startet af brugere og dashboards.

For eksempel kunne De returnere den aktuelle brugers oplysninger ved hjælp af det adgangstoken, som Okta leverer.

{% code collapsedlinecount="10" %}

```powershell
Invoke-RestMethod https://poshtools.okta.com/oauth2/v1/userinfo -Headers @{
    Authorization = "Bearer $AccessToken"
}
```

{% endcode %}

## Visning af claimoplysninger

Hvis De er usikker på, hvilke claimoplysninger der sendes til PowerShell Universal fra Deres identitetsudbyder, kan De bruge knappen View Claim Information på siden Secure > Roles til at få vist alle de roller, der er leveret til PSU fra fjernsystemet.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.devolutions.net/powershell-universal/da/sikkerhed/enterprise-security/openid-connect.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
