Konfigurere indstillinger for SAML 2.0-udbyder for portaler

Bemærk

Denne dokumentation vedrører Dynamics 365-portaler og nyere versioner.

Du kan tilføje en eller flere SAML 2.0-kompatible identitetsudbydere (Identity Providers - IdP'er) for at levere ekstern godkendelse. I dette dokument beskrives, hvordan du kan konfigurere forskellige identitetsudbydere til at integrere med en portal, der fungerer som en tjenesteudbyder.

AD FS (IdP)

Indstillinger for en identitetsudbyder, f.eks. Active Directory Federation Services (AD FS).

Oprette en AD FS relying party-tillid

Bemærk

Se Konfigurere AD FS ved hjælp af PowerShell nedenfor for oplysninger om, hvordan du udfører disse trin i et PowerShell-script.

Brug værktøjet AD FS Management, og gå til Service > Claim Descriptions.

  1. Vælg Add Claim Description.
  2. Angiv kravet:

    • Visningsnavn: Persistent Identifier

    • Krav-id: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Markér afkrydsningsfeltet for: Publish this claim description in federation metadata as a claim type that this federation service can accept

    • Markér afkrydsningsfeltet for: Publish this claim description in federation metadata as a claim type that this federation service can send

  3. Vælg OK.

Brug værktøjet AD FS Management, og vælg Tillidsforhold > Relying Party-tillidsforhold.

  1. Vælg Tilføj Relying Party-tillid.
  2. Velkommen: Vælg Start.
  3. Vælg datakilde: Vælg Angiv data om en relying party manuelt, og vælg derefter Næste.
  4. Angiv vist navn: Angiv et navn, og vælg derefter Næste. Eksempel: https://portal.contoso.com/
  5. Vælg profil: Vælg AD FS 2.0 profil, og vælg derefter Næste.
  6. Konfigurer certifikat: Vælg Næste.
  7. Konfigurer URL-adresse: Markér afkrydsningsfeltet Aktivér support for SAML 2.0 WebSSO-protokollen. URL-adresse til Relying party SAML 2.0 SSO-tjeneste: Angiv https://portal.contoso.com/signin-saml2

    • Bemærk! AD FS kræver, at portalen kører på HTTPS.

    Bemærk

    Det resulterende slutpunkt har følgende indstillinger:

  8. Konfigurere identiteter: Angiv https://portal.contoso.com/, vælg Tilføj, og vælg derefter Næste. Hvis det er relevant, kan du tilføje flere identiteter for hver ekstra relying party-portal. Brugere vil kunne godkende på tværs af en eller alle tilgængelige identiteter.

  9. Vælg regler for godkendelse af udstedelse: Vælg Giv alle brugere adgang til denne Relying Party, og vælg derefter Næste.
  10. Klar til at tilføje tillid: Vælg Næste.
  11. Vælg Luk.

Tilføj kravet Navn-id til den relying party-tillid:

Omdan navn på Windows-firma til Navn-id-krav (Transformér et indgående krav):

  • Indgående kravtype: Windows-kontonavn

  • Udgående kravtype: Navn-id

  • Id-format for udgående navn: Persistent Identifier

  • Passér gennem alle kravsværdier

Oprette indstillinger for websted

Anvend portalwebstedets indstillinger, som refererer til den ovenstående AD FS Relying Party-tillid.

Bemærk

En standardkonfiguration af AD FS (IdP) kan kun bruge følgende indstillinger (med eksempelværdier): Authentication/SAML2/ADFS/MetadataAddress - https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

  • Authentication/SAML2/ADFS/AuthenticationType - http://adfs.contoso.com/adfs/services/trust
    • Brug værdien i entityID-attributten i rodelementet i samlingsmetadataene (åbn MetadataAddress URL-adressen i en browser, der er værdien af indstillingen ovenfor)
  • Authentication/SAML2/ADFS/ServiceProviderRealm - https://portal.contoso.com/
  • Authentication/SAML2/ADFS/AssertionConsumerServiceUrl - https://portal.contoso.com/signin-saml2
    Samlingsmetadataene kan hentes i PowerShell ved at køre følgende script på AD FS-serveren: Import-Module adfs Get-ADFSEndpoint -AddressPath /FederationMetadata/2007-06/FederationMetadata.xml

Flere IdP-tjenester kan konfigureres ved at udskifte en etiket for [udbyder]-mærket. Hver entydige etiket danner en gruppe indstillinger, der er relateret til en IdP. Eksempler: ADFS, Azure AD, MyIdP

Navn på indstilling for websted Beskrivelse
Authentication/Registration/ExternalLoginEnabled Aktiverer eller deaktiverer ekstern konto-logon og registrering. Standard: true
Authentication/SAML2/[udbyder]/MetadataAddress Krævet. URL-adressen til WS-Federation-metadataene for AD FS (STS)-serveren. Den slutter sædvanligvis med stien: /FederationMetadata/2007-06/FederationMetadata.xml. Eksempel: https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. Flere oplysninger: WsFederationAuthenticationOptions.MetadataAddress
Authentication/SAML2/[udbyder]/AuthenticationType Krævet. Middlewaretypen for OWIN-godkendelse. Angiv værdien af entityID-attributten i roden af samlingsmetadataenes XML. Eksempel: http://adfs.contoso.com/adfs/services/trust. Flere oplysninger: AuthenticationOptions.AuthenticationType
Authentication/SAML2/[udbyder]/ServiceProviderRealm
eller
Authentication/SAML2/[udbyder]/Wtrealm
Krævet. AD FS relying party-id. Eksempel: https://portal.contoso.com/. Flere oplysninger: WsFederationAuthenticationOptions.Wtrealm
Authentication/SAML2/[udbyder]/AssertionConsumerServiceUrl
eller
Authentication/SAML2/[udbyder]/Wreply
Krævet. AD FS SAML Consumer Assertion-slutpunktet. Eksempel: https://portal.contoso.com/signin-saml2. Flere oplysninger: WsFederationAuthenticationOptions.Wreply
Authentication/SAML2/[udbyder]/Caption Anbefales. Den tekst, brugeren kan få vist i en logonbrugergrænseflade. Standard: [udbyder]. Flere oplysninger: WsFederationAuthenticationOptions.Caption
Authentication/SAML2/[udbyder]/CallbackPath En valgfri begrænset sti, hvor godkendelsestilbagekaldet skal behandles. Flere oplysninger: WsFederationAuthenticationOptions.CallbackPath
Authentication/SAML2/[udbyder]/BackchannelTimeout Timeout-værdien for back-kanal-kommunikation. Eksempel: 00:05:00 (5 minutter). Flere oplysninger: WsFederationAuthenticationOptions.BackchannelTimeout
Authentication/SAML2/[udbyder]/UseTokenLifetime Angiver, at godkendelsessessionens levetid (f.eks. cookies) skal stemme overens med godkendelsestokenets. WsFederationAuthenticationOptions.UseTokenLifetime.
Authentication/SAML2/[udbyder]/AuthenticationMode Middlewaretilstanden for OWIN-godkendelse. Flere oplysninger: AuthenticationOptions.AuthenticationMode
Authentication/SAML2/[udbyder]/SignInAsAuthenticationType Den AuthenticationType, der bruges ved oprettelse af System.Security.Claims.ClaimsIdentity. Flere oplysninger: WsFederationAuthenticationOptions.SignInAsAuthenticationType
Authentication/SAML2/[udbyder]/ValidAudiences Kommasepareret liste over URL-adresser til publikum. Flere oplysninger: TokenValidationParameters.AllowedAudiences
Authentication/SAML2/[udbyder]/ClockSkew Clock skew, som skal anvendes, når du anvender valideringstider.
Authentication/SAML2/[udbyder]/RequireExpirationTime En værdi, der angiver, om tokens skal have en udløbsværdi.
Authentication/SAML2/[udbyder]/ValidateAudience En boolesk værdi, der styrer, om publikum skal valideres under validering af token.

IdP-initieret logon

AD FS understøtter den IdP-initierede SSO (single sign-on)-profil for SAML 2.0-[specifikation](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.4.IdP-Initiated SSO: POST Binding|outline). Hvis portalen (tjenesteudbyder) skal svare korrekt på den SAML-anmodning, der er initieret af IdP, skal RelayState-parameteren være kodet korrekt.

Den grundlæggende strengværdi, der skal kodes i SAML RelayState-parameteren, skal have formatet: ReturnUrl=/content/sub-content/, hvor /content/sub-content/ er stien til den webside, du vil gå til på portalen (tjenesteudbyder). Stien kan erstattes af en hvilken som helst gyldig webside på portalen. Strengværdien kodes og placeres i en objektbeholderstreng med formatet: RPID=<URL-adressekodet RPID>&RelayState=<URL-adressekodet RelayState>. Hele strengen kodes igen og føjes til en anden objektbeholder med formatet: https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL encoded RPID/RelayState>.

Hvis du f.eks. har tjenesteudbyderstien /content/sub-content/ og Relying Party-id'et https://portal.contoso.com/, skal du konstruere URL-adressen med følgende trin:

Kod værdien ReturnUrl=/content/sub-content/

  • for at få ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • for at få https%3A%2F%2Fportal.contoso.com%2F
  • Kod værdien RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • for at få RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
  • Indsæt den AD FS IdP-initierede SSO-sti for at få den endelige URL-adresse

Følgende PowerShell-script kan bruges til at konstruere URL-adressen (gem i en fil med navnet 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

SAML 2.0-indstillinger for Azure Active Directory

Den forrige sektion, der beskriver AD FS, kan også anvendes til Azure AD, fordi Azure AD fungerer som en standard SAML 2.0–kompatibel IdP. Du kommer i gang ved at logge på Azure-administrationsportal og oprette eller vælge en eksisterende mappe. Når en mappe er tilgængelig, skal du følge instruktionerne for at tilføje et program til mappen.

  1. I menuen Programmer i mappen skal du vælge Tilføj.
  2. Vælg Tilføj et program, som organisationen udvikler.
  3. Angiv et brugerdefineret navn til programmet, og vælg derefter typen webprogram og/eller web-API.
  4. For URL-adresse til logon og App-id-URI skal du angive URL-adressen på portalen for begge felter https://portal.contoso.com/. Dette svarer til ServiceProviderRealm (Wtrealm) værdien for webstedsindstillingen.
  5. På dette tidspunkt oprettes der et nyt program. Gå til sektionen Konfigurer i menuen.

    Under sektionen enkeltlogon skal du opdatere den første URL-adresse til svar-post for at medtage en sti i URL-adressen: http://portal.contoso.com/signin-azure-ad.

    Dette svarer til AssertionConsumerServiceUrl (Wreply) værdien for webstedsindstillingen.

  6. Vælg Vis slutpunkter i menuen i sidefoden, og notér feltet Dokument med samlingsmetadata.

Dette svarer til værdien MetadataAddress for webstedsindstillingen.

  • Indsæt denne URL-adresse i et browservindue for at få vist samlingsmetadataenes XML, og notér entityID attributten til rodelementet.
  • Dette svarer til værdien AuthenticationType for webstedsindstillingen.

Bemærk

En standardkonfiguration af Azure AD kan kun bruge følgende indstillinger (med eksempelværdier): Authentication/SAML2/AzureAD/MetadataAddress - https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/federationmetadata/2007-06/federationmetadata.xml

Shibboleth-identitetsudbyder 3

Brug følgende retningslinjer for korrekt konfiguration af Shibboleth-identitetsudbyder som en IdP-tjeneste. Følgende forudsætter, at domænet https://idp.contoso.com er vært for IdO'en.

URL-adressen til samlingsmetadataene er https://idp.contoso.com/idp/shibboleth

  • IdP'en skal være konfigureret til at generere eller betjene et persistent id. Følg vejledningen for at aktivere Generering af fast id.

  • IdP-samlingsmetadataene (<IDPSSODescriptor>) skal være konfigureret, så de indeholder en SSO-omdirigeringsbinding. Eksempel.

<SingleSignOnService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"

Location="https://idp.contoso.com/idp/profile/SAML2/Redirect/SSO"/>

Konfigurer tjenesteudbyderne (relying parties) ved at konfigurere metadata-providers.xml.

  • Hver forekomst af samlingsmetadata for tjenesteudbyder (<SPSSODescriptor>) skal indeholde en Assertion Consumer-serviceopslagsbinding. En mulighed er at bruge en FilesystemMetadataProvider og referere til en konfigurationsfil, der indeholder:
<AssertionConsumerService index="1" isDefault="true"

Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"

Location="https://portal.contoso.com/signin-saml2"/>

Location-attributten svarer til AssertionConsumerServiceUrl (Wreply) indstillingen.

  • Samlingsmetadataene for tjenesteudbyderen skal angive en entityID-attribut for den EntityDescriptor, der svarer til AuthenticationType-indstillingen.

<EntityDescriptor-enheds-id = "https://portal.local.contoso.com/">;...

Bemærk

En Shibboleth-standardkonfiguration bruger kun følgende indstillinger (med eksempelværdier):
Authentication/SAML2/Shibboleth/MetadataAddress - https://idp.contoso.com/idp/shibboleth

IdP-initieret logon

Shibboleth understøtter den IdP-initierede SSO-profil for SAML 2.0 [specifikation](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.1.4.IdP-Initiated SSO: POST Binding|outline). Hvis portalen (tjenesteudbyder) skal kunne svare korrekt på den SAML-anmodning, der er initieret af IdP, skal RelayState-parameteren være kodet korrekt.

Den grundlæggende strengværdi, der skal kodes i SAML RelayState-parameteren, skal have formatet: ReturnUrl=/content/sub-content/, hvor /content/sub-content/ er stien til den webside, du vil gå til på portalen (tjenesteudbyder). Stien kan erstattes af en hvilken som helst gyldig webside på portalen. Den fulde IdP-definerede SSO URL-adresse skal være i formatet https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=<URL encoded provider ID>&target=<URL encoded return path>.

Hvis du f.eks. har tjenesteudbyderstien /content/sub-content/ og Relying Party-id'et https://portal.contoso.com/, er den endelige URL-adresse https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https%3A%2F%2Fportal.contoso.com%2F&target=ReturnUrl%3D%2Fcontent%2Fsub-content%2F

Følgende PowerShell-script kan bruges til at konstruere URL-adressen (gem i en fil med navnet Get-ShibbolethIdPInitiatedUrl.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 providerId

The relying party identifier.

.PARAMETER shibbolethPath

The Shibboleth IdP-initiated SSO page.

.EXAMPLE

PS C:\\> .\\Get-ShibbolethIdPInitiatedUrl.ps1 -path "/content/sub-content/" -providerId "https://portal.contoso.com/" -shibbolethPath "https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO"

#>

param

(

[parameter(mandatory=$true,position=0)]

$path,

[parameter(mandatory=$true,position=1)]

$providerId,

[parameter(position=2)]

$shibbolethPath = "https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO"

)

$state = "ReturnUrl=$path"

$encodedPath = [uri]::EscapeDataString($state)

$encodedRpid = [uri]::EscapeDataString($providerId)

$idpInitiatedUrl = "{0}?providerId={1}&target={2}" -f $shibbolethPath, $encodedRpid, $encodedPath

Write-Output $idpInitiatedUrl

Konfigurere AD FS ved hjælp af PowerShell

Tilføjelse af relying party-tillid i AD FS kan også udføres ved at køre følgende PowerShell-script på AD FS-serveren (gem indholdet i en fil med navnet Add-AdxPortalRelyingPartyTrustForSaml.ps1). Efter kørsel af scriptet skal du fortsætte med at konfigurere indstillingerne for portalwebstedet.

<# 

.SYNOPSIS

Adds a SAML 2.0 relying party trust entry for a Dynamics 365 portals 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 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname"]

=> issue(Type = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", Issuer = c.Issuer, OriginalIssuer = c.OriginalIssuer, Value = c.Value, ValueType = c.ValueType, Properties["http://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 == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]

=> issue(store = "[!INCLUDE[pn-active-directory](../includes/pn-active-directory.md)]", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname", "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress"), query = ";givenName,sn,mail;{{0}}", param = c.Value);

'@ -f $identityProviderValue

$issuanceAuthorizationRules = @'

@RuleTemplate = "AllowAllAuthzRule"

=> issue(Type = "http://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

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

Add-CrmRelyingPartyTrust $domain

Se også

Konfigurere Dynamics 365-portalgodkendelse
Indstille godkendelsesidentitet for en portal
Indstillinger for OAuth2-udbyder for portaler
OpenID Connect-udbyderindstillinger for portaler
WS-Federation-udbyderindstillinger for portaler
Godkendelse via Facebook-app (sidefane) for portaler