Share via


Tutorial: Implementar a autenticação federada entre Microsoft Entra ID e o SharePoint local

Descrição do cenário

Neste tutorial, você vai configurar uma autenticação federada entre o Microsoft Entra ID e o SharePoint local. A meta é permitir que os usuários se conectem ao Microsoft Entra ID e usem as respectivas identidades para acessar os sites locais do SharePoint.

Pré-requisitos

Para executar a configuração, você precisará dos seguintes recursos:

  • Um locatário do Microsoft Entra. Se você não tiver uma, poderá criar uma conta gratuita.
  • Um farm do SharePoint 2013 ou mais recente.

Este artigo usa os seguintes valores:

  • Nome do aplicativo empresarial (em Microsoft Entra ID):SharePoint corporate farm
  • Identificador de confiança (em Microsoft Entra ID) / realm (no SharePoint):urn:sharepoint:federation
  • loginUrl (to Microsoft Entra ID): https://login.microsoftonline.com/dc38a67a-f981-4e24-ba16-4443ada44484/wsfed
  • URL do site do SharePoint: https://spsites.contoso.local/
  • URL de resposta do site do SharePoint: https://spsites.contoso.local/_trust/
  • Nome da configuração de relação de confiança do SharePoint: MicrosoftEntraTrust
  • UserPrincipalName do usuário de teste do Microsoft Entra:AzureUser1@demo1984.onmicrosoft.com

Configurar um aplicativo empresarial em Microsoft Entra ID

Para configurar a federação no Microsoft Entra ID, você precisará criar um aplicativo empresarial dedicado. A configuração dele foi simplificada usando o modelo pré-configurado SharePoint on-premises que pode ser encontrado na galeria de aplicativos.

Criar o aplicativo empresarial

  1. Entre no Centro de administração do Microsoft Entra como pelo menos Administrador de Aplicativo de nuvem.
  2. Navegue até Identidade>Aplicativos>Aplicativos empresariais>Novo aplicativo.
  3. Na caixa de pesquisa, insira SharePoint local. Selecione SharePoint local no painel de resultados.
  4. Especifique um nome para o seu aplicativo (neste tutorial, ele é SharePoint corporate farm) e clique em Criar para adicionar o aplicativo.
  5. No novo aplicativo empresarial, selecione Propriedades e verifique o valor da opção Requer atribuição de usuário? . Para esse cenário, defina o valor dele como Não e clique em Salvar.

Configurar o aplicativo empresarial

Nesta seção, você vai configurar a autenticação SAML e definir as declarações que serão enviadas ao SharePoint após a autenticação bem-sucedida.

  1. Na Visão geral do aplicativo empresarial SharePoint corporate farm, selecione 2. Configurar o logon único e escolha SAML na próxima caixa de diálogo.

  2. Na página Configurar Logon Único com o SAML, selecione o ícone Editar no painel Configuração Básica do SAML.

  3. Na seção Configuração Básica de SAML, siga estas etapas:

    1. Na caixa Identificador, verifique se esse valor está presente: urn:sharepoint:federation.

    2. Na caixa URL de Resposta, insira uma URL usando este padrão: https://spsites.contoso.local/_trust/.

    3. Na caixa URL de Logon, insira uma URL usando este padrão: https://spsites.contoso.local/.

    4. Selecione Salvar.

  4. Na seção Atributos de Usuário e Declarações, exclua os seguintes tipos de declaração, que são inúteis, pois não serão usados pelo SharePoint para conceder permissões:

    • 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. Agora as configurações devem ter esta aparência:

    Basic SAML settings

  6. Copie as informações necessárias posteriormente no SharePoint:

    • Na seção Certificado de Autenticação SAML, baixe o Certificado (Base64) . Essa é a chave pública do certificado de autenticação usado pelo Microsoft Entra ID para assinar o token SAML. O SharePoint precisará dela para verificar a integridade dos tokens SAML de entrada.

    • Na seção Configurar o farm corporativo do SharePoint, copie a URL de Logon em um bloco de notas e substitua a cadeia de caracteres à direita /saml2 por /wsfed.

    Importante

    Substitua /saml2 por /wsfed para garantir que o Microsoft Entra ID emita um token SAML 1.1, conforme exigido pelo SharePoint.

    • Na seção Configurar o farm corporativo do SharePoint, copie a URL de Logoff

Configurar o SharePoint para confiar Microsoft Entra ID

Criar a relação de confiança no SharePoint

Nesta etapa, você criará um SPTrustedLoginProvider para armazenar a configuração de que o SharePoint precisa para confiar no Microsoft Entra ID. Para isso, você precisará das informações do Microsoft Entra ID copiadas acima. Inicie o Shell de Gerenciamento do SharePoint e execute o seguinte script para criá-la:

# 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

Configurar o aplicativo Web do SharePoint

Nesta etapa, você vai configurar um aplicativo Web no SharePoint para confiar no aplicativo empresarial do Microsoft Entra ID criado acima. Há regras importantes que devem ser consideradas:

  • A zona padrão do aplicativo Web do SharePoint precisa ter a autenticação do Windows habilitada. Ela é necessária para o rastreador de Pesquisa.
  • A URL do SharePoint que usará a autenticação do Microsoft Entra ID precisa ser definida com HTTPS.
  1. Crie ou estenda o aplicativo Web. Este artigo descreve duas configurações possíveis:

    • Se você criar um aplicativo Web que usa a autenticação do Windows e do Microsoft Entra na zona padrão:

      1. Inicie o Shell de Gerenciamento do SharePoint e execute o seguinte script:

        # 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. Abra o site da Administração Central do SharePoint.

      3. Em Configurações do Sistema, selecione Configurar Mapeamentos Alternativos de Acesso. A caixa Coleção de Mapeamentos Alternativos de Acesso será aberta.

      4. Filtre a exibição com o novo aplicativo Web e confirme se você vê algo assim:

        Alternate Access Mappings of web application

    • Se você estender um aplicativo Web existente para usar a autenticação do Microsoft Entra em uma nova zona:

      1. Inicie o Shell de Gerenciamento do SharePoint e execute o seguinte script:

        # 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. Abra o site da Administração Central do SharePoint.

      3. Em Configurações do Sistema, selecione Configurar Mapeamentos Alternativos de Acesso. A caixa Coleção de Mapeamentos Alternativos de Acesso será aberta.

      4. Filtre a exibição com o aplicativo Web que foi estendido e confirme se você vê algo assim:

        Alternate Access Mappings of extended web application

Depois que o aplicativo Web for criado, você poderá criar uma coleção de sites raiz e adicionar sua conta do Windows como o administrador da coleção de sites primários.

  1. Criar um certificado para o site do SharePoint

    Como a URL interna usa o protocolo HTTPS (https://spsites.contoso.local/), um certificado precisa ser definido no site do IIS (Serviços de Informações da Internet). Siga estas etapas para gerar um certificado autoassinado:

    Importante

    Os certificados autoassinados são adequados somente para fins de teste. Em ambientes de produção, recomendamos expressamente usar certificados emitidos por uma autoridade de certificação.

    1. Abra o console do Windows PowerShell.

    2. Execute o seguinte script para gerar um certificado autoassinado e adicioná-lo ao MEU armazenamento do computador:

      New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
      
  2. Definir o certificado no site do IIS

    1. Abra o console do Gerenciador dos Serviços de Informações da Internet.
    2. Expanda o servidor no modo de exibição de árvore, expanda Sites, selecione o site SharePoint – Microsoft Entra ID e selecione Associações.
    3. Selecione Associação HTTPS e Editar.
    4. No campo Certificado TLS/SSL, escolha o certificado a ser usado (por exemplo, o spsites.contoso.local criado acima) e selecione OK.

    Observação

    Se você tiver vários servidores Web front-end, repita essa operação em cada um deles.

A configuração básica da relação de confiança entre o SharePoint e o Microsoft Entra ID agora foi concluída. Vamos ver como entrar no site do SharePoint como um usuário do Microsoft Entra.

Conectar-se como um usuário membro

O Microsoft Entra ID tem dois tipos de usuários: usuários convidados e usuários membros. Vamos começar com um usuário membro, que é simplesmente um usuário que está hospedado na sua organização.

Criar um usuário membro no Microsoft Entra ID

  1. Entre no centro de administração do Microsoft Entra como, no mínimo, Administrador de Usuários.
  2. Navegue até Identidade>Usuários>Todos os usuários.
  3. Na parte superior da tela, selecione Novo usuário>Criar novo usuário.
  4. Nas propriedades do Usuário, siga estas etapas:
    1. No campo Nome de exibição, insira B.Simon.
    2. No campo Nome principal do usuário, insira o username@companydomain.extension. Por exemplo, B.Simon@contoso.com.
    3. Marque a caixa de seleção Mostrar senha e, em seguida, anote o valor exibido na caixa Senha.
    4. Selecione Examinar + criar.
  5. Selecione Criar.
  6. Você pode compartilhar o site com esse usuário e permitir o acesso a ele.

Conceder permissões ao usuário do Microsoft Entra no SharePoint

Entre na coleção de sites raiz do SharePoint com sua conta do Windows (administrador da coleção de sites) e clique em Compartilhar.
Na caixa de diálogo, você precisará digitar o valor exato do nome UPN, por exemplo AzureUser1@demo1984.onmicrosoft.com, e ter cuidado para selecionar o resultado da declaração de nome (mover o mouse em um resultado para ver o tipo de declaração)

Importante

Tenha cuidado para digitar o valor exato do usuário que deseja convidar e escolha o tipo de declaração apropriado na lista, caso contrário, o compartilhamento não funcionará.

Screenshot of people picker results without EntraCP.

Essa limitação ocorre porque o SharePoint não valida a entrada do seletor de pessoas, que pode ser confuso e levar a erros ortográficos ou a escolha acidental do tipo de declaração errado por parte dos usuários.
Para corrigir esse cenário, uma solução de software livre chamada EntraCP pode ser usada para conectar o SharePoint 2019/2016/2013 ao Microsoft Entra ID e resolver a entrada no seu locatário do Microsoft Entra. Para obter mais informações, consulte EntraCP.

Veja abaixo a mesma pesquisa com o EntraCP configurado: o SharePoint retorna os usuários reais com base na entrada:

Screenshot of people picker results with EntraCP.

Importante

A EntraCP não é um produto da Microsoft e não é compatível com o Suporte da Microsoft. Para baixar, instalar e configurar a EntraCP no farm local do SharePoint, confira o site do EntraCP.

O usuário AzureUser1@demo1984.onmicrosoft.com do Microsoft Entra ID agora pode usar a respectiva identidade para entrar no site do SharePoint https://spsites.contoso.local/.

Conceder permissões a um grupo de segurança

Adicionar o tipo de declaração de grupo ao aplicativo empresarial

  1. Na visão geral do aplicativo empresarial SharePoint corporate farm, selecione 2. Configurar o logon único.

  2. Na seção Atributos de Usuário e Declarações, siga estas etapas se não houver nenhuma declaração de grupo presente:

    1. Selecione Adicionar uma declaração de grupo, escolha Grupos de segurança e verifique se o Atributo de Origem está definido como ID de Grupo
    2. Marque Personalizar o nome da declaração de grupo e Emitir grupos como declarações de função e clique em Salvar.
    3. A opção Atributos de Usuário e Declarações terá esta aparência:

    Claims for users and group

Criar um grupo de segurança em Microsoft Entra ID

Vamos criar um grupo de segurança.

  1. Navegue até Identidade>Grupos.

  2. Selecione Novo grupo.

  3. Preencha o Tipo de grupo (segurança), o Nome do grupo (por exemplo, AzureGroup1) e o Tipo de associação. Adicione o usuário criado acima como membro e selecione Criar:

    Create a Microsoft Entra security group

Conceder permissões ao grupo de segurança no SharePoint

Os grupos de segurança do Microsoft Entra são identificados com o respectivo atributo Id, que é um GUID (por exemplo, E89EF0A3-46CC-45BF-93A4-E078FCEBFC45).
Sem um provedor de declarações personalizado, os usuários precisam digitar o valor exato (Id) do grupo no seletor de pessoas e selecionar o tipo de declaração correspondente. Isso não é amigável nem confiável.
Para evitar isso, este artigo usa o provedor de declarações de terceiros EntraCp para encontrar o grupo de maneira amigável no SharePoint:

People picker search Microsoft Entra group

Gerenciar o acesso dos usuários convidados

Há dois tipos de contas de convidado:

  • Contas de convidado B2B: esses usuários estão hospedados em um locatário externo do Microsoft Entra
  • Contas de convidado da MSA: esses usuários estão hospedados em um provedor de identificação da Microsoft (Hotmail, Outlook) ou em um provedor de conta de rede social (Google ou similar)

Por padrão, o Microsoft Entra ID define o "Identificador Exclusivo do Usuário" e o "nome" da declaração como o atributo user.userprincipalname.
Infelizmente, esse atributo é ambíguo para contas de convidado, como mostra a tabela abaixo:

Atributo de origem definido em Microsoft Entra ID Propriedade real usada por Microsoft Entra ID para convidados B2B Propriedade real usada por Microsoft Entra ID para convidados MSA Propriedade da qual o SharePoint pode depender para validar a identidade
user.userprincipalname mail, por exemplo: guest@PARTNERTENANT userprincipalname, por exemplo: guest_outlook.com#EXT#@TENANT.onmicrosoft.com ambiguous
user.localuserprincipalname userprincipalname, por exemplo: guest_PARTNERTENANT#EXT#@TENANT.onmicrosoft.com userprincipalname, por exemplo: guest_outlook.com#EXT#@TENANT.onmicrosoft.com userprincipalname

Como conclusão, para garantir que todas as contas de convidado sejam identificadas com o mesmo atributo, as declarações do identificador do aplicativo empresarial devem ser atualizadas para usar o atributo user.localuserprincipalname em vez de user.userprincipalname.

Atualizar o aplicativo para usar um atributo consistente para todos os usuários convidados

  1. Na visão geral do aplicativo empresarial SharePoint corporate farm, selecione 2. Configurar o logon único.

  2. Na página Configurar Logon Único com o SAML, selecione o ícone Editar no painel Atributos de Usuário e Declarações.

  3. Na seção Atributos de Usuário e Declarações, siga estas etapas:

    1. Selecione Identificador Exclusivo do Usuário (ID do Nome) , altere a propriedade Atributo de Origem para user.localuserprincipalname e clique em Salvar.

    2. Selecione http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name, altere a propriedade Atributo de Origem para user.localuserprincipalname e clique em Salvar.

    3. A opção Atributos de Usuário e Declarações terá esta aparência:

    User Attributes & Claims for Guests

Convidar usuários convidados no SharePoint

Observação

Esta seção pressupõe que o provedor de declarações EntraCP seja usado

Na seção acima, você atualizou o aplicativo empresarial para usar um atributo consistente para todas as contas de convidados.
Agora, a configuração do EntraCP precisa ser atualizada para refletir essa alteração e usar o atributo userprincipalname para as contas de convidados:

  1. Abra o site da Administração Central do SharePoint.
  2. Em Segurança, selecione Configuração global do EntraCP.
  3. Na seção Propriedade do identificador de usuário: defina o Identificador de usuário dos usuários 'Convidados': como UserPrincipalName.
  4. Clique em OK

Screenshot of EntraCP guests accounts configuration.

Agora, você pode convidar qualquer usuário convidado nos sites do SharePoint.

Configurar a federação para vários aplicativos Web

A configuração funciona para um aplicativo Web, mas precisa de ajustes adicionais se você pretende usar o mesmo provedor de identidade confiável para vários aplicativos Web. Por exemplo, suponha que você tenha um aplicativo Web https://otherwebapp.contoso.local/ separado e agora deseja habilitar a autenticação do Microsoft Entra nele. Para fazer isso, configure o SharePoint para transmitir o parâmetro WReply do SAML e adicione as URLs no aplicativo empresarial.

Configurar o SharePoint para transmitir o parâmetro WReply do SAML

  1. No servidor do SharePoint, abra o Shell de Gerenciamento do SharePoint 201x e execute os comandos a seguir. Use o mesmo nome do emissor do token de identidade confiável que você usou anteriormente.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()

Adicionar as URLs no aplicativo empresarial

  1. Entre no Centro de administração do Microsoft Entra como pelo menos Administrador de Aplicativo de nuvem.

  2. Navegue até Identidade>Aplicativos>Aplicativos empresariais> Selecione o aplicativo empresarial criado anteriormente e selecione Logon único.

  3. Na página Configurar o logon único com o SAML, edite a Configuração Básica do SAML.

  4. Na seção URL de Resposta (URL do Serviço do Consumidor de Declaração), adicione a URL (por exemplo, https://otherwebapp.contoso.local/) de todos os aplicativos Web adicionais que precisam conectar usuários ao Microsoft Entra ID e clique em Salvar.

Specify additional web applications

Configurar o tempo de vida do token de segurança

Por padrão, o Microsoft Entra ID cria um token SAML válido por 1 hora, que não pode ser personalizado no portal do Azure ou usando uma política de Acesso Condicional.
No entanto, é possível criar uma política personalizada de tempo de vida de token e atribuí-la ao aplicativo corporativo criado para o SharePoint Server.
Você pode executar o script abaixo para conseguir isso:

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