3. SimpleSAMLphp och Office 365
Inledning
Guiden beskriver hur man ansluter Office 365 mot sin redan befintlig simpleSAMLphp IdP. Då metatdatat som Skolfederation distribuerar inte innehåller information om Office 365 måste det konfigureras ett ett-till-ett-förhållande mellan simpleSAMLphp och Office 365. För att åstadkomma det matar man manuellt in metadata i respektive konfiguration.
Office 365
För att federerad inloggning ska fungera så krävs det att Azure AD är konfigurerat för Office 365. Logg in i Office 365 och gå till Administrationsmenyn.
Välj sen Azure AD.
UPN-suffix
Om man ska provisionera sina lokala AD användare till Azure AD används Azure Active Directory Connect. Som standard använder Azure Active Directory Connect attributet UserPrincipalName som användarnamn. Användarens UPN-suffix ska vara satt till den SSO domän som är konfigurerad i Azure AD. I det här exemplet använder vi domänen ssdomain.com.
Om det behövs, lägga till SSO domänen som ett UPN-suffix i det lokala AD:t. Logga in på en av organisationens Active Directory domänkontrollant
- Starta Active Directory domäner och förtroenden
- I konsolträdet, högerklicka på Active Directory domäner och förtroenden klicka sen på Egenskaper
- Välj fliken UPN suffix, skriver ett alternativ UPN -suffix för skogen klicka sen på lägg till
- Upprepa steg 3 för att lägga till ytterligare alternativa UPN –suffix
Installera Azure AD modulen
Konfigurationen kommer att ske med PowerShell. Det behövs installeras två tillägg som hämtas från Microsoft.http://go.microsoft.com/fwlink/?LinkID=286152
Microsoft Online Services Sign-In Assistant for IT Professionals RTWhttp://go.microsoft.com/fwlink/p/?linkid=236297
Azure Active Directory Module for Windows PowerShell (64-bit version)
Skapa SSO domänen i Azure AD
Starta PowerShell och anslut.
$Cred=get-credential användare@mindomän.onmicrosoft.com
Connect-MSOLService –Credential $cred
Lägg till domänen som ska användas för SSO. Det går inte att använda den standarddomänen som tillhandahålls av Microsoft, den som slutar på "onmicrosoft.com" i en SSO konfiguration.
New-MsolDomain -Name ssodomain.com
För att verifiera att man är ägare till domänen vill Microsoft att man skapar en TXT post i domänens DNS zon. Postens värde sätts till en sträng som tas fram med följande.
Get-MsolDomainVerificationDns -DomainName ssodomain.com -Mode dnstxtrecord
Utmatningen från kommandot ser ut så här.
Label : ssodomain.com
Text : MS=ms83403005
Ttl : 3600
Om man t.ex. använder BIND som DNS server så lägger man till följande post i zonen. Byt ut MS=ms83403005 mot värde från punkten ovan.
@ 1h IN TXT MS=ms83403005
När konfigureringen av DNS zonen är klar kan ägandet verifieras.
Confirm-MsolDomain -DomainName ssodomain.com
Konfigurera domänen med metadata
SimpleSAMLphp metadata kan hämtas från den lokala SimpleSAMLphp installationen med följande länk. Värden från metadatat kommer att användas för att konfigurera SAML för Azure AD domänen.
https://idp.ssodomain.com/simplesaml/saml2/idp/metadata.php
I nästa PowerShell avsnitt sätts några variabler, ändra till egna värden:
- $dom = SSO domänen
- $certFile = sökväg till IDP certifikatet
- $BrandName = Ett namn
- $LogOnUrl = Hittas i SimpleSAMLphp metadatat, sök efter "SingleSignOnService"
- $LogOffUrl = Hittas i SimpleSAMLphp metadatat, sök efter " SingleLogoutService"
- $EntityID = Hittas i SimpleSAMLphp metadatat, sök efter "EntityID"
Certifikatet som används av IdP:n måste konfigureras i Azure AD domänen. <span style="color: #ff0000">Kopiera</span> <span style="color: #ff0000">certifikatet till c:\temp\server.crt</span> eller ändra sökvägen i variabeln <span style="color: #ff0000">$certFile</span>.
Ändra variablerna, kopiera sen hela stycket till PowerShell. <span style="color: #ff0000">OBS Tryck på Enter två gånger för att kommandot ska köras.</span>
$dom = "ssodomain.com"
$certFile = "C:\temp\server.crt"
$BrandName = "Sample SAML 2.0 IdP"
$LogOnUrl = "https://idp.ssodomain.com/simplesaml/saml2/idp/SSOService.php"
$LogOffUrl ="https://idp.ssodomain.com/simplesaml/saml2/idp/SingleLogoutService.php"
$EntityID = "https://idp.ssodomain.com/simplesaml/saml2/idp/metadata.php"
$Protocol = "SAMLP"
$cert = [IO.File]::ReadAllText($certFile)
$cert = $cert.replace("---BEGIN CERTIFICATE---","")
$cert = $cert.replace("---END CERTIFICATE---","")
$cert = $cert.replace("`r","")
$cert = $cert.replace("`n","")
Set-MsolDomainAuthentication -DomainName $dom `
-FederationBrandName $BrandName `
-Authentication Federated `
-PassiveLogOnUri $LogOnUrl `
-SigningCertificate $cert `
-IssuerUri $EntityID `
-LogOffUri $LogOffUrl `
-PreferredAuthenticationProtocol $Protocol
Kontrollera att allt ser rätt ut med Get-MsolDomainFederationSettings.
Get-MsolDomainFederationSettings -domainName ssodomain.com | Format-List *
ExtensionData: System.Runtime.Serialization.ExtensionDataObject
ActiveLogOnUri: http://dummystsurl.microsoftonline.com/dummyurl
DefaultInteractiveAuthenticationMethod :
FederationBrandName: IIS Skolfederation
IssuerUri : https://idp.ssodomain.com/simplesaml/saml2/idp/metadata.php
LogOffUri : https://idp.ssodomain.com/simplesaml/saml2/idp/SingleLogoutService.php
MetadataExchangeUri :
NextSigningCertificate :
OpenIdConnectDiscoveryEndpoint :
PassiveLogOnUri: https://idp.ssodomain.com/simplesaml/saml2/idp/SSOService.php
PreferredAuthenticationProtocol : Samlp
SigningCertificate : Certifikat data
SupportsMfa : False
Om man vill ändra något så måste man först sätta domänen till läge managed, för att sen igen köra kommandot Set-MsolDomainAuthentication.
Set-MsolDomainAuthentication -DomainName ssodomain.com -Authentication Managed
Skapa en test användare
Om man inte vill synka sitt lokala AD till Azure AD eller för att bara lägga upp en test användare använder man New-MsolUser. Användaren läggs till i Azure AD och kan logga in i Office 365. Användare har i det här läget ingen licens för att nyttja något av programmen. En administratör kan inne i Office 365 tilldela användaren en Office licens.
New-MsolUser -UserPrincipalName kalle@ssodomain.com -ImmutableId 123456 -DisplayName "Kalle Andersson" -FirstName Kalle -LastName Andersson -AlternateEmailAddresses "kalle.andersson@ssodomain.com" -UsageLocation "SE"
Synkronisera användare
Synkroniseringen genomförs med verktyget Azure Active Directory Connect. Servern där Azure Active Directory Connect ska installeras måste vara medlem i den "Active directory forest" som ska synkroniseras. Ladde ner Microsoft Azure Active Directory Connect och genomför en första synkronisering.
{+}http://www.microsoft.com/en-us/download/details.aspx?id=47594+
För att starta synkroniseringen manuelt
C:\Program Files\Microsoft Azure AD Sync\Bin\DirectorySyncClientCmd.exe
Konfigurera SimpleSAMLphp
Konfigurera SimpleSAMLphp med metadata
SimpleSAMLphp måste konfigureras med metadata. Microsoft distribuerar sitt metadata på adressen:
{+}https://nexus.microsoftonline-p.com/federationmetadata/saml20/federationmetadata.xml+
Om man kopierar metadatat från webbläsaren så kommer det med extra formateringstecken. Spara därför ner filen från webbläsaren med Ctrl+s eller använd t.ex. wget eller curl för at hämta XML filen. Öppna filen med lämplig programvara. Kopiera allt innehåll (copy paste) till SimpleSAMLphp:s metadata-konverterare.
https://idp.ssodomain.com/simplesaml/admin/metadata-converter.php?
Den konverterade texten ska läggas in i filen simplesaml/metadata/saml-sp-remote.php.
EXEMPEL!!!
NamedID
ImmutableID är, vid standardkonfiguration av Azure Active Directory Connect, satt till att skapas av Active Directory attributet ObjectID. Attributet ObjectID base64 kodas och lagras i Azure AD tillsammans med resten av användardatan. ImmutableID är ankaret som används av Azure Active Directory Connect vid synkronisering av användare. När ett autentiseringssvar skickas måste NameID vara satt till ImmutableID. Använd följande i PowerShell för att exportera användarnas ImmutableID till en kommaseparerad fil c:\temp\ImmutableID.csv.
Get-MSOLUser | where {$_.ImmutableId -ne $null} | select userprincipalname, ImmutableId | export-csv c:\temp\ImmutableId.csv
För att SimpleSAMLphp ska använda attributet ImmutableID som NameID måste det konfigureras. I filen simplesaml/metadata/saml20-sp-remote.php lägg till följande rad
'simplesaml.nameidattribute' => 'ImmutableID',
IDPEmail
Attributet IDPEmail är användarens Active Directory UPN och ska skickas med som ett attribut i autentiseringssvaret.
Skapa test användaren i exampleauth
Normalt brukar man populera användardata från en LDAP eller liknande. Här visas hur man kan använda modulen exampleauth:UserPass för att testa att installationen fungerar. I file simplesaml/metadata/saml20-idp-hosted.php ska auth vara satt till example-userpass
'auth' => 'example-userpass',
Aktivera modulen
touch simplesaml/modules/exampleauth/enable
Konfigurationen för example-userpass finns i filen simplesamlphp/config/authsources.php.
'example-userpass' => array(
'exampleauth:UserPass',
'kalle:lösenord' => array(
'IDPEmail' => array('kalle@ssodomain.com'),
'ImmutableID' => array('123456'),
),
),
0 Comments