Поділитися через


Налаштування постачальника SAML 2.0 для порталів із AD FS

Примітка

З 12 жовтня 2022 року портали Power Apps перейменовано на Power Pages. Додаткова інформація: Microsoft Power Pages тепер у загальному доступі (блоґ)
Незабаром документацію порталів Power Apps буде перенесено та об’єднано з документацією Power Pages.

Важливо

Кроки для налаштування Служб об'єднання Active Directory (AD FS) можуть різнитися залежно від версії вашого сервера AD FS.

Створити довіру відповідної сторони AD FS

Примітка

Див. Налаштування AD FS за допомогою PowerShell, щоб дізнатися, як можна виконати ці кроки у сценарії PowerShell.

  1. За допомогою інструмента керування AD FS перейдіть у Послугу > Описи тверджень.

    1. Виберіть Додати опис твердження.

    2. Укажіть твердження:

      • Коротке ім'я: Постійний ідентифікатор

      • Ідентифікатор твердження: urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • Увімкнути прапорець для: Опублікувати цей опис твердження в метаданих федерації як тип твердження, який ця служба федерацій може прийняти

      • Увімкнути прапорець для: Опублікувати цей опис твердження в метаданих федерації як тип твердження, який ця служба федерацій може надіслати

    3. Виберіть ОК.

  2. За допомогою інструмента керування AD FS виберіть Довірені зв'язки >Довірені ресурси сторони-довірителя.

    1. Виберіть Додати довіру відповідної сторони.

    2. Вітаємо! Виберіть Розпочати.

    3. Виберіть джерело даних: виберіть Ввести вручну дані сторони, що покладається, а потім виберіть Далі.

    4. Вкажіть коротке ім'я: уведіть ім'я, а потім виберіть Далі. Приклад: https://portal.contoso.com/

    5. Виберіть профіль: виберіть Профіль AD FS 2.0, а потім виберіть Далі.

    6. Налаштуйте конфігурацію сертифікату: виберіть Далі.

    7. Налаштуйте конфігурацію URL-адреси: установіть прапорець Увімкнути підтримку протоколу SAML 2.0 WebSSO URL-адреса відповідної сторони служби SAML 2.0 SSO: введіть https://portal.contoso.com/signin-saml2
      Зверніть увагу, що AD FS вимагає, щоб портал працював на HTTPS.

      Примітка

      Утворена кінцева точка має такі параметри:

      • Тип кінцевої точки:Твердження SAML споживає кінцеві точки
      • Зв’язування:POST
      • Покажчик: немає (0)
      • URL-адреса: https://portal.contoso.com/signin-saml2
    8. Налаштування посвідчень: уведіть https://portal.contoso.com/, виберіть Додати, а потім виберіть Далі. Якщо це можливо, можна додати більше посвідчень для кожного додаткового порталу сторони, що покладається. Користувачі можуть автентифікуватися, використовуючи будь-яке або всі доступні посвідчення.

    9. Виберіть правила видачі дозволу: виберіть Надати доступ всім користувачам до цієї довіреної сторони, а потім виберіть Далі.

    10. Готові додавати траст: виберіть Далі.

    11. Виберіть Закрити.

  3. Додати твердження Ідентифікатор імені до трасту сторони, що покладається:

    ТрансформуванняWindows імені облікового запису на твердження Ідентифікатор імені (трансформування вхідних тверджень):

    • Вхідний тип твердження:Windows ім'я облікового запису

    • Вихідний тип твердження: Ідентифікатор імені

    • Вихідний формат ідентифікатора імені: Стійкий ідентифікатор

    • Пройти через всі значення тверджень

Налаштування постачальника SAML 2.0

Після налаштування AD FS, що покладається на довіру сторін, ви можете виконати кроки, описані в розділі Налаштування постачальника SAML 2.0 для порталів.

Вхід, ініційований постачальником посвідчень

AD FS підтримує профіль єдиного входу (SSO), ініційованого постачальником посвідчень специфікації SAML 2.0. Для того, щоб портал (постачальник послуг) належним чином відповідав на запити SAML, ініційовані постачальником посвідчень, параметр RelayState має бути закодований належним чином.

Основні значення, що мають бути закодовані в параметрі SAML RelayState, повинні бути у форматі ReturnUrl=/content/sub-content/, де /content/sub-content/ – шлях до бажаної веб-сторінки на порталі (постачальнику послуг), на яку потрібно перейти. Шлях може бути замінений будь-якою припустимою веб-сторінкою на порталі. Значення рядка закодоване і поміщене в рядок контейнера формату RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Цей рядок повністю знову кодується та додається до іншого контейнера формату <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Наприклад, якщо маємо шлях постачальника послуг /content/sub-content/ та ідентифікатор сторони-довірителя https://portal.contoso.com/, побудуйте URL-адресу, використовуючи наведені нижче кроки.

  • Закодуйте значення ReturnUrl=/content/sub-content/, та отримайте ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Закодуйте значення https://portal.contoso.com/, та отримайте https%3A%2F%2Fportal.contoso.com%2F

  • Закодуйте значення RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F, та отримайте RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Додайте шлях SSO, ініційованого постачальником посвідчень AD FS, щоб отримати остаточну URL-адресу https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

Щоб створити цю URL-адресу, можна скористатися таким сценарієм PowerShell. Збережіть сценарій у файлі з іменем 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

Налаштувати AD FS за допомогою PowerShell

Процес додавання довірених ресурсів сторони-довірителя у AD FS також можна виконати за допомогою наступного сценарію PowerShell на сервері AD FS. Збережіть сценарій у файлі з іменем Add-AdxPortalRelyingPartyTrustForSaml.ps1. Після запуску сценарію продовжити налаштування параметрів сайту порталу.

<# 

.SYNOPSIS

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

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

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

'@ -f $identityProviderValue

$issuanceAuthorizationRules = @'

@RuleTemplate = AllowAllAuthzRule

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


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

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


[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]

Add-CrmRelyingPartyTrust $domain

Налаштування постачальника SAML 2.0

Після настройки довірених ресурсів сторони-довірителя AD FS, ви зможете виконати кроки з розділу Налаштування постачальника SAML 2.0 для порталів.

Див. також

Настроювання провайдера SAML 2.0 для порталів з Azure AD
Поширені запитання щодо використання SAML 2.0 на порталах
Настроювання провайдера SAML 2.0 для порталів

Примітка

Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)

Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).