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 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 (SP).

AD FS (IdP)

Nastavení pro poskytovatele identity, jako je například služba AD FS.

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: Publikovat tento popis deklarace ve federačních metadatech jako typ deklarace, který může přijímat tato služba Federation Service

Zaškrtávací políčko -Povolit: Publikovat tento popis deklarace ve federačních metadatech jako typ deklarace, který může odesílat tato služba Federation Service

  • Vyberte položku 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: Zadejte https://portal.contoso.com/, vyberte Přidat a potom vyberte Další. Případně lze přidat více identit pro každý další portál předávající stranou. 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žít nastavení portálového webu odkazující na výše uvedené AD FS důvěryhodnosti předávající strany.

Poznámka

Standardní konfigurace služby AD FS (IdP) používá pouze následující nastavení (s ukázkový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 federačních metadat (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
    Federační metadata 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-Federationserveru služby AD FS (služba tokenů zabezpečení). 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ůžete zobrazit uživatel 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 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 ovládacího prvku, pokud bude cílová skupina ověřena při ověřování tokenu.

IdP zahájil přihlášení

AD FS podporuje profil SSO iniciovaný ze strany IdP specifikace SAML 2.0. Aby mohl portál (SP) 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 (SP) 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 SP: /content/sub-content/ a ID předávající strany: https://portal.contoso.com/, adresu URL vytvoříte 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 ADFS 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 SP.

.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 nebo webového rozhraní API.
  4. Pro položky Přihlašovací adresa URL a Identifikátor URI ID aplikace zadejte adresu 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ého přihlašování aktualizujte první záznam Adresa URL odpovědi 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 služby Azure AD používá pouze následující nastavení (s ukázkový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 SP (<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 SP 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 SAML 2.0. Aby mohl portál (SP) 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 (SP) přejít. Cesta může být nahrazena některou platnou webovou stránku na portálu. Úplná adresa URL SSO iniciovaného ze strany IdP by měla 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 SP: /content/sub-content/ a ID předávající strany: https://portal.contoso.com/, konečná adresa URL je: 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 SP.

.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 CRM 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