Konfigurace nastavení poskytovatele SAML 2.0 pro portály

Poznámka

Tato dokumentace platí pro portály aplikace Dynamics 365 a novější verze.

V rámci zajištění externího ověřování je možné přidat jednoho nebo více poskytovatelů identity (IdP) kompatibilních se SAML 2.0. Tento dokument popisuje, jak nastavit různé poskytovatele identity za účelem integrace s portálem fungujícím jako poskytovatel služeb.

AD FS (IdP)

Nastavení pro poskytovatele identity, jako je například služba AD FS (Active Directory Federation Services).

Vytvoření služby AD FS důvěryhodnosti předávající strany

Poznámka

Viz Konfigurace služby AD FS pomocí PowerShell níže, kde naleznete informace o tom, jak provést tyto kroky ve skriptu PowerShell.

Pomocí nástroje pro správu AD FS vyberte položku Služba > Popisy deklarací.

  1. Klepněte na položku Přidat popis deklarace identity.
  2. Určete deklaraci:

    • Zobrazovaný název: Trvalý identifikátor

    • Identifikátor deklarace: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Zaškrtávací políčko Povolit pro: publikování tohoto popisu deklarace identity v metadatech federace jako typu deklarace, který může tato služba federace přijímat

    • Zaškrtávací políčko Povolit pro: publikování tohoto popisu deklarace v metadatech federace jako typu deklarace, který může tato služba federace odesílat

  3. Vyberte OK.

Pomocí nástroje pro správu AD FS vyberte Vztahy důvěryhodnosti >Vztahy důvěryhodnosti předávající strany.

  1. Vyberte tlačítko Přidat vztah důvěryhodnosti předávající strany.
  2. Vítejte: Vyberte položku Spustit.
  3. Vyberte zdroj dat: Vyberte Zadejte data o předávající straně ručně a poté zvolte Další.
  4. Zadejte zobrazovaný název: Zadejte název a poté zvolte Další. Příklad: https://portal.contoso.com/
  5. Zvolte profil: Vyberte profil AD FS 2.0 a potom vyberte Další.
  6. Nakonfigurujte certifikát: Zvolte Další.
  7. Konfigurace adresy URL: Zaškrtněte políčko Povolit podporu protokolu WebSSO SAML 2.0. Adresa URL služby SSO SAML 2.0 předávající strany: Zadejte https://portal.contoso.com/signin-saml2

    • Poznámka: Služba AD FS vyžaduje spuštění portálu na HTTPS.

    Poznámka

    Výsledný koncový bod má následující nastavení:

  8. Konfigurace identit: Určete https://portal.contoso.com/, vyberte Přidat a potom vyberte Další. Případně můžete přidat více identit pro každý další portál předávající strany. Uživatelé budou moci ověřovat v rámci libovolných nebo všech dostupných identit.

  9. Vyberte pravidla pro povolení vystavování: Vyberte Povolit všem uživatelům přístup k této předávající straně a poté vyberte Další.
  10. Připraveno k Přidání důvěryhodnosti: Zvolte možnost Další.
  11. Vyberte Zavřít.

Přidejte deklaraci ID názvu k důvěryhodnosti předávající strany:

Transformujte název účtu systému Windows na deklaraci ID názvu (transformace příchozí deklarace):

  • Typ příchozí deklarace: Název účtu systému Windows

  • Typ odchozí deklarace: Název ID

  • Odchozí formát ID názvu: Trvalý identifikátor

  • Předat všechny hodnoty pohledávky

Vytvořit nastavení webu

Použijte nastavení portálového webu odkazující na výše uvedenou službu AD FS důvěryhodnosti předávající strany.

Poznámka

Standardní konfigurace AD FS (IdP) pouze používá následující nastavení (s příkladovými hodnotami): Authentication/SAML2/ADFS/MetadataAddress - https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

  • Authentication/SAML2/ADFS/AuthenticationType - http://adfs.contoso.com/adfs/services/trust
    • Použijte hodnotu atributu entityID v kořenovém prvku metadat federace (otevřete adresu MetadataAddress URL v prohlížeči, která je hodnotou výše uvedeného nastavení webu)
  • Authentication/SAML2/ADFS/ServiceProviderRealm - https://portal.contoso.com/
  • Authentication/SAML2/ADFS/AssertionConsumerServiceUrl - https://portal.contoso.com/signin-saml2
    Metadata federace mohou být získána v prostředí PowerShell spuštěním následujícího skriptu na serveru služby AD FS: Import-Module adfs Get-ADFSEndpoint -AddressPath /FederationMetadata/2007-06/FederationMetadata.xml

Nahrazením popisku pro značku [provider] lze nakonfigurovat více služeb IdP. Každý jedinečný popisek tvoří skupinu nastavení souvisejících s IdP. Příklady: ADFS, Azure AD, MyIdP

Název nastavení webu Popis
Authentication/Registration/ExternalLoginEnabled Povolí nebo zakáže přihlášení a registraci k externímu účtu. Výchozí: true
Authentication/SAML2/[provider]/MetadataAddress Povinné: Adresa URL metadat WS-Federation serveru AD FS (STS). Obvykle končí cestou: /FederationMetadata/2007-06/FederationMetadata.xml. Příklad: https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. Další informace: WsFederationAuthenticationOptions.MetadataAddress
Authentication/SAML2/[provider]/AuthenticationType Povinné: Typ ověřování middleware OWIN. Zadejte hodnotu atributu entityID v kořenovém adresáři XML federačních metadat. Příklad: http://adfs.contoso.com/adfs/services/trust. Další informace: AuthenticationOptions.AuthenticationType
Authentication/SAML2/[provider]/ServiceProviderRealm
nebo
Authentication/SAML2/[provider]/Wtrealm
Povinné: Identifikátor služby AD FS předávající strany. Příklad: https://portal.contoso.com/. Další informace: WsFederationAuthenticationOptions.Wtrealm
Authentication/SAML2/[provider]/AssertionConsumerServiceUrl
nebo
Authentication/SAML2/[provider]/Wreply
Povinné: Koncový bod kontrolního výrazu spotřebitele SAML AD FS. Příklad: https://portal.contoso.com/signin-saml2. Další informace: WsFederationAuthenticationOptions.Wreply
Authentication/SAML2/[provider]/Caption Doporučený způsob: Text, který může uživatel zobrazit při přihlášení do uživatelského rozhraní. Výchozí hodnota: [provider]. Další informace: WsFederationAuthenticationOptions.Caption
Authentication/SAML2/[provider]/CallbackPath Volitelně omezená cesta, kdy proběhne ověření zpětného volání. Další informace: WsFederationAuthenticationOptions.CallbackPath
Authentication/SAML2/[provider]/BackchannelTimeout Hodnota časového limitu pro komunikaci pomocí zpětného kanálu. Příklad: 00:05:00 (5 minut). Další informace: WsFederationAuthenticationOptions.BackchannelTimeout
Authentication/SAML2/[provider]/UseTokenLifetime Určuje, že ověřování životnosti relace (např. soubory cookie) by mělo odpovídat ověřovacímu tokenu. WsFederationAuthenticationOptions.UseTokenLifetime.
Authentication/SAML2/[provider]/AuthenticationMode Režim ověřování middleware OWIN. Další informace: AuthenticationOptions.AuthenticationMode
Authentication/SAML2/[provider]/SignInAsAuthenticationType Ověřování AuthenticationType, používané při vytváření System.Security.Claims.ClaimsIdentity. Další informace: WsFederationAuthenticationOptions.SignInAsAuthenticationType
Authentication/SAML2/[provider]/ValidAudiences Čárkami oddělený seznam adres URL cílové skupiny. Další informace: TokenValidationParameters.AllowedAudiences
Authentication/SAML2/[provider]/ClockSkew Chcete-li použít při ověřování časy zkosení hodin.
Authentication/SAML2/[provider]/RequireExpirationTime Hodnota označující, zda tokeny musí mít hodnotu vypršení platnosti.
Authentication/SAML2/[provider]/ValidateAudience Logická hodnota, která určuje, zda bude cílová skupina ověřena při ověřování tokenu.

Přihlášení iniciované ze strany IdP

AD FS podporuje profil jednotného přihlašování (SSO) iniciovaný ze strany IdP specifikace [SAML 2.0](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). Aby mohl portál (poskytovatel služeb) správně reagovat na požadavek SAML iniciovaný ze strany IdP, je třeba správně kódovat parametr RelayState.

Základní hodnota řetězce, která bude zakódována do parametru SAML RelayState, musí být ve formátu ReturnUrl=/content/sub-content/, kde /content/sub-content/ je cesta k požadované webové stránce, na níž se má na portálu (poskytovatel služeb) přejít. Cesta může být nahrazena některou platnou webovou stránku na portálu. Hodnota řetězce je zakódována a umístěna do řetězce kontejneru formátu RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>. Tento celý řetězec je znovu zakódován a přidán do jiného kontejneru formátu https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL encoded RPID/RelayState>.

Pokud například budete mít cestu k poskytovateli služeb /content/sub-content/ a ID předávající strany https://portal.contoso.com/, vytvořte adresu URL takto:

Zakódujte hodnotu ReturnUrl=/content/sub-content/

  • chcete-li získat ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • chcete-li získat https%3A%2F%2Fportal.contoso.com%2F
  • Zakódujte hodnotu RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • chcete-li získat RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
  • Přidejte cestu SSP iniciovanou ze strany AD FS IdP a získáte konečnou adresu URL

Následující skript PowerShell lze použít k vytvoření adresy URL (uložte ji do souboru s názvem 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

Nastavení SAML 2.0 pro Azure Active Directory

Předchozí sekci popisující službu AD FS lze použít také pro Azure AD, neboť Azure AD se chová jako standardní IdP kompatibilní se SAML 2.0. Nejprve se přihlaste do Portálu pro správu Azure a vytvořte nebo vyberte existující adresář. V případě, že adresář je k dispozici, postupujte podle pokynů a přidejte aplikaci do adresáře.

  1. V nabídce Aplikace adresáře zvolte možnost Přidat.
  2. Zvolte Přidat aplikaci, kterou vyvíjí moje organizace.
  3. Určete vlastní název pro aplikaci a poté zvolte typ webové aplikace a/nebo webového rozhraní API.
  4. Pro přihlašovací URL a aplikaci ID URI určete URL portálu pro obě pole https://portal.contoso.com/. To odpovídá hodnotě nastavení webu ServiceProviderRealm (Wtrealm).
  5. V tomto okamžiku je vytvořena nová aplikace. Přejděte do sekce Konfigurovat v nabídce.

    V sekci jednotné přihlášení aktualizujte první záznam URL odpověď a zahrňte cestu v adrese URL http://portal.contoso.com/signin-azure-ad.

    To odpovídá hodnotě nastavení webu AssertionConsumerServiceUrl (Wreply).

  6. V nabídce zápatí klepněte na tlačítko Zobrazit koncové body a všimněte si pole Federace metadat dokumentu.

To odpovídá hodnotě nastavení webu MetadataAddress.

  • Vložte tuto adresu URL do okna prohlížeče a zobrazte kód XML metadat federace a poznamenejte si atribut entityID kořenového elementu
  • To odpovídá hodnotě nastavení webu AuthenticationType.

Poznámka

Standardní konfigurace AD Azure pouze používá následující nastavení (s příkladovými hodnotami): Authentication/SAML2/AzureAD/MetadataAddress - https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/federationmetadata/2007-06/federationmetadata.xml

Poskytovatel identity Shibboleth 3

Řiďte se následujícími pokyny pro správnou konfiguraci poskytovatele identity Shibboleth jako služby IdP. Následující postup předpokládá, že IdP je hostován v doméně https://idp.contoso.com.

Adresa URL metadat federace 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"/>

Nakonfigurujte poskytovatele služeb (předávající strany) pomocí nastavení souboru metadata-providers.xml.

  • Všechna metadata federace poskytovatele služeb (<SPSSODescriptor>) musí obsahovat vazbu příspěvku služby spotřebitele kontrolního výrazu. Jednou z možností je použít FilesystemMetadataProvider a odkazovat na konfigurační soubor, který obsahuje:
<AssertionConsumerService index="1" isDefault="true"

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

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

Atribut Umístění odpovídá nastavení AssertionConsumerServiceUrl (Wreply).

  • Metadata federace poskytovatele služeb by měla určit atribut entityID pro EntityDescriptor, který odpovídá nastavení AuthenticationType.

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

Poznámka

Standardní konfigurace služby Shibboleth pouze používá následující nastavení (s příklady hodnot):
Authentication/SAML2/Shibboleth/MetadataAddress - https://idp.contoso.com/idp/shibboleth

Přihlášení iniciované ze strany IdP

Shibboleth podporuje profil SSO iniciovaný ze strany IdP [specifikace](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) SAML 2.0. Aby mohl portál (poskytovatel služeb) správně reagovat na požadavek SAML iniciovaný ze strany IdP, je třeba správně kódovat parametr RelayState.

Základní hodnota řetězce, která bude zakódována do parametru SAML RelayState, musí být ve formátu ReturnUrl=/content/sub-content/, kde /content/sub-content/ je cesta k požadované webové stránce, na níž se má na portálu (poskytovatel služeb) přejít. Cesta může být nahrazena některou platnou webovou stránku na portálu. Úplná URL adresa SSO přihlášení iniciovaného ze strany IdP musí být ve formátu https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=<URL encoded provider ID>&target=<URL encoded return path>.

Pokud například budete mít cestu k poskytovateli služeb /content/sub-content/ a ID předávající strany https://portal.contoso.com/, konečná adresa URL bude https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https%3A%2F%2Fportal.contoso.com%2F&target=ReturnUrl%3D%2Fcontent%2Fsub-content%2F

Následující skript PowerShell lze použít k vytvoření adresy URL (uložte ji do souboru s názvem 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

Konfigurace služby AD FS pomocí PowerShell

Postup přidání důvěryhodnosti předávající strany ve službě AD FS lze také provést spuštěním následujícího skriptu PowerShell na serveru služby AD FS (uloží obsah do souboru s názvem Add-AdxPortalRelyingPartyTrustForSaml.ps1). Po spuštění skriptu pokračujte v konfiguraci nastavení portálového webu.

<# 

.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

Viz také

Konfigurace ověřování portálu Dynamics 365
Nastavení identity ověřování pro portál
Nastavení poskytovatele OAuth2 pro portály
Nastavení poskytovatele Open ID Connect pro portály
Nastavení zprostředkovatele WS-Federation pro portály
Ověření aplikace Facebooku (karta stránky) pro portály