Konfiguracija nastavitev ponudnika SAML 2.0 za portale
Opomba
Ta dokumentacija se uporablja za portale Dynamics 365 for Customer Engagement 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.
Izberite Dodaj opis zahtevka.
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
izberite V redu.
Z orodjem za upravljanje AD FS izberite Razmerja zaupanj >Zaupanja odvisnih strani.
Izberite Dodaj zaupanje odvisne strani.
Začetna stran: izberite Začetek.
Izbira vira podatkov: izberite Ročni vnos podatkov o odvisni strani in nato izberite Naprej.
Določitev prikaznega imena: vnesite ime in nato izberite Naprej. Primer: https://portal.contoso.com/
Izbira profila: izberite Profil AD FS 2.0 in nato izberite Naprej.
Konfiguracija potrdila: izberite Naprej.
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:
- Vrsta končne točke: Končne točke potrošnikov izjave SAML
- Vezanje: OBJAVA
- Indeks: ni na voljo (0)
- URL: https://portal.contoso.com/signin-saml2
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.
Izbira pravil za overjanje izdajanja: izberite Dovoli vsem uporabnikom dostop do te odvisne strani in nato izberite Naprej.
Dodajanje zaupanja: izberite Naprej.
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: Ime računa Windows
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=<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
- Kodirajte vrednost https://portal.contoso.com/,
- 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.
V meniju Aplikacije v imeniku izberite Dodaj.
Izberite Dodaj aplikacijo, ki jo razvija moja organizacija.
Določite ime po meri za aplikacijo in nato izberite vrsto spletna aplikacija in/ali spletni API.
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).
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).
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
- Authentication/SAML2/AzureAD/AuthenticationType – https://sts.windows.net/01234567-89ab-cdef-0123-456789abcdef/
- Uporaba vrednosti atributa entityID v korenskem elementu metapodatkov združevanja (odprite URL MetadataAddress v brskalniku, ki je vrednost zgornje nastavitve mesta)
- Authentication/SAML2/AzureAD/ServiceProviderRealm – https://portal.contoso.com/
- Authentication/SAML2/AzureAD/AssertionConsumerServiceUrl – https://portal.contoso.com/signin-azure-ad |
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
IdP mora biti konfiguriran za ustvarjanje ali omogočanje vztrajnega identifikatorja. Upoštevajte navodila, da omogočite ustvarjanje vztrajnega identifikatorja.
Metapodatki združevanja IdP (<IDPSSODescriptor>) morajo biti konfigurirani tako, da vključujejo preusmeritveno vez SSO. Primer.
<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/>...
Opomba
Standardna konfiguracija Shibboleth uporablja samo naslednje nastavitve (z vrednostmi primerov):
Authentication/SAML2/Shibboleth/MetadataAddress – https://idp.contoso.com/idp/shibboleth
- Authentication/SAML2/Shibboleth/AuthenticationType – https://idp.contoso.com/idp/shibboleth
- Uporaba vrednosti atributa entityID v korenskem elementu metapodatkov združevanja (odprite URL MetadataAddress v brskalniku, ki je vrednost zgornje nastavitve mesta)
- Authentication/SAML2/Shibboleth/ServiceProviderRealm – https://portal.contoso.com/
- Authentication/SAML2/Shibboleth/AssertionConsumerServiceUrl – https://portal.contoso.com/signin-saml2
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=<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 for Customer Engagement 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 za portal Dynamics 365 for Customer Engagement
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