Konfigurasikan pengaturan penyedia SAML 2.0 untuk portal

Catatan

Dokumentasi ini berlaku untuk portal Dynamics 365 dan versi setelahnya.

Satu atau lebih Penyedia identitas sesuai SAML 2.0(IdP) dapat ditambahkan untuk menyediakan otentikasi eksternal. 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 IdP seperti 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

  • Pilih OK.

Menggunakan alat manajemen AD FS, pilihhubungan 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: Pilihprofil 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 padaHTTPS

    Catatan

    Titik akhir yang dihasilkan memiliki pengaturan berikut:

  8. Konfigurasikan identitas: Tentukan https://portal.contoso.com/, pilih Tambah, lalu pilih berikutnya. Jika berlaku, identitas lainnya ditambahkan 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 klaimID 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 atributentityID dalam elemen akar Metadata Federation (bukaMetadataAddress 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). Sering berakhir dengan jalur:/FederationMetadata/2007-06/FederationMetadata.xml. Contoh:https://adfs.contoso.com/FederationMetadata/2007-06/FederationMetadata.xml. Untuk informasi lebih lanjut: 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. Untuk informasi lebih lanjut: AuthenticationOptions.AuthenticationType.
Authentication/SAML2/[provider]/ServiceProviderRealm
atau
Authentication/SAML2/[provider]/Wtrealm
Harus diisi. Pengidentifikasi pihak pengandal AD FS. Contoh:https://portal.contoso.com/. Untuk informasi lebih lanjut: 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. Untuk informasi lebih lanjut: WsFederationAuthenticationOptions.Wreply.
Authentication/SAML2/[provider]/Caption Disarankan. Teks yang pengguna dapat tampilkan di antarmuka pengguna masuk. Default: [penyedia]. Untuk informasi lebih lanjut: WsFederationAuthenticationOptions.Caption.
Authentication/SAML2/[provider]/CallbackPath Jalur dibatasi opsional untuk panggilan balik otentikasi proses. Untuk informasi lebih lanjut: WsFederationAuthenticationOptions.CallbackPath.
Authentication/SAML2/[provider]/BackchannelTimeout Nilai waktu habis untuk komunikasi saluran kembali. Contoh: 00:05:00 (5 menit). Untuk informasi lebih lanjut: 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. Untuk informasi lebih lanjut: AuthenticationOptions.AuthenticationMode.
Authentication/SAML2/[provider]/SignInAsAuthenticationType AuthenticationType yang digunakan ketika membuat System.Security.Claims.ClaimsIdentity. Untuk informasi lebih lanjut: WsFederationAuthenticationOptions.SignInAsAuthenticationType.
Authentication/SAML2/[provider]/ValidAudiences Daftar dipisahkan koma URL audiens. Untuk informasi lebih lanjut: 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 SSO dimulai IdP dari spesifikasi SAML 2.0. Agar portal (SP) 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 (SP). Jalur dapat digantikan oleh halaman web manapun yang berlaku pada portal. Nilai string dikodekan dan ditempatkan ke dalam sebuah string wadah format: RPID =<RPID yang dikodekan URL>& RelayState =<RPID yang dikodekan 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 SP: /content/sub-content/ dan ID pihak pengandal: 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 ADFS 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 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

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 tipeaplikasi 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 situsServiceProviderRealm (Wtrealm).
  5. Pada titik ini, aplikasi baru dibuat. Buka bagianKonfigurasi 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 situsMetadataAddress.

  • 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: 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 SP (<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 SP harus menentukan atributentityID untuk EntityDescriptor yang sesuai dengan pengaturanAuthenticationType.

<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 (SP) 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 membuka Portal (SP). 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 SP: /content/sub-content/ and the relying party ID: https://portal.contoso.com/, URL akhir 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 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

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

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