Konfiguracija nastavitev ponudnika SAML 2.0 za portale

Opomba

Ta dokumentacija se uporablja za portale Dynamics 365 in novejše različice.

Če želite zagotoviti zunanje preverjanje pristnosti, lahko dodate enega ali več ponudnikov identitet (IdP), združljivih s standardom SAML 2.0. Ta dokument opisuje, kako nastaviti različne ponudnike identitet za integracijo s portalom, ki deluje kot ponudnik storitev.

AD FS (IdP)

Nastavitve za ponudnika identitet, kot je Active Directory Federation Services (AD FS).

Ustvarite zaupanje odvisne strani AD FS

Opomba

Glejte Konfiguracija AD FS z uporabo PowerShell spodaj za informacije o tem, kako izvesti te korake v skriptu PowerShell.

Z orodjem za upravljanje AD FS odprite Storitev > Opisi zahtevkov.

  1. Izberite Dodaj opis zahtevka.

  2. Podajte zahtevek:

    • Prikazno ime: Vztrajni identifikator

    • Identifikator zahtevka: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Potrditveno polje Omogoči za: objavi ta opis zahtevka v metapodatkih združevanja kot vrsto zahtevka, ki jo ta storitev združevanja lahko sprejme

    • Potrditveno polje Omogoči za: objavi ta opis zahtevka v metapodatkih združevanja kot vrsto zahtevka, ki jo ta storitev združevanja lahko pošlje

  3. izberite V redu.

Z orodjem za upravljanje AD FS izberite Razmerja zaupanj >Zaupanja odvisnih strani.

  1. Izberite Dodaj zaupanje odvisne strani.

  2. Začetna stran: izberite Začetek.

  3. Izbira vira podatkov: izberite Ročni vnos podatkov o odvisni strani in nato izberite Naprej.

  4. Določitev prikaznega imena: vnesite ime in nato izberite Naprej. Primer: https://portal.contoso.com/

  5. Izbira profila: izberite Profil AD FS 2.0 in nato izberite Naprej.

  6. Konfiguracija potrdila: izberite Naprej.

  7. Konfiguracija URL-ja: potrdite polje Omogoči podporo za protokol SAML 2.0 WebSSO. URL storitve odvisne strani SAML 2.0 SSO: vnesite https://portal.contoso.com/signin-saml2

    • Opomba: AD FS zahteva, da se portal izvaja prek HTTPS.

    Opomba

    Pridobljena končna točka ima naslednje nastavitve:

  8. Konfiguracija identitet: določite https://portal.contoso.com/, izberite Dodaj in nato še Naprej. Za portal vsake dodatne odvisne strani lahko po potrebi dodate več identitet. Postopek preverjanja pristnosti uporabnikov se bo lahko izvedel prek katerih koli ali vseh razpoložljivih identitet.

  9. Izbira pravil za overjanje izdajanja: izberite Dovoli vsem uporabnikom dostop do te odvisne strani in nato izberite Naprej.

  10. Dodajanje zaupanja: izberite Naprej.

  11. Izberite Zapri.

Dodajanje zahtevka ID imena v zaupanje odvisne strani:

Preoblikovanje imena računa sistema Windows v zahtevek ID imena (preoblikovanje dohodnega zahtevka):

  • Vrsta dohodnega zahtevka:Windows ime računa

  • Vrsta odhodnega zahtevka: ID imena

  • Odhodna oblika ID-ja imena: Vztrajni identifikator

  • Prehod vseh vrednosti zahtevka

Ustvarjanje nastavitev mesta

Uporaba nastavitev mesta portala, ki se navezujejo na zgornje zaupanje odvisne strani AD FS.

Opomba

Standardna konfiguracija AD FS (IdP) uporablja samo te nastavitve (z vrednostmi primerov): Authentication/SAML2/ADFS/MetadataAddress – https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

  • Authentication/SAML2/ADFS/AuthenticationType – http://adfs.contoso.com/adfs/services/trust
    • Uporaba vrednosti atributa entityID v korenskem elementu metapodatkov združevanja (odprite URL MetadataAddress v brskalniku, ki je vrednost zgornje nastavitve mesta)
  • Authentication/SAML2/ADFS/ServiceProviderRealm – https://portal.contoso.com/
  • Authentication/SAML2/ADFS/AssertionConsumerServiceUrl – https://portal.contoso.com/signin-saml2
    Metapodatki združevanja se lahko pridobijo v lupini PowerShell z zagonom naslednjega skripta v strežniku AD FS: Import-Module adfs Get-ADFSEndpoint -AddressPath /FederationMetadata/2007-06/FederationMetadata.xml

Storitve več ponudnikov IdP lahko konfigurirate tako, da nadomestite oznako [ponudnik]. Vsaka enolična oznaka tvori skupino nastavitev, povezanih s ponudnikom IdP. Primeri: ADFS, AzureAD, MyIdP

Ime nastavitve mesta Opis
Authentication/Registration/ExternalLoginEnabled Omogoči ali onemogoči vpis in registracijo v zunanji račun. Privzet: »true«
Authentication/SAML2/[ponudnik]/MetadataAddress Obvezno. URL metapodatkov WS-Federation strežnika AD FS (STS). Pogosto se konča s potjo: /FederationMetadata/2007-06/FederationMetadata.xml. Primer: https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. Več informacij: WsFederationAuthenticationOptions.MetadataAddress
Authentication/SAML2/[ponudnik]/AuthenticationType Obvezno. Vrsta vmesne programske opreme za preverjanja pristnosti OWIN. Podajte vrednost atributa entityID v korenu XML-ja metapodatkov združevanja. Primer: http://adfs.contoso.com/adfs/services/trust. Več informacij: AuthenticationOptions.AuthenticationType
Authentication/SAML2/[ponudnik]/ServiceProviderRealm
ali
Authentication/SAML2/[ponudnik]/Wtrealm
Obvezno. Identifikator odvisne strani AD FS. Primer: https://portal.contoso.com/. Več informacij: WsFederationAuthenticationOptions.Wtrealm
Authentication/SAML2/[ponudnik]/AssertionConsumerServiceUrl
ali
Authentication/SAML2/[ponudnik]/Wreply
Obvezno. Končna točka izjave za potrošnike AD FS SAML. Primer: https://portal.contoso.com/signin-saml2. Več informacij: WsFederationAuthenticationOptions.Wreply
Authentication/SAML2/[ponudnik]/Caption Priporočeno. Besedilo, ki ga lahko uporabnik prikaže v uporabniškem vmesniku za vpis. Privzeto: [ponudnik]. Več informacij: WsFederationAuthenticationOptions.Caption
Authentication/SAML2/[ponudnik]/CallbackPath Izbirna omejena pot za obdelavo povratnega klica za preverjanja pristnosti. Več informacij: WsFederationAuthenticationOptions.CallbackPath
Authentication/SAML2/[ponudnik]/BackchannelTimeout Vrednost časovne omejitve za vzvratno komunikacijo po kanalu. Primer: 00:05:00 (5 minut). Več informacij: WsFederationAuthenticationOptions.BackchannelTimeout
Authentication/SAML2/[ponudnik]/UseTokenLifetime Označuje, da se mora čas trajanja seje preverjanja pristnosti (na primer piškoti) ujemati s časom trajanja žetona za preverjanje pristnosti. WsFederationAuthenticationOptions.UseTokenLifetime.
Authentication/SAML2/[ponudnik]/AuthenticationMode Način vmesne programske opreme za preverjanja pristnosti OWIN. Več informacij: AuthenticationOptions.AuthenticationMode
Authentication/SAML2/[ponudnik]/SignInAsAuthenticationType AuthenticationType, ki se uporabi pri ustvarjanju atributa System.Security.Claims.ClaimsIdentity. Več informacij: WsFederationAuthenticationOptions.SignInAsAuthenticationType
Authentication/SAML2/[ponudnik]/ValidAudiences Z vejico ločen seznam URL-jev občinstva. Več informacij: TokenValidationParameters.AllowedAudiences
Authentication/SAML2/[ponudnik]/ClockSkew Nagib ure, ki se uporabi pri preverjanju časa.
Authentication/SAML2/[ponudnik]/RequireExpirationTime Vrednost, ki označuje, ali morajo imeti žetoni vrednost poteka.
Authentication/SAML2/[ponudnik]/ValidateAudience Logična vrednost za nadzor tega, ali se pri preverjanju veljavnosti žetona preveri tudi veljavnost občinstva.

Vpis, ki ga zažene IdP

AD FS podpira profil enotne prijave (SSO), ki ga zažene IdP, specifikacije SAML 2.0. Da se portal (ponudnik storitve) ustrezno odzove na zahtevo SAML, ki jo zažene IdP, mora biti parameter RelayState pravilno kodiran.

Vrednost osnovnega niza za kodiranje v parameter SAML RelayState mora biti v tej obliki: ReturnUrl=/content/sub-content/, pri čemer je /content/sub-content/ pot do želene ciljne spletne strani na portalu (ponudnik storitve). Pot lahko nadomesti katera koli veljavna spletna stran na portalu. Vrednost niza je kodirana in umeščena v niz vsebnika v tej obliki: RPID=<URL encoded RPID>RelayState=<URL encoded RelayState>. Ta celoten niz se vnovič kodira in doda v drug vsebnik v obliki https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL encoded RPID/RelayState>.

Primer: na podlagi podane poti ponudnika storitve /content/sub-content/ in ID-ja odvisne strani https://portal.contoso.com/ ustvarite URL po teh korakih:

Kodirajte vrednost ReturnUrl=/content/sub-content/

  • za pridobitev ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • za pridobitev https%3A%2F%2Fportal.contoso.com%2F
  • Kodirajte vrednost RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • za pridobitev RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
  • Na začetek dodajte pot AD FS enotne prijave (SSO), ki jo zažene IdP, da dobite končni URL

Spodnji skript PowerShell se lahko uporabi za ustvarjanje URL-ja (shrani v datoteko z imenom 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

Nastavitve SAML 2.0 za Azure Active Directory

Prejšnji razdelek, ki opisuje AD FS, se lahko uporabi tudi za Azure AD, saj Azure AD deluje kot IdP, združljiv s standardom SAML 2.0. Za začetek se vpišite v portal za upravljanje Azure in ustvarite ali izberite obstoječi imenik. Ko je na voljo imenik, upoštevajte navodila za dodajanje aplikacije v imenik.

  1. V meniju Aplikacije v imeniku izberite Dodaj.

  2. Izberite Dodaj aplikacijo, ki jo razvija moja organizacija.

  3. Določite ime po meri za aplikacijo in nato izberite vrsto spletna aplikacija in/ali spletni API.

  4. Za Prijavni URL in URI ID-ja aplikacije navedite URL portala za obe polji https://portal.contoso.com/. To ustreza vrednosti nastavitve mesta ServiceProviderRealm (Wtrealm).

  5. Na tej točki se ustvari nova aplikacija. Pomaknite se do razdelka Konfiguracija v meniju.

    V razdelku enotna prijava posodobite prvi vnos URL odgovora tako, da bo vključeval pot v URL-ju http://portal.contoso.com/signin-azure-ad.

    To ustreza vrednosti nastavitve mesta AssertionConsumerServiceUrl (Wreply).

  6. V meniju noge izberite možnost Prikaži končne točke in si oglejte polje Dokument metapodatkov združevanja.

To ustreza vrednosti nastavitve mesta MetadataAddress.

  • Prilepite ta URL v okno brskalnika za prikaz XML-ja metapodatkov združevanja in si oglejte atribut entityID korenskega elementa.
  • To ustreza vrednosti nastavitve mesta AuthenticationType.

Opomba

Standardna konfiguracija Azure AD (IdP) uporablja samo te nastavitve (z vrednostmi primerov): Authentication/SAML2/AzureAD/MetadataAddress – https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/federationmetadata/2007-06/federationmetadata.xml

Shibboleth Identity Provider 3

Upoštevajte naslednje napotke za pravilno konfiguracijo ponudnika identitet Shibboleth kot storitve ponudnika IdP. Ta postopek velja v primeru, da IdP gostuje v domeni https://idp.contoso.com.

URL metapodatkov združevanja je https://idp.contoso.com/idp/shibboleth

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

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

Konfigurirajte ponudnike storitev (odvisne strani) tako, da nastavite metadata-providers.xml.

  • Vsi metapodatki združevanja ponudnikov storitev (<SPSSODescriptor>) morajo vključevati vez objave storitev za potrošnike v zvezi z izjavo. Ena od možnosti je, da uporabite FilesystemMetadataProvider s sklicem na konfiguracijsko datoteko, ki vključuje:
<AssertionConsumerService index="1" isDefault="true"

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

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

Atribut »Location« ustreza nastavitvi AssertionConsumerServiceUrl (Wreply).

  • Metapodatki združevanja ponudnikov storitev morajo določati atribut entityID za EntityDescriptor, ki ustreza nastavitvi AuthenticationType.

<EntityDescriptor entityID="https://portal.local.contoso.com/"&gt;...

Opomba

Standardna konfiguracija Shibboleth uporablja samo naslednje nastavitve (z vrednostmi primerov):
Authentication/SAML2/Shibboleth/MetadataAddress – https://idp.contoso.com/idp/shibboleth

Vpis, ki ga zažene IdP

Shibboleth podpira profil SSO, ki ga zažene IdP specifikacije SAML 2.0. Da se portal (ponudnik storitve) ustrezno odzove na zahtevo SAML, ki jo zažene IdP, mora biti parameter RelayState pravilno kodiran.

Vrednost osnovnega niza za kodiranje v parameter SAML RelayState mora biti v tej obliki: ReturnUrl=/content/sub-content/, pri čemer je /content/sub-content/ pot do želene ciljne spletne strani na portalu (ponudnik storitve). Pot lahko nadomesti katera koli veljavna spletna stran na portalu. Celoten URL za SSO, ki ga zažene IdP, mora biti v obliki https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=&lt;URL encoded provider ID>&target=<URL encoded return path>.

Primer: na podlagi podane poti ponudnika storitve /content/sub-content/ in ID-ja odvisne strani https://portal.contoso.com/ je končni URL https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https%3A%2F%2Fportal.contoso.com%2F&target=ReturnUrl%3D%2Fcontent%2Fsub-content%2F

Spodnji skript PowerShell se lahko uporabi za ustvarjanje URL-ja (shrani v datoteko z imenom 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

Konfiguracija AD FS z uporabo PowerShell

Postopek dodajanja zaupanja odvisne strani v AD FS lahko izvedete tudi tako, da zaženete spodnji skript PowerShell v strežniku AD FS (shrani vsebine v datoteko z imenom Add-AdxPortalRelyingPartyTrustForSaml.ps1). Po zagonu skripta nadaljujte postopek konfiguracije nastavitev mesta portala.

<# 

.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

Glejte tudi

Konfiguracija preverjanja pristnosti v portalu Dynamics 365
Nastavitev identitete za preverjanje pristnosti za portal
Nastavitve ponudnika OAuth2 za portale
Nastavitve ponudnika Open ID Connect za portale
Nastavitve ponudnika WS-Federation za portale
Preverjanje pristnosti aplikacije storitve Facebook (zavihek strani) za portale