Microsoft Entra ID over OIDC
Forfatter: Rene Giovanni Borella
Begrænsninger
Metoden vi benytter for at videresende brugeren til den eksterne udbydere begrænser desværre nogle enkelte usecases. Disse er beskrevet herunder
Entra ID-gæstebruger
Fordi vi laver en direkte kobling mellem en organisation og et domæne, er det ikke muligt at logge ind via organisationens AD med en anden mailadresse end det til organisationen opsatte domæne.
ie. vil det ikke være muligt at understøtte en AD gæstebruger med mail bruger@y.dk at logge ind via en organisations AD, som har @x.dk-domæne.
Her henvises i stedet til at gæstebrugeren oprettes og administreres igennem vores brugerstyring.
Ved at oprette en App Registration i Azure Portal kan man tillade brugere fra ens eget Microsoft miljø at oprette sig. Koblingen her benytter OIDC.
Opret App
Start med at oprette en App Registration som er bindeledet mellem Entra og Keycloak.
- Name: Angiv et sigende navn
- Supported account types: Vælg de relevante kontotyper for din organisation
- Redirect URI (optional): Udfyldes senere under Authentication
Når applikationen er oprettet gemmes Application (client) ID, og Directory (tenant) ID til senere.
Opret adgang
Når applikationen er oprettet er det muligt at lave adgang udefra. Dette gøres ved at oprette en Client Secret. Naviger til Certificates & secrets og opret en New Client secret som vil fungere som nøgle.
- Description: Angiv et sigende navn til nøglen
- Expires: Angiv hvor længe nøglen skal være aktiv
Her gemmes Value (Client Secret) til senere.
Redirect
Ud over Client secret, skal der sættes en Redirect som sikrer at anmodninger kun bliver sendt det rigtige sted hen.
For at oprette en Redirect, navigeres til Authentication (Preview) og Add Redirect URI tilføjes
- Select a platform to add redirect URI: Vælg
WebunderWeb applications - Redirect URI: Sæt adressen som du har fået fra support
Rettigheder
Når man opretter App er der som standard tilladt User.Read som er nødvendig for at kunne logge ind. Det er ikke nødvendigt med andre rettigheder.
Gruppeforhold
Nogle af vores løsninger kan benytte brugerens gruppeforhold i AD til rettighedsstyring. Hvis man skal have overført gruppeforhold sammen med identiteten, skal disse sættes i token.
For at tilføje grupperne til token, navigeres til Token configuration og Add groups claim tilføjes.
- Select group types to include in Access, ID, and SAML tokens: Sæt flueben i
Groups assigned to the application - Customize token properties by type: Sæt
sAMAccountNamefor alle typer
Man kan begrænse adgangen til App, navigerer man til sin applikation under Enterprise applications -> Manage -> Users and groups. Her tilføjes grupper som skal overføres sammen med claim. Eksempelvis kan man vha. grupper opdele nedarvning af rettigheder i MapConnect.
Hvis man er i tvivl om grupperne der er tilgængelig for Geopartner kan man benytte jwt.ms.
Start med at tilføje https://jwt.ms til redirect, og gå til et link som:
https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/authorize?client_id={CLIENT_ID}&response_type=id_token&redirect_uri=https%3A%2F%2Fjwt.ms&response_mode=fragment&scope=openid&state=1asdfxxc0962aszdfasdfa&nonce=6780Erstat TENANT_ID og CLIENT_ID med jeres egne værdier. Hvis den afkodede token ser sådan ud:
{ ...}.{ ... "groups": [ "Gruppe_1", "Gruppe_2", "Gruppe_3", ], ...}.[Signature]Vil grupperne blive gemt på den enkelte bruger. Informationen vil blive opdateret hver gang brugeren logger på.
Når man er færdig med at teste, kan man med fordel fjerne https://jwt.ms fra redirect
Færdiggørelse
Vi er nu ved at være færdige med opsætning af Entra, og brugerne kan nu logge på. For at opsummere er her en tabel med informationer der er krævet for at få opsætningen til at lykkes.
| Værdi | Hvor findes informationen | Hvem skaffer informationen |
|---|---|---|
| Client ID | App -> Dashboard | IT-afdeling |
| Tenant ID | App -> Dashboard | IT-afdeling |
| Client Secret | App -> Authentication (Preview) | IT-afdeling |
| Gruppe claim | Enterprise applications -> Manage -> Users | IT-afdeling |
| Redirect URI | Keycloak IdP | Geopartners implementeringsansvarlige |