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.
Utilizar a ferramenta de Gestão de AD FS, aceda a Serviço > Descrições de Afirmações.
Selecione Adicionar Descrição de Afirmação.
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
Selecione OK.
Com a ferramenta Gestão de AD FS, selecione Relações de Fidedignidade >Fidedignidades da Entidade Confiadora.
Selecione Adicionar Fidedignidade de Entidade Confiadora.
Bem-vindo: selecione Iniciar.
Selecionar Origem de Dados: selecione Introduzir manualmente os dados sobre a entidade confiadora e, em seguida, selecione Seguinte.
Especificar o Nome a Apresentar: introduza um nome e, em seguida, selecione Seguinte. Exemplo: https://portal.contoso.com/
Escolher Perfil: selecione Perfil AD FS 2.0 e, em seguida, selecione Seguinte.
Configurar Certificado: selecione Seguinte.
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:
- Tipo de ponto final:Pontos Finais de Consumo da Afirmação SAML
- Enlace:POST
- Índice: n/a (0)
- URL: https://portal.contoso.com/signin-saml2
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.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.
Pronto para Adicionar Fidedignidade: selecione Seguinte.
Selecione Fechar.
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=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. Esta cadeia completa é mais uma vez codificada e adicionada a outro contentor do formato <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
.
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 obterReturnUrl%3D%2Fcontent%2Fsub-content%2F
Codifique o valor
https://portal.contoso.com/
para obterhttps%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 obterRPID%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).