Konfigurasikan pengaturan penyedia SAML 2.0 untuk portal

Catatan

Dokumentasi ini berlaku untuk portal Dynamics 365 dan versi setelahnya.

Untuk menyediakan otentikasi eksternal, Anda dapat menambahkan satu atau lebih Penyedia identitas sesuai SAML 2.0(IdP). Dokumen ini menjelaskan bagaimana men-setup berbagai penyedia identitas untuk mengintegrasikan dengan sebuah portal yang bertindak sebagai penyedia layanan (SP).

AD FS (IdP)

Pengaturan untuk penyedia identitas seperti Active Directory Federation Services (AD FS).

Membuat kepercayaan pihak pengandal AD FS

Catatan

Lihat mengkonfigurasi AD FS dengan menggunakan PowerShell, di bawah ini, untuk informasi tentang cara untuk melakukan langkah-langkah ini dalam script PowerShell.

Menggunakan alat manajemen AD FS, buka Layanan > Deskripsi klaim.

  1. Pilih Tambahkan deskripsi klaim.
  2. Tentukan klaim:

    • Nama tampilan:pengidentifikasi terus-menerus

    • Pengidentifikasi Klaim:urn:oasis:names:tc:SAML:2.0:nameid-format:persistent

    • Aktifkan kotak centang untuk: menerbitkan Deskripsi klaim ini dalam metadata Federasi sebagai jenis klaim yang dapat diterima Layanan Federasi ini

    • Aktifkan kotak centang untuk: menerbitkan Deskripsi klaim ini dalam metadata Federasi sebagai jenis klaim yang dapat dikirim Layanan Federasi ini

  3. Pilih OK.

Menggunakan alat manajemen AD FS, pilih hubungan kepercayaan >Kepercayaan Pihak Pengandal.

  1. Pilih Tambahkan kepercayaan pihak pengandal.
  2. Selamat Datang: pilih Mulai.
  3. Pilih Sumber Data: Pilih secara manual memasukkan data tentang pihak pengandal, lalu pilih berikutnya.
  4. Tetapkan nama tampilan: masukkan nama, lalu pilih berikutnya. Contoh: https://portal.contoso.com/
  5. Pilih Profil: Pilih profil AD FS 2.0, lalu pilih berikutnya.
  6. Konfigurasikan sertifikat: pilih berikutnya.
  7. Konfigurasikan URL: pilih kotak centang Aktifkan dukungan untuk protokol 2.0 SAML WebSSO. URL Layanan SAML 2.0 SSO pihak yang mengandalkan: masukkan https://portal.contoso.com/signin-saml2

    • Catatan: AD FS memerlukan bahwa portal berjalan pada HTTPS.

    Catatan

    Titik akhir yang dihasilkan memiliki pengaturan berikut:

  8. Konfigurasikan identitas: Tentukan https://portal.contoso.com/, pilih Tambah, lalu pilih berikutnya. Jika berlaku, Anda dapat menambahkan identitas lainnya untuk setiap tambahan portal pihak pengandal. Pengguna akan bisa mengotentikasi di setiap atau semua identitas yang tersedia.

  9. Pilih aturan otorisasi penerbitan: Pilih memungkinkan semua pengguna untuk mengakses pihak pengandal ini, lalu pilih berikutnya.
  10. Siap untuk menambahkan kepercayaan: pilih berikutnya.
  11. Pilih tutup.

Tambahkan klaim ID nama pada kepercayaan pihak pengandal:

UbahWindows nama account menjadi klaim ID nama (mengubah klaim masuk):

  • Jenis klaim Masuk:Windows nama account Windows

  • Jenis klaim keluar: ID nama

  • Format ID nama Keluar: pengidentifikasi terus-menerus

  • Melewati semua nilai klaim

Buat Pengaturan Situs

Terapkan pengaturan situs portal yang mereferensi kepercayaan Pihak Pengandal AD FS di atas.

Catatan

Konfigurasi AD FS (IdP) standar hanya menggunakan pengaturan berikut (dengan nilai contoh): Authentication/SAML2/ADFS/MetadataAddress - https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml

  • Authentication/SAML2/ADFS/AuthenticationType - http://adfs.contoso.com/adfs/services/trust
    • Gunakan nilai atribut entityID dalam elemen akar Metadata Federasi (buka MetadataAddress URL di browser yang merupakan nilai dari pengaturan situs di atas)
  • Authentication/SAML2/ADFS/ServiceProviderRealm - https://portal.contoso.com/
  • Authentication/SAML2/ADFS/AssertionConsumerServiceUrl - https://portal.contoso.com/signin-saml2
    Metadata gabungan dapat diambil dalam PowerShell dengan menjalankan skrip berikut pada server AD FS: Import-Module adfs Get-ADFSEndpoint -AddressPath /FederationMetadata/2007-06/FederationMetadata.xml

Beberapa layanan IdP dapat dikonfigurasi dengan menggantikan label untuk tag [penyedia]. Tiap label unik membentuk grup pengaturan yang terkait dengan IdP. Contoh: ADFS, AzureAD, MyIdP

Nama Pengaturan Situs KETERANGAN
Authentication/Registration/ExternalLoginEnabled Mengaktifkan atau menonaktifkan masuk dan pendaftaran akun eksternal. Default: true.
Authentication/SAML2/[provider]/MetadataAddress Harus diisi. URL metadata WS-Federation dari server AD FS (STS). Ini umumnya berakhir dengan jalur:/FederationMetadata/2007-06/FederationMetadata.xml. Contoh:https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. Selengkapnya: WsFederationAuthenticationOptions.MetadataAddress
Authentication/SAML2/[provider]/AuthenticationType Harus diisi. Jenis middleware otentikasi OWIN. Tentukan nilai dari atribut entityID pada akar metadata Federasi XML. Contoh:http://adfs.contoso.com/adfs/services/trust. Selengkapnya: AuthenticationOptions.AuthenticationType
Authentication/SAML2/[provider]/ServiceProviderRealm
atau
Authentication/SAML2/[provider]/Wtrealm
Harus diisi. Pengidentifikasi pihak pengandal AD FS. Contoh:https://portal.contoso.com/. Selengkapnya: WsFederationAuthenticationOptions.Wtrealm
Authentication/SAML2/[provider]/AssertionConsumerServiceUrl
atau
Authentication/SAML2/[provider]/Wreply
Harus diisi. Titik akhir pernyataan konsumen AD FS SAML. Misalnya: https://portal.contoso.com/signin-saml2. Selengkapnya: WsFederationAuthenticationOptions.Wreply
Authentication/SAML2/[provider]/Caption Disarankan. Teks yang pengguna dapat tampilkan di antarmuka pengguna masuk. Default: [penyedia]. Selengkapnya: WsFederationAuthenticationOptions.Caption
Authentication/SAML2/[provider]/CallbackPath Jalur dibatasi opsional untuk panggilan balik otentikasi proses. Selengkapnya: WsFederationAuthenticationOptions.CallbackPath
Authentication/SAML2/[provider]/BackchannelTimeout Nilai waktu habis untuk komunikasi saluran kembali. Contoh: 00:05:00 (5 menit). Selengkapnya: WsFederationAuthenticationOptions.BackchannelTimeout
Authentication/SAML2/[provider]/UseTokenLifetime Menunjukkan bahwa otentikasi sesi seumur hidup (misalnya cookie) harus sesuai yang token otentikasi. WsFederationAuthenticationOptions.UseTokenLifetime.
Authentication/SAML2/[provider]/AuthenticationMode Mode middleware otentikasi OWIN. Selengkapnya: AuthenticationOptions.AuthenticationMode
Authentication/SAML2/[provider]/SignInAsAuthenticationType AuthenticationType yang digunakan ketika membuat System.Security.Claims.ClaimsIdentity. Selengkapnya: WsFederationAuthenticationOptions.SignInAsAuthenticationType
Authentication/SAML2/[provider]/ValidAudiences Daftar dipisahkan koma URL audiens. Selengkapnya: TokenValidationParameters.AllowedAudiences
Authentication/SAML2/[provider]/ClockSkew Jam condong untuk menerapkan ketika memvalidasi waktu.
Authentication/SAML2/[provider]/RequireExpirationTime Nilai yang menunjukan apakah token harus memiliki nilai kadaluarsa.
Authentication/SAML2/[provider]/ValidateAudience Boolean untuk mengontrol jika audiens akan divalidasi selama validasi token.

Rincian masuk dimulai IdP

AD FS Mendukung profil akses terusan (SSO) dimulai IdP dari spesifikasi SAML 2.0. Agar portal (penyedia layanan) merespon dengan baik untuk permintaan SAML yang diprakarsai oleh IdP, parameter RelayState harus dikodekan dengan benar.

Nilai string dasar untuk dikodekan ke dalam parameter SAML RelayState harus dalam format: ReturnUrl=/content/sub-content/ di mana /content/sub-content/ adalah jalur ke halaman web yang diinginkan untuk dikunjungi di Portal (penyedia layanan). Jalur dapat digantikan oleh halaman web manapun yang berlaku pada portal. Nilai string dikodekan dan ditempatkan ke dalam sebuah string wadah format: RPID=<URL encoded RPID>&RelayState=<URL encoded RelayState>. String ini seluruh sekali lagi dikodekan dan ditambahkan ke wadah lain format: https://adfs.contoso.com/adfs/ls/idpinitiatedsignon.aspx?RelayState=<URL encoded RPID/RelayState>.

Sebagai contoh, dengan jalur penyedia layanan: /content/sub-content/ and the relying party ID https://portal.contoso.com/, bangun URL dengan langkah-langkah:

Mengkodekan nilai ReturnUrl=/content/sub-content/

  • untuk mendapatkan ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • Untuk mendapatkan%3A%2F%2Fportal.contoso.com%2F
  • Mengkodekan nilai RPID=https%3A%2F%2Fportal.contoso.com%2F&RelayState=ReturnUrl%3D%2Fcontent%2Fsub-content%2F
  • Untuk mendapatkan RPID%3Dhttps%253A%252F%252Fportal.contoso.com%252F%26RelayState%3DReturnUrl%253D%252Fcontent%252Fsub-content%252F
  • Tambahkan jalur SSO yang dimulai IdP AD FS untuk mendapatkan URL terakhir

Script PowerShell berikut dapat digunakan untuk membangun URL (Simpan ke file bernama 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

Pengaturan SAML 2.0 untuk Azure Active Directory

Bagian sebelumnya menjelaskan AD FS juga dapat diterapkan ke Azure AD karena Azure AD berperilaku seperti standar IdP sesuai SAML 2.0–. Untuk memulai, masuk ke Azure Portal Manajemen Azure dan membuat atau memilih direktori yang sudah ada. Ketika sebuah direktori tersedia, ikuti petunjuk untuk menambahkan aplikasi ke direktori.

  1. Di bawah menuaplikasi direktori, pilih Tambahkan
  2. Pilih Tambahkan aplikasi yang dikembangkan organisasi saya.
  3. Tentukan nama custom untuk aplikasi lalu memilih tipe aplikasi web dan/atau web API.
  4. Untuk URL Sign-On danApp ID URI, tentukan URL portal untuk kedua bidang https://portal.contoso.com/. Hal ini terkait dengan pengaturan nilai situs ServiceProviderRealm (Wtrealm).
  5. Pada titik ini, aplikasi baru dibuat. Buka bagian Konfigurasi dalam menu.

    Di bawah bagian akses terusan, update entri URL Balasan pertama untuk mencakup jalur dalam URL http://portal.contoso.com/signin-azure-ad.

    Hal ini terkait dengan pengaturan nilai situs AssertionConsumerServiceUrl (Wreply).

  6. Di menu footer pilih lihat titik akhir dan catat bidang Metadata Federasi.

Hal ini terkait dengan pengaturan nilai situs MetadataAddress.

  • Rekatkan URL ini di jendela browser untuk melihat metadata Federasi XML dan catat atribut entityID dari elemen akar.
  • Hal ini terkait dengan pengaturan nilai situsAuthenticationType.

Catatan

Standar konfigurasi Azure AD hanya menggunakan pengaturan berikut (dengan nilai contoh): Authentication/SAML2/AzureAD/MetadataAddress - https://login.microsoftonline.com/01234567-89ab-cdef-0123-456789abcdef/federationmetadata/2007-06/federationmetadata.xml

Penyedia Identitas Shibboleth 3

Gunakan panduan berikut untuk konfigurasi dengan benar Penyedia Identitas Shibboleth sebagai layanan IdP. Berikut menganggap IdP di-host pada domain https://idp.contoso.com.

Metadata gabungan URL adalah 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"/>

Konfigurasi penyedia layanan (pihak pengandal) dengan mengonfigurasikan metadata-providers.xml.

  • Setiap metadata Federasi penyedia layanan (<SPSSODescriptor>) harus mencakup pengikatan posting layanan konsumen pernyataan Salah satu pilihan adalah untuk menggunakan FilesystemMetadataProvider dan mereferensi file konfigurasi yang berisi:
<AssertionConsumerService index="1" isDefault="true"

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

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

Atribut lokasi terkait dengan pengaturanAssertionConsumerServiceUrl (Wreply).

  • Metadata Federasi penyedia layanan harus menentukan atribut entityID untuk EntityDescriptor yang sesuai dengan pengaturan AuthenticationType.

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

Catatan

Konfigurasi Shibboleth standar hanya menggunakan pengaturan berikut (dengan nilai contoh):
Authentication/SAML2/Shibboleth/MetadataAddress - https://idp.contoso.com/idp/shibboleth

Rincian masuk dimulai IdP

Shibboleth Mendukung profil SSO dimulai IdP dari spesifikasi SAML 2.0. Agar portal (penyedia layanan) merespon dengan baik untuk permintaan SAML yang diprakarsai oleh IdP, parameter RelayState harus dikodekan dengan benar.

Nilai string dasar untuk dikodekan ke dalam parameter SAML RelayState harus dalam format: ReturnUrl=/content/sub-content/ di mana /content/sub-content/ adalah jalur ke halaman web yang diinginkan untuk dikunjungi di Portal (penyedia layanan). Jalur dapat digantikan oleh halaman web manapun yang berlaku pada portal. URL SSO dimulai IdP penuh harus dalam format: https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=<URL encoded provider ID>&target=<URL encoded return path>.

Sebagai contoh, dengan jalur penyedia layanan: /content/sub-content/ dan ID pihak pengandal https://portal.contoso.com/, URL final adalah https://idp.contoso.com/idp/profile/SAML2/Unsolicited/SSO?providerId=https%3A%2F%2Fportal.contoso.com%2F&target=ReturnUrl%3D%2Fcontent%2Fsub-content%2F

Script PowerShell berikut dapat digunakan untuk membangun URL (Simpan ke file bernama 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

Mengkonfigurasi AD FS dengan menggunakan PowerShell

Proses penambahan kepercayaan pihak pengandal pada AD FS dapat juga dilakukan dengan menjalankan skrip PowerShell berikut di server AD FS (menyimpan isi ke file bernama Add-AdxPortalRelyingPartyTrustForSaml.ps1). Setelah menjalankan script, lanjutkan dengan mengkonfigurasi pengaturan situs portal.

<# 

.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

Lihat juga

Konfigurasikan otentikasi Portal Dynamics 365
Mengatur identitas otentikasi untuk portal
Pengaturan penyedia OAuth2 untuk portal
Pengaturan Open ID Connect untuk portal
Pengaturan penyedia WS-Federation untuk portal
Otentikasi Facebook App (Tab Halaman) untuk portal