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:
- Konfiguracja usługi AD FS w aplikacji Power Pages
- Utwórz zaufanie strony zależnej AD FS
- Zakończ konfigurowanie dostawcy
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.
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.
Wybierz + Nowy dostawca.
Z listy Wybierz dostawcę logowania wybierz pozycję Inny.
W obszarze Protokół wybierz opcję SAML 2.0.
Wprowadź nazwę dostawcy.
Nazwa dostawcy to tekst na przycisku, który użytkownicy widzą po wybraniu dostawcy tożsamości na stronie logowania.
Wybierz Dalej.
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.
W Menedżerze serwera wybierz opcję Narzędzia, a następnie wybierz opcję Zarządzanie programem AD FS.
Rozwiń Usługę.
W panelu z prawej strony wybierz opcję Dodaj opis oświadczenia.
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.
Wybierz pozycję OK.
Wybierz Zaufane relacje>Zaufane jednostki uzależnione.
Wybierz Dodaj Zaufanie strony zależnej.
Wybierz Start.
Wybierz Wprowadź ręcznie dane o jednostce uzależnionej, a następnie wybierz Dalej.
Wprowadź nazwę; na przykład https://portal.contoso.com/.
Wybierz Dalej.
Wybierz profil AD FS 2.0, a następnie wybierz przycisk Dalej.
Na stronie Konfigurowanie certyfikatu wybierz opcję Dalej.
Wybierz opcję Włącz obsługę protokołu WebSSO programu SAML 2.0.
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.
Wybierz Dalej.
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.
Wybierz Dalej.
W Skonfigurować teraz uwierzytelnienie wieloskładnikowe? wybierz opcję Nie chcę obecnie konfigurować ustawień uwierzytelniania wieloskładnikowego dla tej jednostki uzależnionej.
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.
Przejrzyj ustawienia zaufania, a następnie wybierz Dalej.
Wybierz Zamknij.
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
Wybierz Dodaj regułę.
Z listy Szablon reguły oświadczenia danych wybierz pozycję Przekształcenia przychodzącego oświadczenia, a następnie wybierz pozycję Dalej.
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
Wybierz opcję Przekaż wszystkie wartości oświadczenia.
Wybierz pozycję Zakończ, a następnie wybierz pozycję OK.
Zakończ konfigurowanie dostawcy
Po skonfigurowaniu zaufania strony zależnej od programu AD FS:
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=<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, 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