Partilhar via


Configurar um fornecedor SAML 2.0 para portais com o FS AD

Nota

A partir de 12 de outubro de 2022, os portais do Power Apps passam a ser Power Pages. Mais informações: O Microsoft Power Pages está agora em disponibilidade geral (blogue)
Em breve, vamos migrar e unir a documentação dos portais do Power Apps com a documentação do Power Pages.

Importante

Os passos para a configuração do Serviços de Federação do Active Directory (AD FS) podem variar dependendo da versão do seu servidor AD FS.

Criar uma confiança de entidade confiadora do AD FS

Nota

Consulte Configurar o AD FS utilizando o PowerShell para obter informações sobre como efetuar estes passos num script do PowerShell.

  1. Utilizar a ferramenta de Gestão de AD FS, aceda a Serviço > Descrições de Afirmações.

    1. Selecione Adicionar Descrição de Afirmação.

    2. Especifique a afirmação:

      • Nome a apresentar: Identificador Persistente

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

      • Caixa de seleção Ativar para: publicar esta descrição de afirmação em metadados de federação como um tipo de afirmação que este serviço de federação pode aceitar

      • Caixa de seleção Ativar para: publicar esta descrição de afirmação em metadados de federação como um tipo de afirmação que este serviço de federação pode enviar

    3. Selecione OK.

  2. Com a ferramenta Gestão de AD FS, selecione Relações de Fidedignidade >Fidedignidades da Entidade Confiadora.

    1. Selecione Adicionar Fidedignidade de Entidade Confiadora.

    2. Bem-vindo: selecione Iniciar.

    3. Selecionar Origem de Dados: selecione Introduzir manualmente os dados sobre a entidade confiadora e, em seguida, selecione Seguinte.

    4. Especificar o Nome a Apresentar: introduza um nome e, em seguida, selecione Seguinte. Exemplo: https://portal.contoso.com/

    5. Escolher Perfil: selecione Perfil AD FS 2.0 e, em seguida, selecione Seguinte.

    6. Configurar Certificado: selecione Seguinte.

    7. Configurar URL: Selecione a caixa de verificação Ativar o suporte para o protocolo SAML 2.0 WebSSO. URL da entidade confiadora de serviço SAML 2.0 SSO: digite https://portal.contoso.com/signin-saml2
      Note que o AD FS requer que o portal seja executado em HTTPS.

      Nota

      O ponto final resultante tem as seguintes definições:

    8. Configurar Identidades: Insira https://portal.contoso.com/, selecione Adicionar e, em seguida, selecione, Seguinte. Se aplicável, poderá adicionar mais identidades para cada portal de entidade confiadora adicional. Os utilizadores podem autenticar em quaisquer ou todas as identidades disponíveis.

    9. Escolher Regras de Autorização da Emissão: selecione Permitir o acesso de todos os utilizadores a esta entidade confiadora e, sem seguida, selecione Seguinte.

    10. Pronto para Adicionar Fidedignidade: selecione Seguinte.

    11. Selecione Fechar.

  3. Adicione a afirmação ID de Nome à confiança da entidade confiadora:

    Transformar Nome de conta do Windows numa afirmação ID de Nome (Transformar uma Afirmação de Entrada):

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

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

    • Formato de ID do nome a enviar: Identificador Persistente

    • Passagem de todos os valores de afirmação

Configurar o fornecedor SAML 2.0

Depois de configurar a confiança da entidade fiável do AD FS, pode seguir os passos em Configurar um fornecedor SAML 2.0 para portais.

Início de sessão iniciado pelo–fornecedor de identidade

O AD FS suporta o perfil início de sessão único (SSO)–iniciado pelo fornecedor de identidade da especificação SAML 2.0. Para o portal (fornecedor de serviços) responder corretamente ao pedido de SAML iniciado pelo fornecedor de identidade, o parâmetro RelayState tem de ser codificado corretamente.

O valor da cadeia básica a codificar no parâmetro de RelayState de SAML tem de estar no formato ReturnUrl=/content/sub-content/, onde /content/sub-content/ é o caminho para a página Web para onde pretende ir no portal (fornecedor de serviço). O caminho pode ser substituído por qualquer página Web válida no portal. O valor de cadeia é codificado e colocado numa cadeia de contentor do formato RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Esta cadeia completa é mais uma vez codificada e adicionada a outro contentor do formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Por exemplo, com o caminho do fornecedor de serviço /content/sub-content/ e a ID da entidade confiadora https://portal.contoso.com/, é construído o URL com os seguintes passos:

  • 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

  • Preceder o caminho de SSO iniciado–pelo fornecedor de identidade de AD FS para obter 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

Pode utilizar o seguinte script do PowerShell para criar o URL. Guarde o script para um ficheiro chamado 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 através da utilização do PowerShell

O processo de adicionar uma entidade confiadora no AD FS também pode ser realizado executando o seguinte script do PowerShell no servidor AD FS. Guarde o script para um ficheiro chamado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Depois de executar o script, continue a configurar as definiçõ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 fornecedor SAML 2.0

Depois de configurar a confiança da entidade confiadora do AD FS, pode seguir os passos em Configurar um fornecedor SAML 2.0 para portais.

Consulte também

Configurar um fornecedor SAML 2.0 para portais com o Azure AD
FAQ para utilização de SAML 2.0 em portais
Configurar um fornecedor SAML 2.0 para portais

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).