Udostępnij za pośrednictwem


Konfigurowanie dostaw SAML 2.0 do działania z usługą AD FS

Active Directory Federation Services (AD FS) jest jednym z dostawców tożsamości SAML 2.0, których można użyć do uwierzytelniania osób odwiedzających witrynę Power Pages. Można użyć dowolnego dostawcy zgodnego ze specyfikacją SAML 2.0.

W tym artykule opisano następujące kroki:

Ważne

Kroki umożliwiające konfigurację usług AD FS mogą być różne w zależności od wersji serwera AD FS.

Konfiguracja usługi AD FS w aplikacji Power Pages

Ustaw usługę ADFS jako dostawcę tożsamości dla witryny.

  1. W witrynie Power Pages wybierz pozycję Bezpieczeństwo>Dostawcy tożsamości.

    Jeśli nie pojawią się żadni dostawcy tożsamości, upewnij się, że opcja Logowanie zewnętrzne jest ustawiona na Włączone w ogólnych ustawieniach uwierzytelniania witryny.

  2. Wybierz + Nowy dostawca.

  3. Z listy Wybierz dostawcę logowania wybierz pozycję Inny.

  4. W obszarze Protokół wybierz opcję SAML 2.0.

  5. Wprowadź nazwę dostawcy.

    Nazwa dostawcy to tekst na przycisku, który użytkownicy widzą po wybraniu dostawcy tożsamości na stronie logowania.

  6. Wybierz Dalej.

  7. W Odpowiedz URL wybierz opcję Kopiuj.

    Nie zamykaj karty przeglądarki Power Pages. Wkrótce do niej wrócisz.

Utwórz zaufanie strony zależnej AD FS

Aby wykonać te kroki , można użyć skryptu programu PowerShell.

  1. W Menedżerze serwera wybierz opcję Narzędzia, a następnie wybierz opcję Zarządzanie programem AD FS.

  2. Rozwiń Usługę.

  3. W panelu z prawej strony wybierz opcję Dodaj opis oświadczenia.

  4. Wprowadź następujące wartości:

    • Nazwa wyświetlana: Identyfikator trwały

    • Identyfikator wniosku: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Wybierz opcję Opublikuj ten opis oświadczenia w metadanych federacji… opcje.

  5. Wybierz pozycję OK.

  6. Wybierz Zaufane relacje>Zaufane jednostki uzależnione.

  7. Wybierz Dodaj Zaufanie strony zależnej.

  8. Wybierz Start.

  9. Wybierz Wprowadź ręcznie dane o jednostce uzależnionej, a następnie wybierz Dalej.

  10. Wprowadź nazwę; na przykład https://portal.contoso.com/.

  11. Wybierz Dalej.

  12. Wybierz profil AD FS 2.0, a następnie wybierz przycisk Dalej.

  13. Na stronie Konfigurowanie certyfikatu wybierz opcję Dalej.

  14. Wybierz opcję Włącz obsługę protokołu WebSSO programu SAML 2.0.

  15. W obszarze Adres URL usługi logowania jednokrotnego strony zależnej SAML 2.0 wprowadź skopiowany adres URL odpowiedzi. AD FS wymaga, aby witryna sieci Web uruchamiała protokół HTTPS, a nie HTTP.

  16. Wybierz Dalej.

  17. Na stronie Konfigurowanie identyfikatorów wprowadź adres URL witryny i wybierz opcję Dodaj.

    W razie potrzeby można dodać więcej tożsamości dla każdej dodatkowej witryny sieci Web strony zależnej od usługi. Użytkownicy mogą uwierzytelniać, używając wszystkich dostępnych tożsamości.

  18. Wybierz Dalej.

  19. W Skonfigurować teraz uwierzytelnienie wieloskładnikowe? wybierz opcję Nie chcę obecnie konfigurować ustawień uwierzytelniania wieloskładnikowego dla tej jednostki uzależnionej.

  20. Na stronie Wybieranie reguł autoryzacji wydawania wybierz opcję Zezwalaj wszystkim użytkownikom na dostęp do tej jednostki uzależnionej, a następnie wybierz opcję Dalej.

  21. Przejrzyj ustawienia zaufania, a następnie wybierz Dalej.

  22. Wybierz Zamknij.

  23. W oknie Edytowanie reguł dotyczących oświadczenia wybierz jedną z następujących kart, zależnie od edytowanego zaufania i zestawu reguł, który chcesz utworzyć:

    • Reguły przekształcenia akceptacji
    • Reguły przekształcenia wydań
    • Reguły uwierzytelnienia wydania
    • Reguły autoryzacji delegowania
  24. Wybierz Dodaj regułę.

  25. Z listy Szablon reguły oświadczenia danych wybierz pozycję Przekształcenia przychodzącego oświadczenia, a następnie wybierz pozycję Dalej.

  26. Wprowadź lub wybierz następujące wartości:

    • Nazwa reguły oświadczenia: Przekształcanie nazwy konta systemu Windows w identyfikator nazwy

    • Typ oświadczenia przychodzącego: Nazwa konta systemu Windows

    • Typ oświadczenia wychodzącego: Identyfikator nazwy

    • Format Identyfikatora nazwy wychodzącej: Identyfikator trwały

  27. Wybierz opcję Przekaż wszystkie wartości oświadczenia.

  28. Wybierz pozycję Zakończ, a następnie wybierz pozycję OK.

Zakończ konfigurowanie dostawcy

Po skonfigurowaniu zaufania strony zależnej od programu AD FS:

  1. Tworzenie rejestracji aplikacji w Azure.

  2. Wprowadź ustawienia witryny w Power Pages.

Logowanie zainicjowane przez dostawcę tożsamości

Usługi AD FS obsługują profil logowania jednokrotnego (SSO) inicjowanego przez dostawcę tożsamości dla specyfikacji języka SAML 2.0. Aby witryna sieci Web dostawcy usług prawidłowo odpowiadała na żądanie SAML dostawcy tożsamości, należy zakodować parametr RelayState.

Podstawowa wartość ciągu do zakodowania w parametrze SAML RelayState musi być w formacie ReturnUrl=/content/sub-content/, gdzie /content/sub-content/ jest ścieżką do strony, do której ma być przejść w witrynie sieci Web dostawcy usług. Można określić ścieżkę do dowolnej prawidłowej strony w witrynie sieci Web. Wartość ciągu jest kodowana i umieszczana w ciągu kontenera formatu RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Ten cały ciąg jest po raz kolejny kodowany i dodawany do innego kontenera formatu <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Na przykład, jeśli jest podana ścieżka dostawcy usługi /content/sub-content/ i identyfikator strony zależnej https://portal.contoso.com/, wykonaj następujące kroki w celu utworzenia adresu URL:

  • Zakoduj wartość ReturnUrl=/content/sub-content/, aby otrzymać ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Zakoduj wartość https://portal.contoso.com/, aby otrzymać https%3A%2F%2Fportal.contoso.com%2F

  • Zakoduj wartość RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F, aby otrzymać RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Dołącz na początku ścieżkę logowania jednokrotnego inicjowanego przez dostawcę tożsamości usług AD FS, aby uzyskać ostateczny adres 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

Do utworzenia adresu URL może służyć następujący skrypt programu PowerShell. Zapisz skrypt w pliku o nazwie 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

Konfigurowanie programu AD FS przy użyciu programu PowerShell

Zamiast ręcznie dodawać zaufanie strony zależnej do programu AD FS, na serwerze programu AD FS można uruchomić następujący skrypt programu PowerShell. Zapisz skrypt w pliku o nazwie Add-AdxPortalRelyingPartyTrustForSaml.ps1. Po wykonaniu skryptu kontynuuj konfigurowanie ustawień witryny w programie 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

Zobacz też

Konfigurowanie dostawcy SAML 2.0
Konfigurowanie dostawcy SAML 2.0 przy użyciu usługi Microsoft Entra ID
SAML 2.0 — często zadawane pytania