Esercitazione: Implementare l'autenticazione federata tra Microsoft Entra ID e SharePoint locale

Descrizione dello scenario

In questa esercitazione viene configurata un'autenticazione federata tra Microsoft Entra ID e SharePoint locale. L'obiettivo è consentire agli utenti di accedere all'ID Microsoft Entra e di usare la propria identità per accedere ai siti locali di SharePoint.

Prerequisiti

Per eseguire la configurazione, sono necessarie le risorse seguenti:

  • Un tenant di Microsoft Entra. Se non si ha un account, è possibile crearne uno gratuito.
  • Farm di SharePoint 2013 o versioni successive.

Questo articolo usa i valori seguenti:

  • Nome applicazione aziendale (in Microsoft Entra ID): SharePoint corporate farm
  • Identificatore di attendibilità (in Microsoft Entra ID) /area di autenticazione (in SharePoint): urn:sharepoint:federation
  • loginUrl (a Microsoft Entra ID): https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
  • URL del sito di SharePoint: https://spsites.contoso.local/
  • URL di risposta del sito di SharePoint: https://spsites.contoso.local/_trust/
  • Nome della configurazione trust di SharePoint: MicrosoftEntraTrust
  • UserPrincipalName dell'utente di test di Microsoft Entra: AzureUser1@demo1984.onmicrosoft.com

Configurare un'applicazione aziendale in Microsoft Entra ID

Per configurare la federazione in Microsoft Entra ID, è necessario creare un'applicazione Enterprise dedicata. La configurazione è semplificata usando il modello SharePoint on-premises preconfigurato disponibile nella raccolta di applicazioni.

Creare l'applicazione aziendale

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.
  2. Passare a Applicazioni di identità>Applicazioni>aziendali>Nuova applicazione.
  3. Nella casella di ricerca immettere SharePoint locale. Selezionare SharePoint locale nel riquadro dei risultati.
  4. Specificare un nome per l'applicazione (in questa esercitazione è SharePoint corporate farm) e fare clic su Crea per aggiungere l'applicazione.
  5. Nella nuova applicazione aziendale selezionare Proprietà e controllare il valore per Assegnazione utenti obbligatoria. Per questo scenario, impostarne il valore su No e fare clic su Salva.

Configurare l'applicazione aziendale

In questa sezione viene configurata l'autenticazione SAML e vengono definite le attestazioni che verranno inviate a SharePoint al termine dell'autenticazione.

  1. Nella panoramica dell'applicazione SharePoint corporate farmaziendale selezionare 2. Configurare l'accesso Single Sign-On e scegliere SAML nella finestra di dialogo successiva.

  2. Nella pagina Configura Accesso Single Sign-On con SAML selezionare l'icona Modifica nel riquadro Configurazione SAML di base.

  3. Nella sezione Configurazione SAML di base seguire questa procedura:

    1. Nella casella Identificatore verificare che questo valore sia presente: urn:sharepoint:federation.

    2. Nella casella URL di risposta immettere un URL nel formato seguente: https://spsites.contoso.local/_trust/.

    3. Nella casella URL di accesso immettere un URL nel formato seguente: https://spsites.contoso.local/.

    4. Seleziona Salva.

  4. Nella sezione Attributi utente e attestazioni eliminare i tipi di attestazione seguenti, inutili perché non verranno usati da SharePoint per concedere le autorizzazioni:

    • 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. Le impostazioni dovrebbero ora avere un aspetto simile al seguente:

    Basic SAML settings

  6. Copiare le informazioni necessarie più avanti in SharePoint:

    • Nella sezione Certificato di firma SAML scaricare il certificato (Base64). Si tratta della chiave pubblica del certificato di firma usato da Microsoft Entra ID per firmare il token SAML. SharePoint dovrà verificare l'integrità dei token SAML in ingresso.

    • Nella sezione Configura farm aziendale di SharePoint copiare l'URL di accesso in un Blocco note e sostituire la stringa finale /saml2 con /wsfed.

    Importante

    Assicurarsi di sostituire /saml2 con /wsfed per assicurarsi che Microsoft Entra ID rilascia un token SAML 1.1, come richiesto da SharePoint.

    • Nella sezione Configura farm aziendale di SharePoint copiare l'URL di disconnessione

Configurare SharePoint in modo che consideri attendibile Microsoft Entra ID

Creare l'attendibilità in SharePoint

In questo passaggio viene creato un SPTrustedLoginProvider per archiviare la configurazione che SharePoint deve considerare attendibile l'ID Microsoft Entra. A tale scopo, sono necessarie le informazioni dell'ID Microsoft Entra copiato in precedenza. Avviare SharePoint Management Shell ed eseguire lo script seguente per crearlo:

# 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

Configurare l'applicazione Web di SharePoint

In questo passaggio si configura un'applicazione Web in SharePoint in modo che consideri attendibile l'applicazione Microsoft Entra Enterprise creata in precedenza. Esistono regole importanti da tenere presenti:

  • L'area predefinita dell'applicazione Web SharePoint deve avere autenticazione di Windows abilitata. Questa operazione è necessaria per il crawler di ricerca.
  • L'URL di SharePoint che userà l'autenticazione Di Microsoft Entra deve essere impostato con HTTPS.
  1. Creare o estendere l'applicazione Web. Questo articolo descrive due possibili configurazioni:

    • Se si crea una nuova applicazione Web che usa sia l'autenticazione Windows che Microsoft Entra nell'area Predefinita:

      1. Avviare SharePoint Management Shell ed eseguire lo script seguente:

        # 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. Aprire il sito Amministrazione centrale SharePoint.

      3. In Impostazioni di sistema selezionare Configura mapping di accesso alternativo. Verrà visualizzata la casella Raccolta mapping di accesso alternativo.

      4. Filtrare la visualizzazione con la nuova applicazione Web e verificare che venga visualizzato un risultato simile al seguente:

        Alternate Access Mappings of web application

    • Se si estende un'applicazione Web esistente per usare l'autenticazione di Microsoft Entra in una nuova zona:

      1. Avviare SharePoint Management Shell ed eseguire lo script seguente:

        # 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. Aprire il sito Amministrazione centrale SharePoint.

      3. In Impostazioni di sistema selezionare Configura mapping di accesso alternativo. Verrà visualizzata la casella Raccolta mapping di accesso alternativo.

      4. Filtrare la visualizzazione con l'applicazione Web estesa e verificare che venga visualizzato un risultato simile al seguente:

        Alternate Access Mappings of extended web application

Dopo aver creato l'applicazione Web, è possibile creare una raccolta siti radice e aggiungere l'account di Windows come amministratore della raccolta siti primario.

  1. Creare un certificato per il sito di SharePoint

    Poiché l'URL di SharePoint usa il protocollo HTTPS (https://spsites.contoso.local/), è necessario impostare un certificato nel sito Internet Information Services (IIS) corrispondente. Seguire questi passaggi per generare un certificato autofirmato:

    Importante

    I certificati autofirmati sono adatti per scopi di test. Negli ambienti di produzione è consigliabile usare invece i certificati emessi da un'autorità di certificazione.

    1. Aprire la console di Windows PowerShell.

    2. Eseguire lo script seguente per generare un certificato autofirmato e aggiungerlo all'archivio MY del computer:

      New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
      
  2. Impostare il certificato nel sito IIS

    1. Aprire la console di Gestione Internet Information Services.
    2. Espandere il server nella visualizzazione albero, espandere Siti, selezionare il sito SharePoint - Microsoft Entra ID e selezionare Associazioni.
    3. Selezionare https binding e quindi modifica.
    4. Nel campo Certificato TLS/SSL scegliere il certificato da usare (ad esempio spsites.contoso.local creato in precedenza) e selezionare OK.

    Nota

    Se si dispone di più server Front End Web, è necessario ripetere questa operazione in ogni server.

La configurazione di base dell'attendibilità tra SharePoint e Microsoft Entra ID è stata completata. Vediamo come accedere al sito di SharePoint come utente di Microsoft Entra.

Accedere come utente membro

Microsoft Entra ID ha due tipi di utenti: utenti guest e utenti membri. Si inizierà con un utente membro, che è semplicemente un utente incluso nell'organizzazione.

Creare un utente membro in Microsoft Entra ID

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un utente Amministrazione istrator.
  2. Passare a Utenti>identità>Tutti gli utenti.
  3. Selezionare Nuovo utente Crea nuovo utente> nella parte superiore della schermata.
  4. Nelle proprietà Utente seguire questa procedura:
    1. Nel campo Nome visualizzato immettere B.Simon.
    2. Nel campo Nome entità utente immettere .username@companydomain.extension Ad esempio: B.Simon@contoso.com.
    3. Selezionare la casella di controllo Mostra password e quindi prendere nota del valore visualizzato nella casella Password.
    4. Selezionare Rivedi e crea.
  5. Seleziona Crea.
  6. È possibile condividere il sito con questo utente e consentire l'accesso.

Concedere le autorizzazioni all'utente di Microsoft Entra in SharePoint

Accedere alla raccolta siti radice di SharePoint come account di Windows (amministratore raccolta siti) e fare clic su Condividi.
Nella finestra di dialogo è necessario digitare il valore esatto del nome utenteprincipalname, ad esempio AzureUser1@demo1984.onmicrosoft.com, e prestare attenzione a selezionare il risultato dell'attestazione del nome (spostare il mouse su un risultato per visualizzarne il tipo di attestazione)

Importante

Prestare attenzione a digitare il valore esatto dell'utente che si desidera invitare e scegliere il tipo di attestazione appropriato nell'elenco. In caso contrario, la condivisione non funzionerà.

Screenshot of people picker results without EntraCP.

Questa limitazione è dovuta al fatto che SharePoint non convalida l'input dalla selezione utenti, che può generare confusione e causare errori di ortografia o utenti che scelgono accidentalmente il tipo di attestazione sbagliato.
Per risolvere questo scenario, è possibile usare una soluzione open source denominata EntraCP per connettere SharePoint 2019 /2016 / 2013 con Microsoft Entra ID e risolvere l'input nel tenant di Microsoft Entra. Per altre informazioni, vedere EntraCP.

Di seguito è riportata la stessa ricerca con EntraCP configurata: SharePoint restituisce gli utenti effettivi in base all'input:

Screenshot of people picker results with EntraCP.

Importante

EntraCP non è un prodotto Microsoft e non è supportato da supporto tecnico Microsoft. Per scaricare, installare e configurare EntraCP nella farm di SharePoint locale, vedere il sito Web EntraCP .

L'utente AzureUser1@demo1984.onmicrosoft.com Di Microsoft Entra può ora usare la propria identità per accedere al sito https://spsites.contoso.local/di SharePoint.

Concedere le autorizzazioni a un gruppo di sicurezza

Aggiungere il tipo di attestazione di gruppo all'applicazione aziendale

  1. Nella panoramica dell'applicazione SharePoint corporate farmaziendale selezionare 2. Configurare l'accesso Single Sign-On.

  2. Nella sezione Attributi utente e attestazioni seguire questa procedura se non è presente alcuna attestazione di gruppo:

    1. Selezionare Aggiungi un'attestazione di gruppo, selezionare Gruppi di sicurezza, assicurarsi che l'attributo di origine sia impostato su ID gruppo
    2. Selezionare Personalizza il nome dell'attestazione di gruppo, quindi selezionare Emit groups as role claims (Genera gruppi come attestazioni ruolo) e fare clic su Save ( Salva).
    3. Gli attributi utente e le attestazioni dovrebbero essere simili al seguente:

    Claims for users and group

Creare un gruppo di sicurezza in Microsoft Entra ID

Verrà ora creato un gruppo di sicurezza.

  1. Passare a Gruppi di identità>.

  2. Selezionare Nuovo gruppo.

  3. Immettere il tipo di gruppo (sicurezza), il nome del gruppo (ad esempio, AzureGroup1) e il tipo di appartenenza. Aggiungere l'utente creato in precedenza come membro e fare clic su Crea:

    Create a Microsoft Entra security group

Concedere le autorizzazioni al gruppo di sicurezza in SharePoint

I gruppi di sicurezza Microsoft Entra vengono identificati con il relativo attributo Id, che è un GUID (ad esempio, E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Senza un provider di attestazioni personalizzato, gli utenti devono digitare il valore esatto (Id) del gruppo nella selezione persone e selezionare il tipo di attestazione corrispondente. Questo non è intuitivo né affidabile.
Per evitare questo problema, questo articolo usa entraCP del provider di attestazioni di terze parti per trovare il gruppo in modo descrittivo in SharePoint:

People picker search Microsoft Entra group

Gestire l'accesso degli utenti guest

Esistono due tipi di account guest:

  • Account guest B2B: questi utenti vengono inseriti in un tenant Microsoft Entra esterno
  • Account guest del servizio gestito: gli utenti vengono inseriti in un provider di identificazione Microsoft (Hotmail, Outlook) o in un provider di account di social networking (Google o simile)

Per impostazione predefinita, Microsoft Entra ID imposta sia "Identificatore utente univoco" che l'attestazione "name" sull'attributo user.userprincipalname.
Sfortunatamente, questo attributo è ambiguo per gli account guest, come illustrato nella tabella seguente:

Attributo di origine impostato in Microsoft Entra ID Proprietà effettiva utilizzata dall'ID Microsoft Entra per gli utenti guest B2B Proprietà effettiva utilizzata dall'ID Microsoft Entra per gli utenti guest del servizio gestito Proprietà su cui SharePoint può basarsi per convalidare l'identità
user.userprincipalname mailPer esempio: guest@PARTNERTENANT userprincipalnamePer esempio: guest_outlook.com#EXT#@TENANT.onmicrosoft.com ambiguous
user.localuserprincipalname userprincipalnamePer esempio: guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com userprincipalnamePer esempio: guest_outlook.com#EXT#@TENANT.onmicrosoft.com userprincipalname

Per concludere, per assicurarsi che tutti gli account guest siano identificati con lo stesso attributo, le attestazioni di identificatore dell'applicazione aziendale devono essere aggiornate per usare l'attributo user.localuserprincipalname anziché user.userprincipalname.

Aggiornare l'applicazione per usare un attributo coerente per tutti gli utenti guest

  1. Nella panoramica dell'applicazione SharePoint corporate farmaziendale selezionare 2. Configurare l'accesso Single Sign-On.

  2. Nella pagina Configura Accesso Single Sign-On con SAML selezionare l'icona Modifica nel riquadro Attributi utente e attestazioni .

  3. Nella sezione Attributi utente e attestazioni seguire questa procedura:

    1. Selezionare Identificatore utente univoco (ID nome), modificare la proprietà Attributo di origine in user.localuserprincipalname e fare clic su Salva.

    2. Selezionare http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, modificare la proprietà Attributo di origine in user.localuserprincipalname e fare clic su Salva.

    3. Gli attributi utente e le attestazioni dovrebbero essere simili al seguente:

    User Attributes & Claims for Guests

Invitare utenti guest in SharePoint

Nota

In questa sezione si presuppone che venga usato entraCP provider di attestazioni

Nella sezione precedente è stata aggiornata l'applicazione aziendale per usare un attributo coerente per tutti gli account guest.
Ora, la configurazione di EntraCP deve essere aggiornata per riflettere tale modifica e usare l'attributo userprincipalname per gli account guest:

  1. Aprire il sito Amministrazione centrale SharePoint.
  2. In Sicurezza selezionare EntraCP global configuration (Configurazione globale EntraCP).
  3. Nella sezione Proprietà identificatore utente: Impostare l'identificatore utente per gli utenti 'Guest': su UserPrincipalName.
  4. Fare clic su OK.

Screenshot of EntraCP guests accounts configuration.

È ora possibile invitare qualsiasi utente guest nei siti di SharePoint.

Configurare la federazione per più applicazioni Web

La configurazione funziona per una singola applicazione Web, ma deve essere modificata ulteriormente se si prevede di usare lo stesso provider di identità attendibili per più applicazioni Web. Si supponga, ad esempio, di avere un'applicazione https://otherwebapp.contoso.local/ Web separata e di abilitare l'autenticazione Microsoft Entra. A tale scopo, configurare SharePoint per passare il parametro SAML WReply e aggiungere gli URL nell'applicazione aziendale.

Configurare SharePoint per passare il parametro SAML WReply

  1. Nel server SharePoint aprire la shell di gestione di SharePoint 201x ed eseguire i comandi seguenti. Usare lo stesso nome per l'autorità emittente del token di identità attendibile usata in precedenza.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Aggiungere gli URL nell'applicazione aziendale

  1. Accedere all'interfaccia di amministrazione di Microsoft Entra come almeno un'applicazione cloud Amministrazione istrator.

  2. Passare ad Applicazioni aziendali di>> identità>Selezionare l'applicazione aziendale creata in precedenza e selezionare Single Sign-On.

  3. Nella pagina Configura l'accesso Single Sign-On con SAML modificare la sezione Configurazione SAML di base.

  4. Nella sezione URL di risposta (URL del servizio consumer di asserzione) aggiungere l'URL (ad esempio , https://otherwebapp.contoso.local/) di tutte le applicazioni Web aggiuntive che devono accedere agli utenti con MICROSOFT Entra ID e fare clic su Salva.

Specify additional web applications

Configurare la durata del token di sicurezza

Per impostazione predefinita, Microsoft Entra ID crea un token SAML valido per 1 ora, che non può essere personalizzato nel portale di Azure o usando un criterio di accesso condizionale.
Tuttavia, è possibile creare un criterio di durata del token personalizzato e assegnarlo all'applicazione aziendale creata per SharePoint Server.
Per ottenere questo risultato, è possibile eseguire lo script seguente:

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