Een SAML 2.0-provider configureren voor portals met AD FS
Notitie
Met ingang van 12 oktober 2022 wordt Power Apps-portals hernoemd tot Power Pages. Meer informatie: Microsoft Power Pages is nu algemeen beschikbaar (blog)
We zullen binnenkort de documentatie voor Power Apps-portals migreren en samenvoegen met Power Pages-documentatie.
Belangrijk
De stappen voor het configureren van Active Directory Federation Services (AD FS) kunnen anders zijn, afhankelijk van de versie van uw AD FS-server.
Maak een AD FS Relying Party Trust aan
Notitie
Zie AD FS configureren met PowerShell voor informatie over hoe u deze stappen uitvoert in een PowerShell-script.
Ga naar Service > Claimbeschrijvingen met het AD FS-beheerprogramma.
Selecteer Claimbeschrijving toevoegen.
Geef de claim op:
Weergavenaam: Permanente id
Claim-id: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Selectievakje Inschakelen voor: publiceren van deze claimbeschrijving in federatieve metagegevens als claimtype dat door deze federatieve service kan worden geaccepteerd
Selectievakje Inschakelen voor: publiceren van deze claimbeschrijving in federatieve metagegevens als claimtype dat door deze federatieve service kan worden verzonden
Selecteer OK.
Met het AD FS-beheerprogramma selecteert u Vertrouwensrelaties >Relying Party Trusts.
Selecteer Relying Party Trust toevoegen.
Welkom: selecteer Start.
Gegevensbron selecteren: selecteer Handmatig gegevens voor de relying party invoeren en selecteer daarna Volgende.
Weergavenaam opgeven: voer een naam in en selecteer daarna Volgende. Voorbeeld: https://portal.contoso.com/
Profiel kiezen: selecteer AD FS 2.0-profiel en selecteer daarna Volgende.
Certificaat configureren: selecteer Volgende.
URL configureren: schakel het selectievakje Ondersteuning inschakelen voor het SAML 2.0 WebSSO-protocol in. De service-URL van de relying party SAML 2.0 SSAO-service: Typ https://portal.contoso.com/signin-saml2
Opmerking: AD FS vereist dat de portal op HTTPS wordt uitgevoerd.Notitie
Het eindpunt dat u hebt geconfigureerd, heeft de volgende instellingen:
- Eindpunttype: SAML Assertion Consume-eindpunten
- Binding: POST
- Index: n.v.t. (0)
- URL: https://portal.contoso.com/signin-saml2
Identiteiten configureren: voer
https://portal.contoso.com/
in, selecteer Toevoegen en selecteer daarna Volgende. Indien van toepassing kunt u meer identiteiten toevoegen voor elke extra relying party-portal. Gebruikers kunnen voor alle beschikbare identiteiten verificatie uitvoeren.Regels voor uitgifte-autorisatieregels kiezen: selecteer Alle gebruikers toegang geven tot deze relying party en selecteer daarna Volgende.
Gereed om Trust toe te voegen: selecteer Volgende.
Selecteer Sluiten.
Voeg de Naam-ID-claim aan de trust van de relying party toe:
Zet Windows-accountnaam om in Naam-id-claim (Een binnenkomende claim transformeren):
Type binnenkomende claim: Windows-accountnaam
Uitgaand claimtype: Naam ID
De indeling van uitgaande naam-ID: Permanente ID
Alle claimwaarden passeren
De SAML 2.0-provider configureren
Nadat u de vertrouwensrelatie met een AD FS Relying Party hebt ingesteld, kunt u de stappen volgen in Een SAML 2.0-provider configureren voor portals.
Door identiteitsprovider geïnitieerde aanmelding
AD FS ondersteunt het door de identiteitsprovider geïnitieerde SSO-profiel (eenmalige aanmelding) van de SAML 2.0-specificatie. Als u de portal (serviceprovider) correct wilt laten reageren op de SAML-aanvraag die de identiteitsprovider heeft gestart, moet de parameter RelayState op de juiste wijze zijn gecodeerd.
De basistekenreekswaarde die in de parameter RelayState van SAML moet worden gecodeerd, moet de volgende indeling hebben: ReturnUrl=/content/sub-content/
, waarbij /content/sub-content/
het pad is voor navigatie naar de gewenste webpagina in de portal (serviceprovider). Het pad kan worden vervangen door elke geldige webpagina in de portal. De tekenreekswaarde wordt gecodeerd en geplaatst in een containertekenreeks met de indeling RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>
. Deze gehele tekenreeks wordt opnieuw gecodeerd en toegevoegd aan een andere container met de indeling <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
.
Voorbeeld: gegeven het serviceprovider-pad: /content/sub-content/
en de relying party-id https://portal.contoso.com/
, stelt u de URL samen met de volgende stappen:
Codeer de waarde
ReturnUrl=/content/sub-content/
omReturnUrl%3D%2Fcontent%2Fsub-content%2F
te krijgen.Codeer de waarde
https://portal.contoso.com/
omhttps%3A%2F%2Fportal.contoso.com%2F
te krijgen.Codeer de waarde
RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
omRPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
te krijgen.Voeg het door de AD FS-identiteitsprovider geïnitieerde SSO-pad vooraan toe om de uiteindelijke 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
te verkrijgen
U kunt u het volgende PowerShell-script gebruiken om de URL samen te stellen. Sla het script op in een bestand met de naam 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
AD FS configureren met PowerShell
Het proces voor het toevoegen van een relying party trust in AD FS kan ook worden uitgevoerd door het volgende PowerShell-script uit te voeren op de AD FS-server. Sla het script op in een bestand met de naam Add-AdxPortalRelyingPartyTrustForSaml.ps1. Nadat het script is uitgevoerd, gaat u door met de configuratie van de portalsite-instellingen.
<#
.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
Een SAML 2.0-provider configureren
Nadat u de vertrouwensrelatie met een AD FS Relying Party hebt ingesteld, kunt u de stappen volgen in Een SAML 2.0-provider configureren voor portals.
Zie ook
Een SAML 2.0-provider configureren voor portals met Azure AD
Veelgestelde vragen over het gebruik van SAML 2.0 in portals
Een SAML 2.0-provider configureren voor portals
Notitie
Laat ons uw taalvoorkeuren voor documentatie weten! Beantwoord een korte enquête. (houd er rekening mee dat deze in het Engels is)
De enquête duurt ongeveer zeven minuten. Er worden geen persoonlijke gegevens verzameld (privacyverklaring).