Einen SAML 2.0-Anbieter für Portale mithilfe von AD FS konfigurieren
Hinweis
Ab 12. Oktober 2022 ist Power Apps-Portale Power Pages. Weitere Informationen: Microsoft Power Pages ist jetzt allgemein verfügbar (Blog)
Wir werden die in Kürze migrieren und die Dokumentation für Power Apps-Portale mit der Power Pages-Dokumentation zusammenführen.
Wichtig
Je nach Version Ihres Active Directory-Verbunddienste (AD FS) können die AD FS-Konfigurationsschritte variieren.
Erstellen einer AD FS-Vertrauensstellung der vertrauenden Seite
Hinweis
Siehe Konfigurieren des AD FS unter Verwendung von PowerShell unten, um Informationen dazu zu erhalten, wie diese Schritte in einem PowerShell-Skript ausgeführt werden.
Wählen Sie im AD FS-Management-Tool Dienst > Anspruchsbeschreibungen aus.
Klicken Sie auf Anspruchsbeschreibung hinzufügen ...
Angeben des Anspruchs:
Anzeigename: Persistenter Bezeichner
Anspruchsbezeichner: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent
Kontrollkästchen aktivieren für: Veröffentlichen Sie die Anspruchsbeschreibung in den Verbundmetadaten als Anspruchstyp, die dieser Verbunddienst annehmen kann
Kontrollkästchen aktivieren für: Veröffentlichen Sie die Anspruchsbeschreibung in den Verbundmetadaten als Anspruchstyp, die dieser Verbunddienst senden kann
Klicken Sie auf OK.
Verwenden Sie das AD FS Management-Tool, und wählen Sie Vertrauensstellungen >Vertrauensstellungen der vertrauenden Seite aus.
Wählen Sie Hinzufügen einer Vertrauensstellung der vertrauenden Seite.
Willkommen: Wählen Sie Start.
Datenquelle auswählen: Wählen Sie Daten zur vertrauenden Seite manuell eingeben aus und klicken Sie auf Weiter.
Anzeigenamen eingeben: Geben Sie einen Namen ein, und klicken Sie auf Weiter. Beispiel: https://portal.contoso.com/
Profil auswählen: Wählen Sie AD FS 2.-Profil und dann Weiter aus.
Zertifikat konfigurieren: Klicken Sie auf Weiter.
URL konfigurieren: Aktivieren Sie das Kontrollkästchen Unterstützung für das SAML 2.0 WebSSO-Protokoll. SAML 2.0 SSO-Dienst-URL der vertrauenden Seite: Geben Sie https://portal.contoso.com/signin-saml2 ein
Beachten Sie, dass AD FS erfordert, dass auf das Portal über HTTPS ausgeführt wird.Hinweis
Der resultierende Endpunkt hat die folgenden Einstellungen:
- Endpunkttyp: SAML Assertion Consume Endpoints
- Bindung: POST
- Index: n/v (0)
- URL: https://portal.contoso.com/signin-saml2
Konfigurieren Sie Identitäten: Geben Sie
https://portal.contoso.com/
an, wählen Sie Hinzufügen aus, und wählen Sie dann Weiter aus. Ggf. können mehr Identitäten für jedes zusätzliche vertrauende Portal hinzugefügt werden. Benutzer können sich für beliebige oder alle verfügbaren Identitäten authentifizieren.Ausstellungs-Autorisierungsregeln wählen : Wählen Sie Allen Benutzern erlauben, auf diese vertrauende Seite zugreifen und klicken Sie dann auf Weiter.
Vertrauensstellung hinzufügen vorbereiten: Klicken Sie auf Weiter.
Wählen Sie Schließen aus.
Fügen Sie die Namens-ID für die vertrauenden Seite hinzu:
UmwandelnWindows des Kontonamens in den Namen-ID-Anspruch (Transformieren eines eingehenden Anspruchs):
Typ des eingehenden Anspruchs: Windows-Kontoname
Typ des ausgehenden Anspruchs: Name-ID
Ausgehendes Namens-ID-Format: Persistenter Bezeichner
Alle Anspruchswerte durchleiten
Den SAML 2.0-Anbieter konfigurieren
Nachdem Sie die AD FS vertrauende Seite eingerichtet haben, können Sie die folgenden Schritte zur Konfiguration eines SAML 2.0-Anbieters ausführen.
Identitätsanbieter– initiierte Anmeldung
AD FS unterstützt das vom Identitätsanbietr–-initiierten einmaligen Anmeldens der SAML 2.0-Spezifikation. Damit das Portal (Dienstanbieter) korrekt auf die vom Identitätsanbieter initiierte SAML-Anforderung reagieren kann, muss der RelayState-Parameter richtig codiert werden.
Der grundlegende String-Wert des in den SAML-RelayState codierten Parameters muss das folgende Format haben: ReturnUrl=/content/sub-content/
wobei /content/sub-content/
der Pfad zur gewünschten Webseite auf dem Portal (Dienstanbieter) ist. Der Pfad kann durch jede gültige Webseite im Portal ersetzt werden. Der String-Wert wird in eine Containerzeichenfolge des Formats RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>
codiert und platziert. Die gesamte Zeichenfolge wird noch einmal codiert und zu einem anderen Container des Formats <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL> encoded RPID/RelayState>
hinzugefügt.
Wenn Sie beispielsweise den Dienstanbieterpfad /content/sub-content/
und die ID der vertrauenden Seite https://portal.contoso.com/
verwenden, erstellen Sie die URL mit den folgenden Schritten:
Codieren Sie den Wert
ReturnUrl=/content/sub-content/
, umReturnUrl%3D%2Fcontent%2Fsub-content%2F
zu erhalten.Codieren Sie den Wert
https://portal.contoso.com/
, umhttps%3A%2F%2Fportal.contoso.com%2F
zu erhalten.Codieren Sie den Wert
RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
, umRPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
zu erhalten.Stellen Sie den AD FS Identitätsanbieter–-initiiierten SSO-Pfad voran, um die abschließende URL abzurufen
https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
Sie können die folgenden PowerShell Script verwenden, um die URL zu konstruieren. Speichern Sie das Skript in einer Datei mit dem Namen 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
Konfigurieren des AD FS unter Verwendung von PowerShell
Der Prozess des Hinzufügens einer vertrauenden Seite in AD FS kann auch in PowerShell Script ausgeführt werden, indem Sie das folgende PowerShell-Skript auf dem AD FS-Server ausführen. Speichern Sie das Skript in einer Datei mit dem Namen Add-AdxPortalRelyingPartyTrustForSaml.ps1. Nachdem Sie das Skript ausgeführt haben, fahren Sie mit der Konfiguration der Portalwebsiteeinstellungen fort.
<#
.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
Einen SAML 2.0 Anbieter konfigurieren
Nachdem Sie die AD FS vertrauende Seite eingerichtet haben, können Sie die folgenden Schritte zur Konfiguration eines SAML 2.0-Anbieters ausführen.
Siehe auch
Einen SAML 2.0-Anbieter für Portale mithilfe von Azure AD konfigurieren
FAQ zur Verwendung von SAML 2.0 in Portalen
Einen SAML 2.0-Anbieter für Portale konfigurieren
Hinweis
Können Sie uns Ihre Präferenzen für die Dokumentationssprache mitteilen? Nehmen Sie an einer kurzen Umfrage teil. (Beachten Sie, dass diese Umfrage auf Englisch ist.)
Die Umfrage dauert etwa sieben Minuten. Es werden keine personenbezogenen Daten erhoben. (Datenschutzbestimmungen).