Partilhar via


Configurar um fornecedor de SAML 2.0 com o AD FS

O Active Directory Federation Services (AD FS) é um dos fornecedores de identidade SAML 2.0 que pode utilizar para autenticar os visitantes no seu site do Power Pages. Pode utilizar qualquer fornecedor que cumpra com as especificações de SAML 2.0.

Este artigo descreve os passos seguintes:

Importante

Os passos para configurar o AD FS podem variar dependendo da versão do seu servidor AD FS.

Configurar o AD FS no Power Pages

Defina o AD FS como um fornecedor de identidade para o seu site.

  1. No site do Power Pages, selecione Configurar>Fornecedores de identidade.

    Se não aparecerem fornecedores de identidade, certifique-se de que o Início de sessão externo está definido como Ligado nas definições de autenticação gerais do site.

  2. Selecione + Novo fornecedor.

  3. Sob Selecionar fornecedor de início de sessão, selecione Outro.

  4. Sob Protocolo, selecione SAML 2.0.

  5. Introduzir um nome para o fornecedor.

    O nome do fornecedor é o texto no botão que os utilizadores vêem quando selecionam o seu fornecedor de identidade na página de início de sessão.

  6. Selecione Seguinte.

  7. Em URL da Resposta, selecione Copiar.

    Não feche o separador do browser do Power Pages. Irá regressar ao mesmo em breve.

Criar uma confiança de entidade confiadora do AD FS

Também pode utilizar um script do PowerShell para efetuar estes passos.

  1. No Gestor de Servidores, selecione Ferramentas e, em seguida, selecione Gestão do AD FS.

  2. Expanda Serviço.

  3. No painel lateral direito, selecione Adicionar Descrição da Afirmação.

  4. Introduza os seguintes valores:

    • Nome a apresentar: Identificador Persistente

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

    • Selecione ambas as opções Publicar esta descrição de afirmação em metadados de federação… .

  5. Selecione OK.

  6. Selecione Relações de Confiança>Confianças da Entidade Confiadora.

  7. Selecione Adicionar Fidedignidade de Entidade Confiadora.

  8. Selecione Iniciar.

  9. Selecione Introduzir manualmente os dados sobre a entidade confiadora e, em seguida, selecione Seguinte.

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

  11. Selecione Seguinte.

  12. Selecione Perfil do AD FS 2.0 e, em seguida, selecione Seguinte.

  13. Na página Configurar Certificado, selecione Seguinte.

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

  15. Em URL do serviço SSO SAML 2.0 da entidade confiador, introduza o URL da resposta que copiou. O AD FS requer que o site seja executado em HTTPS, não em HTTP.

  16. Selecione Seguinte.

  17. Na página Configurar Identificadores, introduza o URL do site e, em seguida, selecione Adicionar.

    Pode adicionar mais identidades para cada site de entidade confiadora, se necessário. Os utilizadores podem autenticar-se utilizando quaisquer identidades disponíveis.

  18. Selecione Seguinte.

  19. Na página Configurar a Autenticação Multifator Agora?, selecione Não quero configurar as definições da autenticação multifator para esta entidade confiador neste momento.

  20. No página 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.

  21. Reveja as definições de confiança e, em seguida, selecione Seguinte.

  22. Selecione Fechar.

  23. Em Editar Regras de Afirmação, selecione um dos seguintes separadores, dependendo da confiança em que está a editar e do conjunto de regras que pretende criar:

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

  25. Na lista Modelo de regras de afirmação, selecione Transformar uma Afirmação de Entrada e, em seguida, selecione Seguinte.

  26. Introduza ou selecione os seguintes valores:

    • Nome da regra de afirmação: Transformar nome da conta do Windows em ID do Nome

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

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

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

  27. Selecione Passar por todos os valores de afirmação.

  28. Selecione Terminar e, em seguida, selecione OK.

Concluir a configuração do fornecedor

Depois de configurar a confiança da entidade confiadora do AD FS:

  1. Criar um registo de aplicação no Azure.

  2. Introduzir as definições do site no Power Pages.

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 que o site do fornecedor de serviços responda corretamente ao pedido SAML do fornecedor de identidade, tem de codificar o parâmetro RelayState.

O valor da cadeia básica a codificar no parâmetro RelayState de SAML tem de estar no formato ReturnUrl=/content/sub-content/, onde /content/sub-content/ é o caminho para a página para onde pretende ir no site do fornecedor de serviço. Pode especificar o caminho para qualquer página válida no site. 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/, siga estes passos para construir 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

  • 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 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 utilizando o PowerShell

Em vez de adicionar uma entidade confiadora no AD FS manualmente, pode executar o seguinte script do PowerShell no servidor AD FS. Guarde o script para um ficheiro chamado Add-AdxPortalRelyingPartyTrustForSaml.ps1. Depois de o script ser executado, continue a configurar as definiçõ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

Consulte também

Configurar um fornecedor SAML 2.0
Configurar um fornecedor de SAML 2.0 com o Microsoft Entra ID
FAQ sobre SAML 2.0