Configurar um provedor SAML 2.0 para portais com AD FS

Observação

Desde o dia 12 de outubro de 2022, os portais do Power Apps passaram a ser Power Pages. Mais Informações: O Microsoft Power Pages já está disponível para todos (blog)
Em breve, migraremos e mesclaremos a documentação dos portais do Power Apps com a documentação do Power Pages.

Importante

As etapas para a configuração dos Serviços de Federação do Active Directory (AD FS) podem variar de acordo com a versão do servidor AD FS.

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

Observação

Consulte Configurar o AD FS usando o PowerShell para obter informações sobre como executar estas etapas em um script do PowerShell.

  1. Com a ferramenta Gerenciamento do AD FS, vá para Service > Descrições da Declaração.

    1. Selecione Adicionar Descrição da Declaração.

    2. Especifique a declaração:

      • Nome de exibição: Identificador Persistente

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

      • Caixa de seleção Habilitar para: publicar essa descrição de declaração nos metadados de federação como um tipo de declaração que este serviço de federação pode aceitar

      • Caixa de seleção Habilitar para: publicar essa descrição de declaração nos metadados de federação como um tipo de declaração que este Serviço de Federação pode enviar

    3. Selecione OK.

  2. Usando a ferramenta Gerenciamento do AD FS, selecione Relações de Confiança >Confianças de Terceira Parte Confiável.

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

    2. Bem-vindo: Selecione Início.

    3. Selecionar Fonte de Dados: selecione Inserir dados sobre a terceira parte confiável manualmente, e selecione Avançar.

    4. Especificar Nome de Exibição: insira um nome e selecione Avançar. Exemplo: https://portal.contoso.com/

    5. Escolha o Perfil: Selecione Perfil do AD FS 2.0, e selecione Avançar.

    6. Configurar Certificado: selecione Avançar.

    7. Configurar URL: marque a caixa de seleção Habilitar o suporte ao protocolo de SAML 2.0 WebSSO. URL de serviço do SAML SSO 2.0 da terceira parte confiável: insira https://portal.contoso.com/signin-saml2
      Observe que o AD FS exige que o portal rode HTTPS.

      Observação

      O ponto de extremidade resultante tem a seguinte configuração:

    8. Configurar identidades: insira https://portal.contoso.com/, selecione Adicionar e , depois, Avançar. Se aplicável, você poderá adicionar mais identidades para cada portal de terceiros confiáveis adicional. Os usuários podem autenticar por meio de algumas ou de todas as identidades disponíveis.

    9. Escolha Regras de Autorização de Emissão: selecione Permitir que todos os usuários acessem esta terceira parte confiável e depois selecione Avançar.

    10. Pronto para Adicionar Confiança: selecione Avançar.

    11. Selecione Fechar.

  3. Adicionar a declaração ID de nome aos terceiros confiáveis:

    Transforme o nome da conta do Windows em declaração ID do Nome (Transformar uma Declaração de Entrada):

    • 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

    • Passagem de todos os valores de declaração

Configurar o provedor SAML 2.0

Depois de configurar a terceira parte confiável do AD FS, você pode seguir as etapas em Configurar um provedor SAML 2.0 para portais.

Provedor de identidade – logon iniciado

O AD FS é compatível com o perfil de logon único (SSO) iniciado pelo provedor de identidade da especificação SAML 2.0. Para que o portal (provedor de serviços) responda corretamente à solicitação de SAML iniciada pelo provedor de identidade, o parâmetro RelayState deve ser codificado corretamente.

O valor da cadeia de caracteres básica a ser codificado no parâmetro RelayState de SAML deve estar no formato ReturnUrl=/content/sub-content/, em que /content/sub-content/ é o caminho para a página da Web para onde você deseja navegar no portal (provedor de serviços). O caminho pode ser substituído por qualquer página da Web válida no portal. 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/, construa a URL com as etapas a seguir:

  • 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 portal page on the service provider.

.PARAMETER path

The path to the portal 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

O processo de adição de uma terceira parte confiável no AD FS também pode ser executado por meio do seguinte script do PowerShell no servidor AD FS. Salve o script em um arquivo denominado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Depois da execução do script, continue a definir as configurações do site do portal.

<# 

.SYNOPSIS

Adds a SAML 2.0 relying party trust entry for a website.

.PARAMETER domain

The domain name of the portal.

.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 portal relying party trust


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

Add-CrmRelyingPartyTrust $domain

Configurar um provedor SAML 2.0

Depois de configurar a terceira parte confiável do AD FS, você pode seguir as etapas em Configurar um provedor SAML 2.0 para portais.

Confira também

Configurar um provedor SAML 2.0 para portais com Azure AD
FAQ para usar SAML 2.0 em portais
Configure um provedor SAML 2.0 para portais

Observação

Você pode nos falar mais sobre suas preferências de idioma para documentação? Faça uma pesquisa rápida. (Observe que esta pesquisa está em inglês)

A pesquisa levará cerca de sete minutos. Nenhum dado pessoal é coletado (política de privacidade).