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.
Za pomocą narzędzia Zarządzanie AD FS przejdź do Obsługa > Opisy wniosków.
Wybierz Dodaj opis wniosku.
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ć
Wybierz pozycję OK.
Za pomocą narzędzia do zarządzania usługami AD FS wybierz pozycję Relacje zaufania >Zaufania jednostki uzależnionej.
Wybierz Dodaj Zaufanie strony zależnej.
Witamy: Wybierz Start.
Wybierz źródło danych: Wybierz Ręczne wprowadzanie danych na temat strony zależnej, a następnie wybierz Dalej.
Określ nazwę wyświetlaną: Wprowadź nazwę, a następnie wybierz Dalej. Przykład: https://portal.contoso.com/
Wybierz profil: Wybierz Profil AD FS 2.0, a następnie wybierz Dalej.
Konfiguruj certyfikat: Wybierz Dalej.
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:
- Typ punktu końcowego:Punkty końcowe zużycia potwierdzenia SAML
- Powiązanie:POST
- Indeks: n/d (0)
- URL: https://portal.contoso.com/signin-saml2
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.Wybierz reguły autoryzacji wystawiania: Wybierz Zezwól wszystkim użytkownikom na dostęp do tej strony zależnej, a następnie wybierz Dalej.
Gotowy do dodania zaufania: Wybierz Dalej.
Wybierz Zamknij.
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=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. 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=<URL> encoded RPID/RelayState>
.
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).