Microsoft har två varianter av Active Directory som man kan autentisera mot. Båda varianterna stödjer protokollet Open Id som modulen openidc använder sig av, men har helt olika användsningsområden:
Microsoft Azure Hosted Active Directory Det här är AD-tjänsten i Azure som man använder som sin vanliga användarhantering om man valt att lägga sin Windows-miljö i Azure. Det är den här typen av AD-tjänst som jag kommer använda som exempel i artikeln.
Microsoft Live AD Det här är ett AD som innehåller hotmail.com, live.com, outlook.com eller vad Microsoft kallar sina ”gratis”-konton för. Det fungerar att autentisera mot den här tjänsten också, men användningsområdet blir annorlunda då det är svårare att styra vem som får logga in eftersom det inte går att ha några AD-grupper här.
När du har ett AD följder du guiden nedan:
Steg 1 – Bestäm domännamn och callback-URL
Jag kommer använda domänen https://openid-app.cloudnet.cloud, med callbackurl https://openid-app.cloudnet.cloud/openid-start-session
Steg 2 – Installera Apache-modulen
På din Ubuntu-server kör du följande kommando för att installera modulen apt-get -y install libapache2-mod-auth-openidc
Aktivera med a2enmod auth_openidc
service apache2 restart
Steg 3 – Ta reda på ditt Active Directory ID
När du är inloggad i Azure-portalen:
- Välj Azure Active Directory
- Välj Properties
- Leta efter Active Directory ID
Mitt id är e98c0afb-9b00-47a5-b843-2a3e1a36e085. Spara det, du kommer behöva det snart.
Steg 4 – Registrera en app i ditt Azure AD
I Azure-portalen:
- Välj Azure Active Directory
- Välj App registrations
- Välj New application registration
- Application Type: Web app / API
- Sign-on URL: Ange din URL. Jag använder https://openid-app.cloudnet.cloud
- Klicka Create
- Spara ditt Application ID, det kommer du behöva snart.
Mitt Appliocation ID är d2e491bc-fa4f-456f-918a-4b14b004e45e - Klicka på Settings
- Klicka på Reply URLs
- Ändra så att Reply URL är din callback-URL. Jag använder https://openid-app.cloudnet.cloud/openid-start-session
- Spara ändringen
- Klicka på Properties
- Spara App ID URI, du kommer behöva den snart.
Mitt App ID URI är https://anders1arbast.onmicrosoft.com/8a7bfb34-6e8b-9b9a-9a75-9d4850c07ccd - Klicka på Keys
- Lägg till en nyckel, välj ”Never expires”
- Spara, Nu ser du lösenordet. Spara det, du behöver det snart. Mitt lösenord är iaaiaalwj2h3HrhYoIp0bHXazGsRIoWEy7+FY/Ys1dY=
- Gå tillbaka till din nyregistrerade app i AD:t
- Klicka på Manifest
- Ändra raden med groupMembershipClaims så den ser ut så här
"groupMembershipClaims": "All",
Ändringen gör att Azure inkluderar en lista i svaret med vilka grupper användarkontot är medlem i. - Klicka Save
Steg 5 – Konfigurera din vhost i Apache
Anpassa inställningarna så de passar din miljö. Följande inställningar är extra viktiga:
OIDCRedirectURI
URL du valde som endpoint tidigare.
OIDCProviderMetadataURL
Den här URL:en måste du konstruera själv med följande komponenter:
https://login.microsoftonline.com/{AD-domännamn}/.well-known/openid-configuration
AD-domännamnet hittar du din App ID URI, i mitt fall https://anders1arbast.onmicrosoft.com/8a7bfb34-6e8b-9b9a-9a75-9d4850c07ccd, då är mitt AD-domännamn anders1arbast.onmicrosoft.com,
OIDCProviderIssuer
Skapas från ditt Active Directory ID, enligt följande mönster:
https://sts.windows.net/{Active Directory ID}/
OIDCClientID
Ditt Application ID som du fick när du registrerade appen.
OIDCClientSecret
Lösenordet som genererades när du registrerade appen.
<virtualhost *:443> ServerName openid-app.cloudnet.cloud DocumentRoot /mnt/persist/www/docroot SSLEngine on SSLCertificateFile /etc/ssl/cloudnet/cert.crt SSLCertificateKeyFile /etc/ssl/cloudnet/cert.key SSLCertificateChainFile /etc/ssl/cloudnet/intermediate.ca # The URL you have selected as endpoint OIDCRedirectURI https://openid-app.cloudnet.cloud/openid-start-session # OIDCCryptoPassphrase can be anything OIDCCryptoPassphrase zZZzzZZZaaaa # To work with Azure AD OIDCResponseType id_token OIDCResponseMode form_post # Azure AD connection OIDCProviderMetadataURL https://login.microsoftonline.com/anders1arbast.onmicrosoft.com/.well-known/openid-configuration OIDCProviderIssuer https://sts.windows.net/e98c0afb-9b00-47a5-b843-2a3e1a36e085/ # Azure AD app info OIDCClientID d2e491bc-fa4f-456f-918a-4b14b004e45e OIDCClientSecret "iaaiaalwj2h3HrhYoIp0bHXazGsRIoWEy7+FY/Ys1dY=" <location "/"> AuthType openid-connect Require valid-user </location> </virtualhost>
Glöm inte starta om apache för att konfigurationen ska börja gälla:
service apache2 restart
Steg 6 – Testa
Öppna webbläsaren och testa så du blir omdirigerad till Microsoft inloggning när du går till din skyddade site.
Överkurs – Kräv att användaren måste vara med i en grupp
Skapa en grupp i ditt active directory. Ta reda på vad gruppen har för ID. Ändra redan Require-direktivet i Localtion-taggen enligt nedan.
Min grupp har ID d49421a2-e1f9-4f7c-a9fc-df52fa85060b
<location "/"> AuthType openid-connect Require claim "groups~d49421a2-e1f9-4f7c-a9fc-df52fa85060b" </location>
Felsökning
Kolla i Apaches error-log för mer information om vad som pågår.
Vid lyckad inloggning finns en del information om kontot tillgängligt som environment-variabler.