Đặt cấu hình nhà cung cấp SAML 2.0 cho các cổng có AD FS

Lưu ý

Từ ngày 12 tháng 10 năm 2022, cổng thông tin Power Apps sẽ trở thành Power Pages. Thông tin khác: Microsoft Power Pages hiện đã được phát hành rộng rãi (blog)
Chúng tôi sẽ sớm di chuyển và hợp nhất hướng dẫn sử dụng cổng thông tin Power Apps với hướng dẫn sử dụng Power Pages.

Quan trọng

Các bước cấu hình Active Directory Federation Services (AD FS) có thể khác nhau tùy thuộc vào phiên bản máy chủ AD FS của bạn.

Tạo tin cậy bên đáng tin cậy AD FS

Lưu ý

Xem Đặt cấu hình AD FS bằng cách sử dụng PowerShell để biết thông tin về cách thực hiện các bước trong mã lệnh PowerShell.

  1. Sử dụng công cụ Quản lý AD FS, mở Dịch vụ > Mô tả Yêu cầu.

    1. Chọn Thêm Mô tả Yêu cầu.

    2. Chỉ định yêu cầu:

      • Tên hiển thị:Mã định danh Liên tục

      • Mã định danh yêu cầu:urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

      • Bật hộp kiểm cho: Xuất bản mô tả yêu cầu này trong siêu dữ liệu liên kết dưới dạng loại yêu cầu mà dịch vụ liên kết này có thể chấp nhận

      • Bật hộp kiểm cho: Xuất bản mô tả yêu cầu này trong siêu dữ liệu liên kết dưới dạng loại yêu cầu mà dịch vụ liên kết này có thể gửi

    3. Chọn OK.

  2. Sử dụng công cụ Quản lý AD FS, chọn Quan hệ tin cậy >Tin cậy bên đáng tin cậy.

    1. Chọn Thêm Tin cậy Bên đáng tin cậy.

    2. Chào mừng: Chọn Bắt đầu.

    3. Chọn Nguồn Dữ liệu: Chọn Nhập dữ liệu về bên đáng tin cậy một cách thủ công, sau đó chọn Tiếp theo.

    4. Chỉ định Tên Hiển thị: Nhập một tên rồi chọn Tiếp theo. Ví dụ: https://portal.contoso.com/

    5. Chọn Hồ sơ: Chọn Hồ sơ AD FS 2.0, sau đó chọn Tiếp theo.

    6. Cấu hình Chứng chỉ: Chọn Tiếp theo.

    7. Định cấu hình URL: Chọn hộp kiểm Bật hỗ trợ cho giao thức SAML 2.0 WebSSO. URL dịch vụ SAML 2.0 SSO bên đáng tin cậy: Nhập https://portal.contoso.com/signin-saml2
      Lưu ý rằng AD FS yêu cầu cổng thông tin chạy trên HTTPS.

      Lưu ý

      Điểm cuối kết quả có thiết đặt sau:

    8. Đặt cấu hình Định danh: Nhập https://portal.contoso.com/, chọn Thêm rồi chọn Tiếp theo. Nếu có thể, bạn có thể thêm các định danh khác cho mỗi cổng thông tin của bên tin cậy bổ sung. Người dùng có thể xác thực qua bất kỳ hoặc tất cả các định danh có sẵn.

    9. Chọn Quy tắc Uỷ quyền Phát hành: Chọn Cho phép tất cả người dùng truy cập vào bên đáng tin cậy, sau đó chọn.

    10. Sẵn sàng để Thêm Tin cậy: Chọn Tiếp theo.

    11. Chọn Đóng.

  3. Thêm yêu cầu ID Tên vào tin cậy bên đáng tin cậy:

    Chuyển đổiWindows tên tài khoản thành yêu cầu ID Tên (Chuyển đổi Yêu cầu Đến):

    • Loại yêu cầu đến:tên tài khoản Windows

    • Đi loại yêu cầu đi: ID Tên

    • Định dạng ID tên đi: Mã định danh Liên tục

    • Chuyển qua tất cả giá trị yêu cầu

Đặt cấu hình nhà cung cấp SAML 2.0

Sau khi thiết lập độ tin cậy của bên phụ thuộc vào AD FS, bạn có thể làm theo các bước trong Định cấu hình nhà cung cấp SAML 2.0 cho cổng.

Nhà cung cấp danh tính–bắt đầu đăng nhập

AD FS hỗ trợ hỗ sơ đăng nhập một lần (SSO) do–nhà cung cấp danh tính khởi tạo của SAML 2.0 thông số kỹ thuật. Để cổng thông tin (nhà cung cấp dịch vụ) phản hồi đúng cách yêu cầu SAML do nhà cung cấp danh tính bắt đầu, tham số RelayState phải được mã hóa đúng cách.

Giá trị chuỗi cơ bản được mã hóa vào tham số SAML RelayState phải ở định dạng: ReturnUrl=/content/sub-content/ trong đó /content/sub-content/ là đường dẫn tới trang web mong muốn để điều hướng đến trên cổng thông tin (nhà cung cấp dịch vụ). Có thể thay thế đường dẫn bằng bất kỳ trang web hợp lệ nào trên cổng thông tin. Chuỗi giá trị được mã hóa và được đặt vào một chuỗi vùng chứa của định dạng RPID=&lt;URL encoded RPID&gt;&RelayState=&lt;URL encoded RelayState&gt;. Toàn bộ chuỗi này được mã hóa một lần nữa và thêm vào vùng chứa của định dạng khác <https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=&lt;URL> encoded RPID/RelayState&gt;.

Ví dụ: giả sử đường dẫn nhà cung cấp dịch vụ: /content/sub-content/ và ID bên đáng tin cậy https://portal.contoso.com/, xây dựng URL với các bước sau:

  • Mã hóa giá trị ReturnUrl=/content/sub-content/ để nhận ReturnUrl%3D%2Fcontent%2Fsub-content%2F

  • Mã hóa giá trị https://portal.contoso.com/ để nhận https%3A%2F%2Fportal.contoso.com%2F

  • Mã hóa giá trị RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F để nhận RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

  • Thêm đường dẫn SSO do–nhà cung cấp danh tính AD FS khởi tạo để nhận URL cuối cùng https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F

Bạn có thể sử dụng tập lệnh PowerShell sau để xây dựng URL. Lưu tập lệnh vào tệp có tên 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

Đặt cấu hình AD FS bằng cách sử dụng PowerShell

Quá trình thêm một tin cậy bên đáng tin cậy trong AD FS cũng có thể được thực hiện bằng cách chạy các tập lệnh PowerShell dưới đây trên máy chủ AD FS. Lưu tập lệnh vào tệp có tên Add-AdxPortalRelyingPartyTrustForSaml.ps1. Sau khi chạy script, tiếp tục định cấu hình thiết đặt site cổng thông tin.

<# 

.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

Đặt cấu hình nhà cung cấp SAML 2.0

Sau khi thiết lập tin cậy bên phụ thuộc AD FS, bạn có thể làm theo các bước trong Đặt cấu hình nhà cung cấp SAML 2.0 cho cổng.

Xem thêm

Định cấu hình nhà cung cấp SAML 2.0 cho cổng với Azure AD
Câu hỏi thường gặp về sử dụng SAML 2.0 trong cổng thông tin
Định cấu hình nhà cung cấp SAML 2.0 cho cổng

Lưu ý

Bạn có thể cho chúng tôi biết bạn thích dùng ngôn ngữ nào cho tài liệu không? Làm một cuộc khảo sát ngắn. (xin lưu ý, khảo sát này bằng tiếng Anh)

Cuộc khảo sát sẽ mất khoảng bảy phút. Không có dữ liệu cá nhân nào được thu thập (điều khoản về quyền riêng tư).