Nastavená poskytovatele SAML 2.0 s AD FS
Active Directory Federation Services (AD FS) je jedním z poskytovatelů identity SAML 2.0, které můžete použít k ověřování návštěvníků vašeho webu Power Pages. Můžete použít jakéhokoli poskytovatele, který je v souladu se specifikací SAML 2.0.
Tento článek popisuje následující kroky:
- Nastavení AD FS v Power Pages
- Vytvoření služby AD FS důvěryhodnosti předávající strany
- Dokončení nastavení poskytovatele
Důležité
Kroky pro nastavení AD FS se mohou lišit v závislosti na verzi vašeho serveru AD FS.
Nastavení AD FS v Power Pages
Nastavte AD FS jako poskytovatele identity pro svůj web.
Na vašem webu Power Pages vyberte Zabezpečení>Poskytovatelé identity.
Pokud se nezobrazují žádní poskytovatelé identity, ujistěte se, že Externí přihlášení je nastaveno na Zapnuto v obecných nastaveních ověřování vašeho webu.
Vyberte + Nový zprostředkovatel.
V části Vybrat zprostředkovatele přihlášení vyberte Ostatní.
V části Protokol vyberte SAML 2.0.
Zadejte název pro zprostředkovatele.
Název zprostředkovatele je text na tlačítku, který se uživatelům zobrazí při výběru zprostředkovatele identity na přihlašovací stránce.
Vyberte Další.
V části Adresa URL odpovědi vyberte Kopírovat.
Nezavírejte kartu prohlížeče Power Pages. Brzy se k ní vrátíte.
Vytvoření služby AD FS důvěryhodnosti předávající strany
Můžete také k provedení těchto kroků použít skript PowerShell.
Ve Správci serveru vyberte Nástroje a poté vyberte Správa AD FS.
Rozbalte možnost Služba.
V panelu na pravé straně vyberte Přidat popis deklarace identity.
Zadejte následující hodnoty:
Zobrazovaný název: Trvalý identifikátor
Identifikátor deklarace: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Vyberte obě možnost Zveřejnit tento popis deklarace identity v metadatech federace… .
Vyberte OK.
Vyberte Vztahy důvěryhodnosti>Vztahy důvěryhodnosti přijímající strany.
Vyberte tlačítko Přidat vztah důvěryhodnosti předávající strany.
Vyberte Spustit.
Vyberte Zadejte data o předávající straně ručně a poté zvolte Další.
Zadejte název, např. https://portal.contoso.com/.
Vyberte Další.
Zvolte Profil AD FS 2.0 a pak vyberte Další.
Na stránce Konfigurovat certifikát vyberte Další.
Vyberte Zapnout podporu protokolu SAML 2.0 WebSSO.
V části Adresa URL služby jednotného přihlášení přijímající strany SAML 2.0 zadejte adresu URL odpovědi, kterou jste zkopírovali. Služba AD FS vyžaduje spuštění webu na HTTPS, ne HTTP.
Vyberte Další.
Na stránce Konfigurovat identifikátory zadejte adresu URL svého webu a poté vyberte Přidat.
V případě potřeby můžete přidat více identit pro každý další web přijímající strany. Uživatelé se mohou ověřovat pomocí všech dostupných identit.
Vyberte Další.
Na stránce Konfigurovat vícefaktorové ověřování? vyberte Teď nechci konfigurovat nastavení vícefaktorového ověřování pro tuto důvěryhodnost přijímající strany.
Na stránce Vyberte pravidla pro autorizaci vystavování vyberte Povolit všem uživatelům přístup k této přijímající straně a poté vyberte Další.
Zkontrolujte nastavení důvěryhodnosti a poté zvolte Další.
Vyberte Zavřít.
V části Upravit pravidla nároku vyberte jednu z následujících karet v závislosti na důvěryhodnosti, kterou upravujete, a na tom, ve které sadě pravidel chcete pravidlo vytvořit:
- Pravidla transformace přijetí
- Pravidla transformace vydání
- Pravidla autorizace vydání
- Pravidla autorizace delegování
Vyberte položku Přidat pravidlo.
V seznamu Šablona pravidla nároku vyberte Transformovat příchozí deklaraci identity a poté vyberte Další.
Zadejte nebo vyberte následující hodnoty:
Název pravidla nároku: Změňte název účtu Windows na ID názvu
Typ příchozí deklarace: Název účtu systému Windows
Typ odchozí deklarace: Název ID
Odchozí formát ID názvu: Trvalý identifikátor
Vyberte Předat všechny hodnoty deklarace identity.
Zvolte Dokončit a pak vyberte OK.
Dokončení nastavení poskytovatele
Po nastavení důvěryhodnosti předávající strany služby AD FS:
Přihlášení vyvolané zprostředkovatelem identity
AD FS podporuje profil jednotného přihlašování (SSO) iniciovaného ze strany zprostředkovatele identity specifikace SAML 2.0. Aby web poskytovatele služeb správně reagoval na požadavek SAML poskytovatele identity, musíte kódovat parametr RelayState
.
Základní hodnota řetězce, která bude zakódována do parametru SAML RelayState
, musí být ve formátu ReturnUrl=/content/sub-content/
, kde /content/sub-content/
je cesta k požadované stránce na webu poskytovatele služby. Můžete zadat cestu k jakékoli platné stránce na webu. Hodnota řetězce je zakódována a umístěna do řetězce kontejneru formátu RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. Tento celý řetězec je znovu zakódován a přidán do jiného kontejneru formátu <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
.
Pokud například budete mít cestu poskytovatele služeb: /content/sub-content/
a ID přijímající strany https://portal.contoso.com/
, adresu URL vytvoříte dle následujících kroků:
Zakódujte hodnotu
ReturnUrl=/content/sub-content/
, abyste dostaliReturnUrl%3D%2Fcontent%2Fsub-content%2F
Zakódujte hodnotu
https://portal.contoso.com/
, abyste dostalihttps%3A%2F%2Fportal.contoso.com%2F
Zakódujte hodnotu
RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
, abyste dostaliRPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
Přidejte cestu SSO iniciovanou ze strany zprostředkovatele identity AD FS a získáte konečnou adresu URL
https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
K vytvoření adresy URL můžete použít následující skript prostředí PowerShell. Uložte skript do souboru s názvem 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
Konfigurace služby AD FS pomocí PowerShell
Namísto přidání důvěryhodnosti přijímající strany do služby AD FS ručně lze spustit následující skript PowerShell na serveru AD FS. Uložte skript do souboru s názvem Add-AdxPortalRelyingPartyTrustForSaml.ps1
. Po spuštění skriptu pokračujte konfigurací nastavení webu v 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
Viz také
Nastavení poskytovatele SAML 2.0
Nastavení poskytovatele SAML 2.0 s Microsoft Entra ID
Nejčastější dotazy k SAML 2.0