Configurar um provedor SAML 2.0 com o AD FS

Os Serviços de Federação do Active Directory (AD FS) são um dos provedores de identidade do SAML 2.0 que você pode usar para autenticar visitantes no site do Power Pages. Você pode usar qualquer provedor compatível com a especificação SAML 2.0.

Este artigo descreve as seguintes etapas:

Importante

As etapas para a configuração do AD FS podem variar de acordo com a versão do servidor AD FS.

Configurar o AD FS no Power Pages

Definir o AD FS como um provedor de identidade para o site.

  1. Em seu site do Power Pages, selecione Segurança>Provedores de identidade.

    Se nenhum provedor de identidade aparecer, certifique-se de que Login externo está definido como Ativado no site configurações gerais de autenticação.

  2. Selecione + Novo provedor.

  3. Em Selecionar provedor de login, selecione Outros.

  4. Em Protocolo, selecione SAML 2.0.

  5. Insira um nome para o provedor.

    O nome do provedor é o texto no botão que os usuários veem quando selecionam seu provedor de identidade na página de entrada.

  6. Selecione Avançar.

  7. Em URL de Resposta, selecione Copiar.

    Não feche a guia do navegador do Power Pages. Você vai voltar a ela em breve.

Criar confiança em terceira parte confiável AD FS

Você também pode usar um script do PowerShell para executar estas etapas.

  1. No Gerenciador de Servidores, selecione Ferramentas e Gerenciamento do AD FS.

  2. Expandir Serviço.

  3. No painel do lado direito, selecione Adicionar Descrição da Declaração.

  4. Insira os seguintes valores:

    • Nome de exibição: Identificador Persistente

    • Identificador da declaração: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Selecione ambas Publicar esta descrição de declaração nos metadados da federação… opções.

  5. Selecione OK.

  6. Selecione Relações de Confiança>Confianças de Terceira Parte Confiável.

  7. Selecione Adicionar Confiança de Terceira Parte Confiável.

  8. Selecione Iniciar.

  9. Selecione Inserir dados sobre a terceira parte confiável manualmente e Avançar.

  10. Insira um nome; por exemplo, https://portal.contoso.com/.

  11. Selecione Avançar.

  12. Selecione Perfil do AD FS 2.0 e Avançar.

  13. Na página Configurar Certificado, selecione Avançar.

  14. Selecione Habilitar suporte para o protocolo SAML 2.0 WebSSO.

  15. Em URL de serviço do SAML SSO 2.0 da terceira parte confiável, informe a URL de resposta que você copiou. O AD FS exige que o site execute HTTPS, e não HTTP.

  16. Selecione Avançar.

  17. Na página Configurar Identificadores, insira a URL do site e selecione Adicionar.

    Você pode adicionar mais identidades para cada site de terceira parte confiável adicional, se necessário. Os usuários podem se autenticar usando qualquer uma das identidades disponíveis.

  18. Selecione Avançar.

  19. Na página Configurar Autenticação Multifator Agora?, selecione Não desejo definir configurações de autenticação multifator para esta terceira parte confiável desta vez.

  20. Na página Escolher Regras de Autorização de Emissão, selecione Permitir que todos os usuários acessem esta terceira parte confiável e selecione Avançar.

  21. Revise as configurações de confiança e selecione Avançar.

  22. Selecione Fechar.

  23. Em Editar Regras de Declaração, selecione uma das seguintes guias, dependendo da confiança que você está editando e em qual conjunto de regras você deseja criar a regra:

    • Regras da Transformação de Aceitação
    • Regras da Transformação de Emissão
    • Regras da Autorização de Emissão
    • Regras da Autorização de Delegação
  24. Selecione Adicionar Regra.

  25. Na lista do Modelo da regra de declaração, selecione Transformar uma Declaração de Entrada e selecione Avançar.

  26. Insira ou selecione os valores a seguir:

    • Nome da regra de declaração: transforme o nome da conta do Windows em ID do Nome

    • Tipo de declaração de entrada: Nome da conta do Windows

    • Tipo de declaração de saída: ID de Nome

    • Formato de ID de nome de saída: Identificador Persistente

  27. Selecione Passagem de todos os valores da declaração.

  28. Selecione Concluir e OK.

Concluir configuração do provedor

Depois da configuração da terceira parte confiável AD FS:

  1. Criar um registro de aplicativo no Azure.

  2. Inserir as configurações do site no Power Pages.

Entrada iniciada pelo provedor de identidade

O AD FS é compatível com o logon único (SSO) iniciado pelo provedor de identidade da especificação SAML 2.0. Para que o site do provedor de serviços responda adequadamente à solicitação SAML do provedor de identidade, você deve codificar o parâmetro RelayState.

O valor da cadeia de caracteres básica a ser codificado no parâmetro RelayState deve estar no formato ReturnUrl=/content/sub-content/, onde /content/sub-content/ é o caminho para a página Web para onde você deseja navegar no site (provedor de serviços). Você pode especificar o caminho para qualquer página válida no site. O valor da cadeia de caracteres é codificado e inserido em uma cadeia de caracteres do contêiner do formato RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Esta cadeia de caracteres inteira é novamente codificada e adicionada a um outro contêiner do formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Por exemplo, dado o caminho do provedor de serviços /content/sub-content/ e a ID da terceira parte confiável https://portal.contoso.com/, siga estas etapas para criar o URL:

  • Codifique o valor ReturnUrl=/content/sub-content/ para obter ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Codifique o valor https://portal.contoso.com/ para obter https%3A%2F%2Fportal.contoso.com%2F

  • Codifique o valor RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F para obter RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Coloque o caminho do SSO iniciado pelo provedor de identidade do AD FS para obter a URL final https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

Você pode usar o seguinte script do PowerShell para criar a URL. Salve o script em um arquivo denominado Get-IdPInitiatedUrl.ps1.


<#
.SYNOPSIS 
Constructs an IdP-initiated SSO URL to access a website page on the service provider.
.PARAMETER path
The path to the website page.
.PARAMETER rpid
The relying party identifier.
.PARAMETER adfsPath
The AD FS IdP initiated SSO page.
.EXAMPLE
PS C:\\> .\\Get-IdPInitiatedUrl.ps1 -path "/content/sub-content/" -rpid "https://portal.contoso.com/" -adfsPath "https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx"
#>
param
(
[parameter(mandatory=$true,position=0)]
$path,
[parameter(mandatory=$true,position=1)]
$rpid,
[parameter(position=2)]
$adfsPath = https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx
)
$state = ReturnUrl=$path
$encodedPath = [uri]::EscapeDataString($state)
$encodedRpid = [uri]::EscapeDataString($rpid)
$encodedPathRpid = [uri]::EscapeDataString("RPID=$encodedRpid&RelayState=$encodedPath")
$idpInitiatedUrl = {0}?RelayState={1} -f $adfsPath, $encodedPathRpid
Write-Output $idpInitiatedUrl

Configurar o AD FS usando o PowerShell

Em vez de adicionar uma terceira parte confiável no AD FS manualmente, você pode executar o script do PowerShell a seguir no servidor AD FS. Salve o script em um arquivo denominado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Após a execução do script, continue para definir as configurações do site no Power Pages.

<# 
.SYNOPSIS
Adds a SAML 2.0 relying party trust entry for a website.
.PARAMETER domain
The domain name of the website.
.EXAMPLE
PS C:\\> .\\Add-AdxPortalRelyingPartyTrustForSaml.ps1 -domain portal.contoso.com
#>
param
(
[parameter(Mandatory=$true,Position=0)]
$domain,
[parameter(Position=1)]
$callbackPath = /signin-saml2
)
$VerbosePreference = Continue
$ErrorActionPreference = Stop
Import-Module adfs
Function Add-CrmRelyingPartyTrust
{
param (
[parameter(Mandatory=$true,Position=0)]
$name
)
$identifier = https://{0}/ -f $name
$samlEndpoint = New-ADFSSamlEndpoint -Binding POST -Protocol SAMLAssertionConsumer -Uri (https://{0}{1} -f $name, $callbackPath)
$identityProviderValue = Get-ADFSProperties | % { $_.Identifier.AbsoluteUri }
$issuanceTransformRules = @'
@RuleTemplate = MapClaims
@RuleName = Transform [!INCLUDE[pn-ms-windows-short](../../../includes/pn-ms-windows-short.md)] Account Name to Name ID claim
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]
=> issue(Type = "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["https://schemas.xmlsoap.org/ws/2005/05/identity/claimproperties/format"] = "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent");
@RuleTemplate = LdapClaims
@RuleName = Send LDAP Claims
c:[Type == "https://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]
=> issue(store = "[!INCLUDE[pn-active-directory](../../../includes/pn-active-directory.md)]", types = ("https://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "https://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";givenName,sn,mail;{{0}}", param = c.Value);
'@ -f $identityProviderValue
$issuanceAuthorizationRules = @'
@RuleTemplate = AllowAllAuthzRule
=> issue(Type = https://schemas.microsoft.com/authorization/claims/permit, Value = true);
'@
Add-ADFSRelyingPartyTrust -Name $name -Identifier $identifier -SamlEndpoint $samlEndpoint -IssuanceTransformRules $issuanceTransformRules -IssuanceAuthorizationRules $issuanceAuthorizationRules
}
# add the 'Identity Provider' claim description if it is missing
[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]
if (-not (Get-ADFSClaimDescription | ? { $_.Name -eq Persistent Identifier })) {
Add-ADFSClaimDescription -name "Persistent Identifier" -ClaimType "urn:oasis:names:tc:SAML:2.0:nameid-format:persistent" -IsOffered:$true -IsAccepted:$true
}
# add the website relying party trust
[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]
Add-CrmRelyingPartyTrust $domain

Confira também

Configurar provedor SAML 2.0
Configurar um provedor SAML 2.0 com o Microsoft Entra ID
Perguntas frequentes sobre SAML 2.0