Tutorial: Implementar autenticação federada entre o Microsoft Entra ID e o SharePoint local
Descrição do cenário
Neste tutorial, você configura uma autenticação federada entre o Microsoft Entra ID e o SharePoint local. O objetivo é permitir que os usuários entrem na ID do Microsoft Entra e usem sua identidade para acessar os sites locais do SharePoint.
Pré-requisitos
Para executar a configuração, você precisa dos seguintes recursos:
- Um locatário do Microsoft Entra. Se 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 corporativo (no Microsoft Entra ID):
SharePoint corporate farm
- Identificador de confiança (no Microsoft Entra ID) / realm (no SharePoint):
urn:sharepoint:federation
- loginUrl (para 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 confiança do SharePoint:
MicrosoftEntraTrust
- UserPrincipalName do usuário de teste do Microsoft Entra:
AzureUser1@demo1984.onmicrosoft.com
Configurar um aplicativo corporativo no Microsoft Entra ID
Para configurar a federação no Microsoft Entra ID, você precisa criar um aplicativo Enterprise dedicado. Sua configuração é simplificada usando o modelo SharePoint on-premises
pré-configurado que pode ser encontrado na galeria de aplicativos.
Criar o aplicativo corporativo
- Entre no centro de administração do Microsoft Entra como pelo menos um administrador de aplicativos na nuvem.
- Navegue até Identity>Applications>Enterprise applications>Novo aplicativo.
- Na caixa de pesquisa, digite SharePoint local. Selecione SharePoint local no painel de resultados.
- Especifique um nome para seu aplicativo (neste tutorial, é
SharePoint corporate farm
) e clique em Criar para adicionar o aplicativo. - No novo aplicativo empresarial, selecione Propriedades e verifique o valor para Atribuição de usuário necessária?. Para esse cenário, defina seu valor como Não e clique em Salvar.
Configurar o aplicativo corporativo
Nesta seção, você configura a autenticação SAML e define as declarações que serão enviadas ao SharePoint após a autenticação bem-sucedida.
Na Visão geral do aplicativo
SharePoint corporate farm
Enterprise , selecione 2. Configure o logon único e escolha o SAML na próxima caixa de diálogo.Na página Configurar Logon Único com SAML, selecione o ícone Editar no painel Configuração Básica de SAML.
Na seção Configuração básica do SAML, siga estas etapas:
Na caixa Identificador, verifique se esse valor está presente:
urn:sharepoint:federation
.Na caixa URL de resposta, insira uma URL usando este padrão:
https://spsites.contoso.local/_trust/
.Na caixa URL de início de sessão , introduza um URL utilizando este padrão:
https://spsites.contoso.local/
.Selecione Guardar.
Na seção Atributos do Usuário & 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
As configurações agora devem ter esta aparência:
Copie as informações de que você precisará mais tarde no SharePoint:
Na seção Certificado de Assinatura SAML, Baixe o Certificado (Base64). Esta é a chave pública do certificado de assinatura usado pelo Microsoft Entra ID para assinar o token SAML. O SharePoint precisará dele para verificar a integridade dos tokens SAML de entrada.
Na seção Configurar 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
Certifique-se de substituir /saml2 por /wsfed para garantir que o Microsoft Entra ID emita um token SAML 1.1, conforme exigido pelo SharePoint.
- Na seção Configurar farm corporativo do SharePoint, copie a URL de Logout
Configurar o SharePoint para confiar no Microsoft Entra ID
Criar a confiança no SharePoint
Nesta etapa, você cria um SPTrustedLoginProvider para armazenar a configuração que o SharePoint precisa para confiar no Microsoft Entra ID. Para isso, você precisa das informações do Microsoft Entra ID que você copiou acima. Observe que usar o Windows PowerShell pode fazer com que alguns comandos falhem. Inicie o Shell de Gerenciamento do SharePoint e execute o seguinte script para criá-lo:
# 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ê configura um aplicativo Web no SharePoint para confiar no aplicativo Microsoft Entra Enterprise criado acima. Existem regras importantes a ter em mente:
- A zona padrão do aplicativo Web do SharePoint deve ter a autenticação do Windows habilitada. Isso é necessário para o rastreador de pesquisa.
- A URL do SharePoint que usará a autenticação do Microsoft Entra deve ser definida com HTTPS.
Crie ou estenda o aplicativo Web. Este artigo descreve duas configurações possíveis:
Se você criar um novo aplicativo Web que use a autenticação do Windows e do Microsoft Entra na zona Padrão:
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
Abra o site da Administração Central do SharePoint.
Em Configurações do Sistema, selecione Configurar Mapeamentos de Acesso Alternativo. A caixa Coleção de Mapeamentos Alternativos de Acesso é aberta.
Filtre a exibição com o novo aplicativo Web e confirme se você vê algo assim:
Se você estender um aplicativo Web existente para usar a autenticação do Microsoft Entra em uma nova zona:
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
Abra o site da Administração Central do SharePoint.
Em Configurações do Sistema, selecione Configurar Mapeamentos de Acesso Alternativo. A caixa Coleção de Mapeamentos Alternativos de Acesso é aberta.
Filtre a exibição com o aplicativo Web que foi estendido e confirme se você vê algo assim:
Depois que o aplicativo Web for criado, você poderá criar um conjunto de sites raiz e adicionar sua conta do Windows como administrador primário do conjunto de sites.
Criar um certificado para o site do SharePoint
Como a URL do SharePoint usa o protocolo HTTPS (
https://spsites.contoso.local/
), um certificado deve ser definido no site correspondente do IIS (Serviços de Informações da Internet). Siga estas etapas para gerar um certificado autoassinado:Importante
Os certificados autoassinados são adequados apenas para fins de teste. Em ambientes de produção, é altamente recomendável usar certificados emitidos por uma autoridade de certificação.
Abra o console do Windows PowerShell.
Execute o seguinte script para gerar um certificado autoassinado e adicioná-lo ao armazenamento MY do computador:
New-SelfSignedCertificate -DnsName "spsites.contoso.local" -CertStoreLocation "cert:\LocalMachine\My"
Definir o certificado no site do IIS
- Abra o console do Gerenciador dos Serviços de Informações da Internet.
- Expanda o servidor na visualização em árvore, expanda Sites, selecione o site SharePoint - Microsoft Entra ID e selecione Ligações.
- Selecione vinculação https e, em seguida, selecione Editar.
- No campo Certificado TLS/SSL, escolha o certificado a ser usado (por exemplo, spsites.contoso.local criado acima) e selecione OK.
Nota
Se você tiver vários servidores Web Front-End, precisará repetir essa operação em cada um.
A configuração básica da confiança entre o SharePoint e o Microsoft Entra ID está concluída. Vamos ver como entrar no site do SharePoint como um usuário do Microsoft Entra.
Iniciar sessão como utilizador 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 é apenas um usuário hospedado em sua organização.
Criar um usuário membro no Microsoft Entra ID
- Entre no centro de administração do Microsoft Entra como pelo menos um Administrador de Usuário.
- Aceder a Identidade>Utilizadores>Todos os Utilizadores.
- Selecione Novo usuário>Criar novo usuário, na parte superior da tela.
- Nas propriedades do usuário , siga estas etapas:
- No campo Nome para exibição , digite
B.Simon
. - No campo Nome principal do usuário, digite o username@companydomain.extensionarquivo . Por exemplo,
B.Simon@contoso.com
. - Marque a caixa de seleção Mostrar senha e anote o valor exibido na caixa Senha .
- Selecione Rever + criar.
- No campo Nome para exibição , digite
- Selecione Criar.
- Você pode compartilhar o site com este usuário e permitir o acesso a ele.
Conceder permissões ao usuário do Microsoft Entra no SharePoint
Entre no conjunto de sites raiz do SharePoint como sua conta do Windows (administrador do conjunto de sites) e clique em Compartilhar.
Na caixa de diálogo, você precisa digitar o valor exato do userprincipalname, por exemplo AzureUser1@demo1984.onmicrosoft.com
, e ter cuidado para selecionar o resultado da declaração de nome (mova o mouse sobre um resultado para ver seu tipo de declaração)
Importante
Tenha cuidado para digitar o valor exato do usuário que você deseja convidar e escolha o tipo de declaração apropriado na lista, caso contrário, o compartilhamento não funcionará.
Essa limitação ocorre porque o SharePoint não valida a entrada do seletor de pessoas, o que pode ser confuso e levar a erros ortográficos ou usuários escolhendo acidentalmente o tipo de declaração errado.
Para corrigir esse cenário, uma solução de código aberto chamada EntraCP pode ser usada para conectar o SharePoint 2019 / 2016 / 2013 com o Microsoft Entra ID e resolver a entrada contra seu locatário do Microsoft Entra. Para obter mais informações, consulte EntraCP.
Abaixo está a mesma pesquisa com o EntraCP configurado: O SharePoint retorna usuários reais com base na entrada:
Importante
O EntraCP não é um produto da Microsoft e não é suportado pelo Suporte da Microsoft. Para baixar, instalar e configurar o EntraCP no farm do SharePoint local, consulte o site do EntraCP .
O usuário AzureUser1@demo1984.onmicrosoft.com
do Microsoft Entra agora pode usar sua identidade para entrar no site https://spsites.contoso.local/
do SharePoint.
Conceder permissões a um grupo de segurança
Adicionar o tipo de declaração de grupo ao aplicativo empresarial
Na Visão geral do aplicativo
SharePoint corporate farm
Enterprise , selecione 2. Configure o logon único.Na seção Atributos do Usuário & Declarações , siga estas etapas se não houver nenhuma declaração de grupo presente:
- Selecione Adicionar uma declaração de grupo, selecione Grupos de segurança, certifique-se de que o Atributo de Origem está definido como ID de Grupo
- Marque Personalizar o nome da declaração de grupo, marque Emitir grupos como declarações de função e clique em Salvar.
- Os Atributos do Usuário & Declarações devem ter esta aparência:
Criar um grupo de segurança no Microsoft Entra ID
Vamos criar um grupo de segurança.
Navegue até Grupos>de identidade.
Selecione Novo grupo.
Preencha o Tipo de grupo (Segurança), Nome do grupo (por exemplo,
AzureGroup1
) e Tipo de associação. Adicione o usuário que você criou acima como membro e clique em Criar:
Conceder permissões ao grupo de segurança no SharePoint
Os grupos de segurança do Microsoft Entra são identificados com seu atributo Id
, que é um GUID (por exemplo, 00aa00aa-bb11-cc22-dd33-44ee44ee44ee
).
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. Isto não é fácil de utilizar nem fiável.
Para evitar isso, este artigo usa o provedor de declarações de terceiros EntraCP para localizar o grupo de forma amigável no SharePoint:
Gerenciar o acesso de usuários convidados
Existem 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 MSA: esses usuários estão hospedados em um provedor de identificação da Microsoft (Hotmail, Outlook) ou em um provedor de conta social (Google ou similar)
Por padrão, o ID do Microsoft Entra define o "Identificador de Usuário Exclusivo" e a declaração "nome" para o atributo user.userprincipalname
.
Infelizmente, esse atributo é ambíguo para contas de convidados, como mostra a tabela abaixo:
Atributo de origem definido no ID do Microsoft Entra | Propriedade real usada pelo Microsoft Entra ID para hóspedes B2B | Propriedade real usada pelo Microsoft Entra ID para hóspedes do MSA | Propriedade na qual o SharePoint pode confiar para validar a identidade |
---|---|---|---|
user.userprincipalname |
mail Por exemplo: guest@PARTNERTENANT |
userprincipalname Por exemplo: guest_outlook.com#EXT#@TENANT.onmicrosoft.com |
Ambígua |
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 as contas de convidado sejam todas identificadas com o mesmo atributo, as declarações de identificador do aplicativo empresarial devem ser atualizadas para usar o atributo user.localuserprincipalname
em vez de user.userprincipalname
.
Atualize o aplicativo para usar um atributo consistente para todos os usuários convidados
Na Visão geral do aplicativo
SharePoint corporate farm
Enterprise , selecione 2. Configure o logon único.Na página Configurar Logon Único com SAML, selecione o ícone Editar no painel Atributos do Usuário & Declarações.
Na seção Atributos do Usuário & Declarações , siga estas etapas:
Selecione Identificador de Usuário Exclusivo (ID de Nome), altere sua propriedade Source Attribute para user.localuserprincipalname e clique em Salvar.
Selecione
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
, altere sua propriedade Source Attribute para user.localuserprincipalname e clique em Salvar.Os Atributos do Usuário & Declarações devem ter esta aparência:
Convidar usuários convidados no SharePoint
Nota
Esta seção pressupõe que o provedor de reclamações EntraCP é usado
Na seção acima, você atualizou o aplicativo corporativo para usar um atributo consistente para todas as contas de convidado.
Agora, a configuração do EntraCP precisa ser atualizada para refletir essa mudança e usar o atributo userprincipalname
para contas de convidado:
- Abra o site da Administração Central do SharePoint.
- Em Segurança, selecione Configuração global do EntraCP.
- Na seção Propriedade do identificador de usuário: defina o identificador de usuário para usuários 'convidados': como UserPrincipalName.
- Clique em Ok
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 único aplicativo Web, mas uma configuração adicional é necessária se você pretende usar o mesmo provedor de identidade confiável para vários aplicativos Web. Por exemplo, suponha que você tenha um aplicativo https://otherwebapp.contoso.local/
Web separado e agora queira habilitar a autenticação do Microsoft Entra nele. Para fazer isso, configure o SharePoint para passar o parâmetro SAML WReply e adicione as URLs no aplicativo empresarial.
Configurar o SharePoint para passar o parâmetro SAML WReply
- No servidor do SharePoint, abra o Shell de Gerenciamento do SharePoint 201x e execute os seguintes comandos. Use o mesmo nome para o emissor de token de identidade confiável que você usou anteriormente.
$t = Get-SPTrustedIdentityTokenIssuer "MicrosoftEntraTrust"
$t.UseWReplyParameter = $true
$t.Update()
Adicionar os URLs no aplicativo corporativo
Entre no centro de administração do Microsoft Entra como pelo menos um administrador de aplicativos na nuvem.
Navegue até Aplicativos de identidade>>Aplicativos> corporativos Selecione o aplicativo empresarial criado anteriormente e selecione Logon único.
Na página Configurar Logon Único com SAML, edite Configuração Básica de SAML.
Na seção URL de resposta (URL de serviço ao consumidor de asserção), adicione a URL (por exemplo,
https://otherwebapp.contoso.local/
) de todos os aplicativos Web adicionais que precisam entrar em usuários com a ID do Microsoft Entra e clique em Salvar.
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 de tempo de vida de token personalizada e atribuí-la ao aplicativo empresarial 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