Konfigurowanie dostawcy SAML 2.0 dla portali przy użyciu usług AD FS

Uwaga

12 października 2022 r. funkcja Portale usługi Power Apps została przekształcona w usługę Power Pages. Więcej informacji: Usługa Microsoft Power Pages jest teraz ogólnie dostępna (blog)
Wkrótce zmigrujemy i scalimy dokumentację funkcji Portale usługi Power Apps z dokumentacją usługi Power Pages.

Ważne

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

Utwórz zaufanie strony zależnej AD FS

Uwaga

Zobacz Konfigurowanie usług AD FS za pomocą programu PowerShell, aby uzyskać informacje dotyczące wykonywania tych kroków w skrypcie programu PowerShell.

  1. Za pomocą narzędzia Zarządzanie AD FS przejdź do Obsługa > Opisy wniosków.

    1. Wybierz Dodaj opis wniosku.

    2. Określ wniosek:

      • Nazwa wyświetlana:Identyfikator trwały

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

      • Włącz pole wyboru dla: Opublikuj ten opis wniosku w metadanych federacyjnych jako typ wniosku, który ta usługa federacyjna może zaakceptować

      • Włącz pole wyboru dla: Opublikuj ten opis wniosku w metadanych federacyjnych jako typ wniosku, który ta usługa federacyjna może wysłać

    3. Wybierz pozycję OK.

  2. Za pomocą narzędzia do zarządzania usługami AD FS wybierz pozycję Relacje zaufania >Zaufania jednostki uzależnionej.

    1. Wybierz Dodaj Zaufanie strony zależnej.

    2. Witamy: Wybierz Start.

    3. Wybierz źródło danych: Wybierz Ręczne wprowadzanie danych na temat strony zależnej, a następnie wybierz Dalej.

    4. Określ nazwę wyświetlaną: Wprowadź nazwę, a następnie wybierz Dalej. Przykład: https://portal.contoso.com/

    5. Wybierz profil: Wybierz Profil AD FS 2.0, a następnie wybierz Dalej.

    6. Konfiguruj certyfikat: Wybierz Dalej.

    7. Konfiguruj adres URL: Zaznacz pole wyboru Włącz obsługę dla protokołu SAML 2.0 WebSSO. Adres URL usługi SAML 2.0 strony zależnej: Wprowadź https://portal.contoso.com/signin-saml2
      Pamiętaj, że usługi AD FS wymagają, aby portal pracował w protokole HTTPS.

      Uwaga

      Wynikowy punkt końcowy ma następujące ustawienia:

    8. Konfigurowanie tożsamości: wprowadź https://portal.contoso.com/, wybierz Dodaj, a następnie wybierz Dalej. Jeśli ma to zastosowanie, dla każdego dodatkowego portalu strony zależnej można dodać więcej tożsamości. Użytkownicy mogą uwierzytelniać dowolne lub wszystkie dostępne tożsamości.

    9. Wybierz reguły autoryzacji wystawiania: Wybierz Zezwól wszystkim użytkownikom na dostęp do tej strony zależnej, a następnie wybierz Dalej.

    10. Gotowy do dodania zaufania: Wybierz Dalej.

    11. Wybierz Zamknij.

  3. Dodaj oświadczenie Identyfikator nazwy do zaufania strony zależnej:

    Przekształć nazwę kontaWindows w oświadczenie Identyfikator nazwy (Przekształć oświadczenie przychodzące):

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

    • Typ oświadczenia wychodzącego: Identyfikator nazwy

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

    • Przejdź przez wszystkie wartości oświadczenia

Konfigurowanie dostawcy SAML 2.0

Po skonfigurowaniu zaufania jednostki uzależnionej usług AD FS można wykonać kroki procedury z tematu Konfigurowanie dostawcy SAML 2.0 dla portali.

Logowanie zainicjowane przez dostawcę tożsamości

Usługi AD FS obsługują profil logowania jednokrotnego inicjowanego przez dostawcę tożsamości dla specyfikacji języka SAML 2.0. Aby portal (dostawca usługi) odpowiednio reagował na żądania SAML zainicjowane przez dostawcę tożsamości, parametr RelayState musi zostać prawidłowo zakodowany.

Wartość ciągu podstawowego do zakodowania w parametrze SAML RelayState musi mieć format ReturnUrl=/content/sub-content/, gdzie /content/sub-content/ jest ścieżką do żądanej strony sieci Web do nawigacji w portalu (dostawca usługi). Ścieżkę można zastąpić dowolną prawidłową stroną sieci Web w portalu. 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 dla ścieżki dostawcy usługi: /content/sub-content/ i identyfikatora jednostki uzależnionej: https://portal.contoso.com/ skonstruuj adres URL w poniższych krokach:

  • 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 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

Konfiguruj AD FS przy użyciu PowerShell

Proces dodawania zaufania jednostki uzależnionej w usługach AD FS można również wykonać, uruchamiając następujący skrypt programu PowerShell na serwerze AD FS. Zapisz skrypt w pliku o nazwie Add-AdxPortalRelyingPartyTrustForSaml.ps1. Po uruchomieniu skryptu, kontynuuj konfigurowanie ustawień witryny portalu.

<# 

.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

Konfigurowanie dostawcy SAML 2.0

Po skonfigurowaniu zaufania jednostki uzależnionej usług AD FS można wykonać kroki procedury z tematu Konfigurowanie dostawcy SAML 2.0 dla portali.

Zobacz też

Konfigurowanie dostawcy SAML 2.0 dla portali przy użyciu usług Azure AD
Często zadawane pytania dotyczące korzystania z protokołu SAML 2.0 w portalach
Konfigurowanie dostawcy SAML 2.0 dla portali

Uwaga

Czy możesz poinformować nas o preferencjach dotyczących języka dokumentacji? Wypełnij krótką ankietę. (zauważ, że ta ankieta jest po angielsku)

Ankieta zajmie około siedmiu minut. Nie są zbierane żadne dane osobowe (oświadczenie o ochronie prywatności).