Självstudie: Implementera federerad autentisering mellan Microsoft Entra-ID och lokal SharePoint

Beskrivning av scenario

I den här självstudien konfigurerar du en federerad autentisering mellan Microsoft Entra-ID och Lokal SharePoint. Målet är att tillåta användare att logga in på Microsoft Entra-ID och använda sin identitet för att komma åt de lokala SharePoint-webbplatserna.

Förutsättningar

För att utföra konfigurationen behöver du följande resurser:

  • En Microsoft Entra-klientorganisation. Om du inte har någon, kan du skapa ett kostnadsfritt konto.
  • En SharePoint 2013-servergrupp eller senare.

Den här artikeln använder följande värden:

  • Företagsprogramnamn (i Microsoft Entra-ID): SharePoint corporate farm
  • Förtroendeidentifierare (i Microsoft Entra-ID) /sfär (i SharePoint): urn:sharepoint:federation
  • loginUrl (till Microsoft Entra ID): https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
  • Url för SharePoint-webbplats: https://spsites.contoso.local/
  • Svars-URL för SharePoint-webbplats: https://spsites.contoso.local/_trust/
  • Konfigurationsnamn för SharePoint-förtroende: MicrosoftEntraTrust
  • UserPrincipalName för Microsoft Entra-testanvändaren: AzureUser1@demo1984.onmicrosoft.com

Konfigurera ett företagsprogram i Microsoft Entra-ID

För att konfigurera federationen i Microsoft Entra-ID måste du skapa ett dedikerat Enterprise-program. Konfigurationen förenklas med den förkonfigurerade mallen SharePoint on-premises som finns i programgalleriet.

Skapa företagsprogrammet

  1. Logga in på administrationscentret för Microsoft Entra som minst molnprogramadministratör.
  2. Bläddra till Identity>Applications Enterprise-program>>Nytt program.
  3. I sökrutan anger du Lokal SharePoint. Välj Lokal SharePoint i resultatfönstret.
  4. Ange ett namn för ditt program (i den här självstudien är SharePoint corporate farmdet ) och klicka på Skapa för att lägga till programmet.
  5. I det nya företagsprogrammet väljer du Egenskaper och kontrollerar värdet för Användartilldelning som krävs?. I det här scenariot anger du värdet Nej och klickar på Spara.

Konfigurera företagsprogrammet

I det här avsnittet konfigurerar du SAML-autentiseringen och definierar de anspråk som ska skickas till SharePoint vid lyckad autentisering.

  1. I Översikt över Enterprise-programmet SharePoint corporate farmväljer du 2. Konfigurera enkel inloggning och välj SAML i nästa dialogruta.

  2. På sidan Konfigurera enkel inloggning med SAML väljer du ikonen Redigera i fönstret Grundläggande SAML-konfiguration .

  3. I avsnittet Grundläggande SAML-konfiguration följer du dessa steg:

    1. I rutan Identifierare kontrollerar du att det här värdet finns: urn:sharepoint:federation.

    2. I rutan Svars-URL anger du en URL med hjälp av det här mönstret: https://spsites.contoso.local/_trust/.

    3. I rutan Inloggnings-URL anger du en URL med hjälp av det här mönstret: https://spsites.contoso.local/.

    4. Välj Spara.

  4. I avsnittet Användarattribut och anspråk tar du bort följande anspråkstyper, som är värdelösa eftersom de inte används av SharePoint för att bevilja behörigheter:

    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname
    • http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname
  5. Inställningarna bör nu se ut så här:

    Basic SAML settings

  6. Kopiera den information som du behöver senare i SharePoint:

    • I avsnittet SAML-signeringscertifikat laddar du ned certifikatet (Base64). Det här är den offentliga nyckeln för signeringscertifikatet som används av Microsoft Entra-ID:t för att signera SAML-token. SharePoint behöver det för att verifiera integriteten för inkommande SAML-token.

    • I avsnittet Konfigurera SharePoint-företagsgrupp kopierar du inloggnings-URL:en i ett anteckningsblock och ersätter den avslutande strängen /saml2 med /wsfed.

    Viktigt!

    Ersätt /saml2 med /wsfed för att se till att Microsoft Entra ID utfärdar en SAML 1.1-token enligt SharePoint.

    • I avsnittet Konfigurera SharePoint-företagsgrupp kopierar du utloggnings-URL :en

Konfigurera SharePoint för att lita på Microsoft Entra-ID

Skapa förtroende i SharePoint

I det här steget skapar du en SPTrustedLoginProvider för att lagra den konfiguration som SharePoint behöver för att lita på Microsoft Entra-ID. För det behöver du informationen från Microsoft Entra-ID:t som du kopierade ovan. Starta SharePoint Management Shell och kör följande skript för att skapa det:

# Path to the public key of the Microsoft Entra SAML signing certificate (self-signed), downloaded from the Enterprise application in the Azure portal
$signingCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2("C:\Microsoft Entra app\SharePoint corporate farm.cer")
# Unique realm (corresponds to the "Identifier (Entity ID)" in the Microsoft Entra enterprise application)
$realm = "urn:sharepoint:federation"
# Login URL copied from the Microsoft Entra enterprise application. Make sure to replace "saml2" with "wsfed" at the end of the URL:
$loginUrl = "https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed"

# Define the claim types used for the authorization
$userIdentifier = New-SPClaimTypeMapping -IncomingClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" -IncomingClaimTypeDisplayName "name" -LocalClaimType "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"
$role = New-SPClaimTypeMapping "http://schemas.microsoft.com/ws/2008/06/identity/claims/role" -IncomingClaimTypeDisplayName "Role" -SameAsIncoming

# Let SharePoint trust the Microsoft Entra signing certificate
New-SPTrustedRootAuthority -Name "Microsoft Entra signing certificate" -Certificate $signingCert

# Create a new SPTrustedIdentityTokenIssuer in SharePoint
$trust = New-SPTrustedIdentityTokenIssuer -Name "MicrosoftEntraTrust" -Description "Microsoft Entra ID" -Realm $realm -ImportTrustCertificate $signingCert -ClaimsMappings $userIdentifier, $role -SignInUrl $loginUrl -IdentifierClaim $userIdentifier.InputClaimType

Konfigurera SharePoint-webbprogrammet

I det här steget konfigurerar du ett webbprogram i SharePoint för att lita på Microsoft Entra Enterprise-programmet som skapades ovan. Det finns viktiga regler att tänka på:

  • Standardzonen för SharePoint-webbprogrammet måste ha Windows-autentisering aktiverat. Detta krävs för sökroboten.
  • Den SharePoint-URL som ska använda Microsoft Entra-autentisering måste anges med HTTPS.
  1. Skapa eller utöka webbappen. I den här artikeln beskrivs två möjliga konfigurationer:

    • Om du skapar ett nytt webbprogram som använder både Windows- och Microsoft Entra-autentisering i standardzonen:

      1. Starta SharePoint Management Shell och kör följande skript:

        # This script creates a new web application and sets Windows and Microsoft Entra authentication on the Default zone
        # URL of the SharePoint site federated with Microsoft Entra
        $trustedSharePointSiteUrl = "https://spsites.contoso.local/"
        $applicationPoolManagedAccount = "Contoso\spapppool"
        
        $winAp = New-SPAuthenticationProvider -UseWindowsIntegratedAuthentication -DisableKerberos:$true
        $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
        $trustedAp = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust    
        
        New-SPWebApplication -Name "SharePoint - Microsoft Entra" -Port 443 -SecureSocketsLayer -URL $trustedSharePointSiteUrl -ApplicationPool "SharePoint - Microsoft Entra" -ApplicationPoolAccount (Get-SPManagedAccount $applicationPoolManagedAccount) -AuthenticationProvider $winAp, $trustedAp
        
      2. Öppna webbplatsen central administration i SharePoint.

      3. Under System Inställningar väljer du Konfigurera alternativa åtkomstmappningar. Rutan Alternativ åtkomstmappningssamling öppnas.

      4. Filtrera visningen med det nya webbprogrammet och bekräfta att du ser något liknande:

        Alternate Access Mappings of web application

    • Om du utökar ett befintligt webbprogram för att använda Microsoft Entra-autentisering i en ny zon:

      1. Starta SharePoint Management Shell och kör följande skript:

        # This script extends an existing web application to set Microsoft Entra authentication on a new zone
        # URL of the default zone of the web application
        $webAppDefaultZoneUrl = "http://spsites/"
        # URL of the SharePoint site federated with ADFS
        $trustedSharePointSiteUrl = "https://spsites.contoso.local/"
        $sptrust = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
        $ap = New-SPAuthenticationProvider -TrustedIdentityTokenIssuer $sptrust
        $wa = Get-SPWebApplication $webAppDefaultZoneUrl
        
        New-SPWebApplicationExtension -Name "SharePoint - Microsoft Entra" -Identity $wa -SecureSocketsLayer -Zone Internet -Url $trustedSharePointSiteUrl -AuthenticationProvider $ap
        
      2. Öppna webbplatsen central administration i SharePoint.

      3. Under System Inställningar väljer du Konfigurera alternativa åtkomstmappningar. Rutan Alternativ åtkomstmappningssamling öppnas.

      4. Filtrera visningen med webbprogrammet som har utökats och bekräfta att du ser något liknande:

        Alternate Access Mappings of extended web application

När webbprogrammet har skapats kan du skapa en rotwebbplatssamling och lägga till ditt Windows-konto som administratör för den primära webbplatssamlingen.

  1. Skapa ett certifikat för SharePoint-webbplatsen

    Eftersom SharePoint-URL:en använder HTTPS-protokoll (https://spsites.contoso.local/) måste ett certifikat anges på motsvarande IIS-webbplats (Internet Information Services). Följ dessa steg för att generera ett självsignerat certifikat:

    Viktigt!

    Självsignerade certifikat är endast lämpliga för teständamål. I produktionsmiljöer rekommenderar vi starkt att du använder certifikat som utfärdats av en certifikatutfärdare i stället.

    1. Öppna Windows PowerShell-konsolen.

    2. Kör följande skript för att generera ett självsignerat certifikat och lägg till det i datorns MY Store:

      New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
      
  2. Ange certifikatet på IIS-webbplatsen

    1. Öppna Internet Information Services Manager-konsolen.
    2. Expandera servern i trädvyn, expandera Webbplatser, välj webbplatsen SharePoint – Microsoft Entra-ID och välj Bindningar.
    3. Välj https-bindning och välj sedan Redigera.
    4. I fältet TLS/SSL-certifikat väljer du det certifikat som ska användas (till exempel spsites.contoso.local som skapats ovan) och väljer OK.

    Kommentar

    Om du har flera klientdelsservrar på webben måste du upprepa den här åtgärden på var och en.

Den grundläggande konfigurationen av förtroendet mellan SharePoint och Microsoft Entra-ID är nu klar. Nu ska vi se hur du loggar in på SharePoint-webbplatsen som en Microsoft Entra-användare.

Logga in som medlem

Microsoft Entra ID har två typer av användare: gästanvändare och medlemsanvändare. Vi börjar med en medlemsanvändare, som bara är en användare som finns i din organisation.

Skapa en medlemsanvändare i Microsoft Entra-ID

  1. Logga in på administrationscentret för Microsoft Entra som minst användaradministratör.
  2. Bläddra till Identitetsanvändare>>Alla användare.
  3. Välj Ny användare>Skapa ny användare överst på skärmen.
  4. Följ dessa steg i användaregenskaperna :
    1. I fältet Visningsnamn anger du B.Simon.
    2. I fältet Användarens huvudnamn anger du username@companydomain.extension. Exempel: B.Simon@contoso.com
    3. Markera kryssrutan Visa lösenord och skriv sedan ned det värde som visas i rutan Lösenord.
    4. Välj Granska + skapa.
  5. Välj Skapa.
  6. Du kan dela webbplatsen med den här användaren och tillåta åtkomst till den.

Bevilja behörigheter till Microsoft Entra-användaren i SharePoint

Logga in på SharePoint-rotwebbplatssamlingen som ditt Windows-konto (webbplatssamlingsadministratör) och klicka på Dela.
I dialogrutan måste du skriva det exakta värdet för userprincipalname, till exempel AzureUser1@demo1984.onmicrosoft.com, och vara noga med att välja namnanspråksresultatet(flytta musen på ett resultat för att se dess anspråkstyp)

Viktigt!

Var noga med att ange det exakta värdet för den användare som du vill bjuda in och välj lämplig anspråkstyp i listan, annars fungerar inte delning.

Screenshot of people picker results without EntraCP.

Den här begränsningen beror på att SharePoint inte verifierar indata från personväljaren, vilket kan vara förvirrande och leda till felstavningar eller att användare av misstag väljer fel anspråkstyp.
För att åtgärda det här scenariot kan en lösning med öppen källkod med namnet EntraCP användas för att ansluta SharePoint 2019/2016/2013 med Microsoft Entra ID och lösa indata mot din Microsoft Entra-klientorganisation. Mer information finns i EntraCP.

Nedan visas samma sökning med EntraCP konfigurerad: SharePoint returnerar faktiska användare baserat på indata:

Screenshot of people picker results with EntraCP.

Viktigt!

EntraCP är inte en Microsoft-produkt och stöds inte av Microsoft Support. Information om hur du laddar ned, installerar och konfigurerar EntraCP i den lokala SharePoint-servergruppen finns på EntraCP-webbplatsen .

Microsoft Entra-användare AzureUser1@demo1984.onmicrosoft.com kan nu använda sin identitet för att logga in på SharePoint-webbplatsen https://spsites.contoso.local/.

Bevilja behörigheter till en säkerhetsgrupp

Lägg till gruppanspråkstypen i företagsprogrammet

  1. I Översikt över Enterprise-programmet SharePoint corporate farmväljer du 2. Konfigurera enkel inloggning.

  2. I avsnittet Användarattribut och anspråk följer du dessa steg om det inte finns något gruppanspråk:

    1. Välj Lägg till ett gruppanspråk, välj Säkerhetsgrupper, kontrollera att källattributet är inställt på grupp-ID
    2. Kontrollera Anpassa namnet på gruppanspråket och markera sedan Generera grupper som rollanspråk och klicka på Spara.
    3. Användarattributen och anspråken bör se ut så här:

    Claims for users and group

Skapa en säkerhetsgrupp i Microsoft Entra-ID

Nu ska vi skapa en säkerhetsgrupp.

  1. Bläddra till Identitetsgrupper>.

  2. Välj Ny grupp.

  3. Fyll i grupptypen (säkerhet), gruppnamn (till exempel AzureGroup1) och medlemskapstyp. Lägg till användaren som du skapade ovan som medlem och klicka på Skapa:

    Create a Microsoft Entra security group

Bevilja behörigheter till säkerhetsgruppen i SharePoint

Microsoft Entra-säkerhetsgrupper identifieras med attributet Id, som är ett GUID (till exempel E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Utan en anpassad anspråksprovider måste användarna ange det exakta värdet (Id) för gruppen i personväljaren och välja motsvarande anspråkstyp. Detta är inte användarvänligt eller tillförlitligt.
För att undvika detta använder den här artikeln tredjepartsanspråkleverantören EntraCP för att hitta gruppen på ett användarvänligt sätt i SharePoint:

People picker search Microsoft Entra group

Hantera gästanvändares åtkomst

Det finns två typer av gästkonton:

  • B2B-gästkonton: Dessa användare finns i en extern Microsoft Entra-klientorganisation
  • MSA-gästkonton: Dessa användare finns i en Microsoft-identifierarprovider (Hotmail, Outlook) eller en social kontoleverantör (Google eller liknande)

Som standard anger Microsoft Entra ID både "Unik användaridentifierare" och anspråket "name" till attributet user.userprincipalname.
Det här attributet är tyvärr tvetydigt för gästkonton, som tabellen nedan visar:

Källattribut som angetts i Microsoft Entra-ID Faktisk egenskap som används av Microsoft Entra ID för B2B-gäster Faktisk egenskap som används av Microsoft Entra-ID för MSA-gäster Egenskap som SharePoint kan lita på för att verifiera identiteten
user.userprincipalname mail, till exempel: guest@PARTNERTENANT userprincipalname, till exempel: guest_outlook.com#EXT#@TENANT.onmicrosoft.com ambiguous
user.localuserprincipalname userprincipalname, till exempel: guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com userprincipalname, till exempel: guest_outlook.com#EXT#@TENANT.onmicrosoft.com userprincipalname

Sammanfattningsvis bör identifieraranspråken för företagsprogrammet uppdateras för att säkerställa att alla gästkonton identifieras med samma attribut och använda attributet user.localuserprincipalname i stället för user.userprincipalname.

Uppdatera programmet så att det använder ett konsekvent attribut för alla gästanvändare

  1. I Översikt över Enterprise-programmet SharePoint corporate farmväljer du 2. Konfigurera enkel inloggning.

  2. På sidan Konfigurera enkel inloggning med SAML väljer du ikonen Redigera i fönstret Användarattribut och anspråk .

  3. I avsnittet Användarattribut och anspråk följer du dessa steg:

    1. Välj Unik användaridentifierare (namn-ID), ändra egenskapen Källattribut till user.localuserprincipalname och klicka på Spara.

    2. Välj http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, ändra egenskapen Källattribut till user.localuserprincipalname och klicka på Spara.

    3. Användarattributen och anspråken bör se ut så här:

    User Attributes & Claims for Guests

Bjud in gästanvändare i SharePoint

Kommentar

Det här avsnittet förutsätter att anspråksprovidern EntraCP används

I avsnittet ovan uppdaterade du företagsprogrammet så att det använder ett konsekvent attribut för alla gästkonton.
Nu måste konfigurationen av EntraCP uppdateras för att återspegla ändringen och använda attributet userprincipalname för gästkonton:

  1. Öppna webbplatsen central administration i SharePoint.
  2. Under Säkerhet väljer du Global EntraCP-konfiguration.
  3. I avsnittet Användaridentifieraregenskap: Ange användaridentifierare för gästanvändare: till UserPrincipalName.
  4. Klicka på Ok

Screenshot of EntraCP guests accounts configuration.

Nu kan du bjuda in alla gästanvändare på SharePoint-webbplatserna.

Konfigurera federationen för flera webbprogram

Konfigurationen fungerar för ett enda webbprogram, men ytterligare konfiguration krävs om du tänker använda samma betrodda identitetsprovider för flera webbprogram. Anta till exempel att du har ett separat webbprogram https://otherwebapp.contoso.local/ och att du nu vill aktivera Microsoft Entra-autentisering på den. För att göra detta konfigurerar du SharePoint för att skicka SAML WReply-parametern och lägger till URL:erna i företagsprogrammet.

Konfigurera SharePoint för att skicka SAML WReply-parametern

  1. Öppna SharePoint 201x Management Shell på SharePoint-servern och kör följande kommandon. Använd samma namn för utfärdaren av betrodda identitetstoken som du använde tidigare.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Lägg till URL:erna i företagsprogrammet

  1. Logga in på administrationscentret för Microsoft Entra som minst molnprogramadministratör.

  2. Bläddra till Identity>Applications>Enterprise-program> Välj det tidigare skapade företagsprogrammet och välj Enkel inloggning.

  3. På sidan Konfigurera enkel inloggning med SAML redigerar du Grundläggande SAML-konfiguration.

  4. I avsnittet Svars-URL (URL för konsumenttjänst för försäkran) lägger du till URL:en (till exempel https://otherwebapp.contoso.local/) för alla ytterligare webbprogram som behöver logga in användare med Microsoft Entra-ID och klickar på Spara.

Specify additional web applications

Konfigurera livslängden för säkerhetstoken

Som standard skapar Microsoft Entra-ID en SAML-token som är giltig i 1 timme, som inte kan anpassas i Azure-portalen eller med hjälp av en princip för villkorsstyrd åtkomst.
Det går dock att skapa en policy för anpassad tokenlivslängd och tilldela den till det företagsprogram som du skapade för SharePoint Server.
Du kan köra skriptet nedan för att uppnå detta:

Install-Module Microsoft.Graph
Connect-MgGraph -Scopes "Policy.ReadWrite.ApplicationConfiguration","Policy.Read.All","Application.ReadWrite.All"

$appDisplayName = "SharePoint corporate farm"
$sp = Get-MgServicePrincipal -Search DisplayName:"$appDisplayName" -ConsistencyLevel eventual

$oldPolicy = Get-MgServicePrincipalTokenLifetimePolicy -ServicePrincipalId $sp.Id
if ($null -ne $oldPolicy) {
	# There can be only 1 TokenLifetimePolicy associated to the service principal (or 0, as by default)
    Remove-MgServicePrincipalAppManagementPolicy -AppManagementPolicyId $oldPolicy.Id -ServicePrincipalId $sp.Id
}

# Get / create a custom token lifetime policy
$policyDisplayName = "WebPolicyScenario"
$policy = Get-MgPolicyTokenLifetimePolicy -Filter "DisplayName eq '$policyDisplayName'"
if ($null -eq $policy) {
	$params = @{
		Definition = @('{"TokenLifetimePolicy":{"Version":1,"AccessTokenLifetime":"4:00:00"}}') 
		DisplayName = $policyDisplayName
		IsOrganizationDefault = $false
	}
	$policy = New-MgPolicyTokenLifetimePolicy -BodyParameter $params
}

# Assign the token lifetime policy to an app
$body = @{
	"@odata.id" = "https://graph.microsoft.com/v1.0/policies/tokenLifetimePolicies/$($policy.Id)"
}
Invoke-GraphRequest -Uri ('https://graph.microsoft.com/v1.0/servicePrincipals/{0}/tokenLifetimePolicies/$ref' -f $sp.Id) -Method POST -Body $body