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


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

Служби об’єднання Active Directory (AD FS) — це один із постачальників посвідчень SAML 2.0, що може використовуватися для авторизації відвідувачів на сайтах Power Pages. Ви можете використовувати будь-якого іншого постачальника, який відповідає технічним характеристикам SAML 2.0.

Ця стаття описує наступні кроки:

Важливо

Кроки для налаштування AD FS можуть різнитися залежно від версії вашого сервера AD FS.

Налаштування AD FS у Power Pages

Установіть AD FS у якості постачальника посвідчень для вашого сайту.

  1. На сайті Power Pages виберіть Налаштування постачальників>Постачальники посвідчень.

    Якщо постачальники посвідчень не відображаються, перевірте, щоб для параметру Зовнішній вхід було встановлено значення Ввімк. у загальних параметрах автентифікації вашого сайту.

  2. Виберіть + Створити постачальника.

  3. Для параметру Вибрати постачальника для входу в систему натисніть Інший.

  4. У пункті Протокол виберіть SAML 2.0.

  5. Введіть ім’я постачальника.

    Ім'я постачальника — це текстове значення кнопки, що відображатиметься для користувачів, коли вони вибиратимуть свого постачальника посвідчень на сторінці входу.

  6. Виберіть Далі.

  7. В області URL-адреса відповіді виберіть Копіювати.

    Не закривайте вкладку браузера Power Pages. Незабаром ви повернетесь до нього.

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

Для виконання цих кроків також можна використати сценарій PowerShell.

  1. У диспетчері сервера виберіть Знаряддя, а тоді натисніть Керування AD FS.

  2. Розгорніть службу.

  3. На панелі праворуч виберіть Додати опис твердження.

  4. Введіть наведені нижче значення.

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

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

    • Виберіть обидва Публікувати цей опис твердження в метаданих об’єднання... параметри.

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

  6. Виберіть Зв’язки трастів>Трасти сторони, що покладається.

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

  8. Виберіть Почати.

  9. Виберіть Ввести вручну дані сторони-довірителя, а потім виберіть Далі.

  10. Уведіть ім'я, наприклад, https://portal.contoso.com/.

  11. Виберіть Далі.

  12. Виберіть Профіль AD FS 2.0, а потім натисніть Далі.

  13. На сторінці Налаштувати сертифікат виберіть Далі.

  14. Виберіть Увімкнути підтримку для протоколу SAML 2.0 WebSSO.

  15. В області URL-адреса служби SAML 2.0 SAML 2.0 сторони-довірителя введіть скопійовану відповідь URL-адресу. AD FS вимагає, щоб веб-сайт працював на HTTPS, не на HTTP.

  16. Виберіть Далі.

  17. На сторінці Настроювання ідентифікаторів введіть URL-адресу сайту, а тоді натисніть Додати.

    Ви можете додати більше посвідчень для кожного додаткового порталу сторони, що покладається, якщо це потрібно. Користувачі можуть автентифікуватися, використовуючи будь-яке доступне посвідчення.

  18. Виберіть Далі.

  19. На сторінці Налаштувати багатофакторну автентифікацію зараз? виберіть Я поки що не хочу налаштовувати параметри багатофакторної автентифікації для цієї сторони, що покладається.

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

  21. Перегляньте налаштування довіри, а потім виберіть Далі.

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

  23. В області Редагування правил твердження виберіть одну зі згаданих нижче вкладок, залежно від довіри, яку потрібно редагувати, і набору правил, де потрібно створити правило.

    • Правила перетворення прийняття
    • Правила перетворення видачі
    • Правила авторизації видачі
    • Правила авторизації делегування
  24. Виберіть Додати правило.

  25. У списку Шаблони правил твердження виберіть Перетворити вхідне твердження та натисніть Далі.

  26. Введіть або виберіть перелічені нижче значення.

    • Ім’я правила твердження: Перетворити ім'я облікового запису Windows на ідентифікатор імені

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

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

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

  27. Виберіть Пройти через всі значення тверджень.

  28. Виберіть Завершити, а потім виберіть OK.

Завершення налаштування постачальника

Після настроювання довіру відповідної сторони AD FS виконайте згадані далі дії.

  1. Створення реєстрації програми в Azure.

  2. Введення параметрів сайту в Power Pages.

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

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 website page on the service provider.
.PARAMETER path
The path to the website 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. Після виконання сценарію продовжуйте настроювати параметри сайту в Power Pages.

<# 
.SYNOPSIS
Adds a SAML 2.0 relying party trust entry for a website.
.PARAMETER domain
The domain name of the website.
.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 website relying party trust
[!INCLUDE[cc-pages-ga-banner](../../../includes/cc-pages-ga-banner.md)]
Add-CrmRelyingPartyTrust $domain

Див. також

Налаштування постачальника SAML 2.0
Налаштування постачальника SAML 2.0 з Microsoft Entra ідентифікатором
SAML 2.0 Запитання й відповіді