Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Panduan ini menyediakan instruksi untuk menerapkan metode autentikasi kustom untuk AD FS di Windows Server 2012 R2. Untuk informasi selengkapnya, lihat Metode Autentikasi Tambahan.
Peringatan
Contoh yang dapat Anda bangun di sini hanya untuk tujuan pendidikan. Instruksi ini adalah untuk implementasi paling sederhana dan paling minimal yang mungkin untuk mengekspos elemen model yang diperlukan. Tidak ada sistem belakang autentikasi, pengolahan kesalahan, atau data konfigurasi.
Menyiapkan kotak pengembangan
Panduan ini menggunakan Visual Studio 2012. Proyek dapat dibangun menggunakan lingkungan pengembangan apa pun yang dapat membuat kelas .NET untuk Windows. Proyek harus menargetkan .NET 4.5 karena metode BeginAuthentication dan TryEndAuthentication menggunakan jenis System.Security.Claims.Claim, bagian dari .NET Framework versi 4.5. Ada satu referensi yang diperlukan untuk proyek:
DLL Referensi | Di mana menemukannya | Diperlukan untuk |
---|---|---|
Microsoft.IdentityServer.Web.dll | File DLL terletak di %windir%\ADFS pada server Windows Server 2012 R2 tempat AD FS telah diinstal. Anda harus menyalin DLL ini ke mesin pengembangan dan membuat referensi langsung dalam proyek. |
Jenis antarmuka termasuk IAuthenticationContext, IProofData |
Membuat penyedia
Di Visual Studio 2012: Pilih File-Proyek> Baru>...
Pilih Pustaka Kelas dan pastikan Anda menargetkan .NET 4.5.
Buat salinan Microsoft.IdentityServer.Web.dll dari %windir%\ADFS di server Windows Server 2012 R2 tempat AD FS telah diinstal dan tempelkan ke folder proyek di komputer pengembangan Anda.
Di Penjelajah Solusi, klik kanan Referensi dan Tambahkan Referensi...
Telusuri salinan Microsoft.IdentityServer.Web.dll lokal Anda dan Tambahkan...
Klik OK untuk mengonfirmasi referensi baru:
Anda sekarang telah siap untuk menangani semua jenis yang diperlukan untuk penyedia.
Tambahkan kelas baru ke proyek Anda (Klik kanan proyek Anda, Tambahkan... Kelas...) dan beri nama seperti MyAdapter, yang ditunjukkan di bawah ini:
Di file baru MyAdapter.cs, ganti kode yang ada dengan yang berikut ini:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Globalization; using System.IO; using System.Net; using System.Xml.Serialization; using Microsoft.IdentityServer.Web.Authentication.External; using Claim = System.Security.Claims.Claim; namespace MFAadapter { class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class } } }
Kami belum siap untuk membangun... ada dua antarmuka lagi untuk digunakan.
Tambahkan dua kelas lagi ke proyek Anda: satu untuk metadata, dan satu lagi untuk formulir presentasi. Anda dapat menambahkan ini dalam file yang sama dengan kelas di atas.
class MyMetadata : IAuthenticationAdapterMetadata { } class MyPresentationForm : IAdapterPresentationForm { }
Selanjutnya, Anda dapat menambahkan anggota yang diperlukan untuk masing-masing. Pertama, metadata (dengan komentar sebaris yang bermanfaat)
class MyMetadata : IAuthenticationAdapterMetadata { //Returns the name of the provider that will be shown in the AD FS management UI (not visible to end users) public string AdminName { get { return "My Example MFA Adapter"; } } //Returns an array of strings containing URIs indicating the set of authentication methods implemented by the adapter /// AD FS requires that, if authentication is successful, the method actually employed will be returned by the /// final call to TryEndAuthentication(). If no authentication method is returned, or the method returned is not /// one of the methods listed in this property, the authentication attempt will fail. public virtual string[] AuthenticationMethods { get { return new[] { "http://example.com/myauthenticationmethod1", "http://example.com/myauthenticationmethod2" }; } } /// Returns an array indicating which languages are supported by the provider. AD FS uses this information /// to determine the best language\locale to display to the user. public int[] AvailableLcids { get { return new[] { new CultureInfo("en-us").LCID, new CultureInfo("fr").LCID}; } } /// Returns a Dictionary containing the set of localized friendly names of the provider, indexed by lcid. /// These Friendly Names are displayed in the "choice page" offered to the user when there is more than /// one secondary authentication provider available. public Dictionary<int, string> FriendlyNames { get { Dictionary<int, string> _friendlyNames = new Dictionary<int, string>(); _friendlyNames.Add(new CultureInfo("en-us").LCID, "Friendly name of My Example MFA Adapter for end users (en)"); _friendlyNames.Add(new CultureInfo("fr").LCID, "Friendly name translated to fr locale"); return _friendlyNames; } } /// Returns a Dictionary containing the set of localized descriptions (hover over help) of the provider, indexed by lcid. /// These descriptions are displayed in the "choice page" offered to the user when there is more than one /// secondary authentication provider available. public Dictionary<int, string> Descriptions { get { Dictionary<int, string> _descriptions = new Dictionary<int, string>(); _descriptions.Add(new CultureInfo("en-us").LCID, "Description of My Example MFA Adapter for end users (en)"); _descriptions.Add(new CultureInfo("fr").LCID, "Description translated to fr locale"); return _descriptions; } } /// Returns an array indicating the type of claim that the adapter uses to identify the user being authenticated. /// Note that although the property is an array, only the first element is currently used. /// MUST BE ONE OF THE FOLLOWING /// "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname" /// "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" /// "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress" /// "http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid" public string[] IdentityClaims { get { return new[] { "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn" }; } } //All external providers must return a value of "true" for this property. public bool RequiresIdentity { get { return true; } } }
Sekarang Anda seharusnya bisa menekan F12 (klik kanan - Buka Definisi) pada IAuthenticationAdapter untuk melihat anggota antarmuka yang dibutuhkan.
Selanjutnya, Anda dapat melakukan implementasi ini.
Ganti seluruh konten kelas Anda dengan yang berikut ini:
namespace MFAadapter { class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class } } }
Selanjutnya, formulir presentasi:
class MyPresentationForm : IAdapterPresentationForm { /// Returns the HTML Form fragment that contains the adapter user interface. This data will be included in the web page that is presented /// to the cient. public string GetFormHtml(int lcid) { string htmlTemplate = Resources.FormPageHtml; //todo we will implement this return htmlTemplate; } /// Return any external resources, ie references to libraries etc., that should be included in /// the HEAD section of the presentation form html. public string GetFormPreRenderHtml(int lcid) { return null; } //returns the title string for the web page which presents the HTML form content to the end user public string GetPageTitle(int lcid) { return "MFA Adapter"; } }
Perhatikan 'todo' untuk elemen Resources.FormPageHtml di atas. Anda dapat memperbaikinya dalam satu menit, tetapi pertama-tama mari kita tambahkan pernyataan pengembalian akhir yang diperlukan, berdasarkan jenis yang baru diimplementasikan, ke kelas MyAdapter awal Anda. Untuk melakukan ini, tambahkan hal berikut ke implementasi IAuthenticationAdapter yang ada:
class MyAdapter : IAuthenticationAdapter { public IAuthenticationAdapterMetadata Metadata { //get { return new <instance of IAuthenticationAdapterMetadata derived class>; } get { return new MyMetadata(); } } public IAdapterPresentation BeginAuthentication(Claim identityClaim, HttpListenerRequest request, IAuthenticationContext authContext) { //return new instance of IAdapterPresentationForm derived class return new MyPresentationForm(); } public bool IsAvailableForUser(Claim identityClaim, IAuthenticationContext authContext) { return true; //its all available for now } public void OnAuthenticationPipelineLoad(IAuthenticationMethodConfigData configData) { //this is where AD FS passes us the config data, if such data was supplied at registration of the adapter } public void OnAuthenticationPipelineUnload() { } public IAdapterPresentation OnError(HttpListenerRequest request, ExternalAuthenticationException ex) { //return new instance of IAdapterPresentationForm derived class return new MyPresentationForm(); } public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims) { //return new instance of IAdapterPresentationForm derived class outgoingClaims = new Claim[0]; return new MyPresentationForm(); } }
Sekarang untuk file sumber daya yang berisi fragmen html. Buat file teks baru di folder proyek Anda dengan konten berikut:
<div id="loginArea"> <form method="post" id="loginForm" > <!-- These inputs are required by the presentation framework. Do not modify or remove --> <input id="authMethod" type="hidden" name="AuthMethod" value="%AuthMethod%" /> <input id="context" type="hidden" name="Context" value="%Context%" /> <!-- End inputs are required by the presentation framework. --> <p id="pageIntroductionText">This content is provided by the MFA sample adapter. Challenge inputs should be presented below.</p> <label for="challengeQuestionInput" class="block">Question text</label> <input id="challengeQuestionInput" name="ChallengeQuestionAnswer" type="text" value="" class="text" placeholder="Answer placeholder" /> <div id="submissionArea" class="submitMargin"> <input id="submitButton" type="submit" name="Submit" value="Submit" onclick="return AuthPage.submitAnswer()"/> </div> </form> <div id="intro" class="groupMargin"> <p id="supportEmail">Support information</p> </div> <script type="text/javascript" language="JavaScript"> //<![CDATA[ function AuthPage() { } AuthPage.submitAnswer = function () { return true; }; //]]> </script> </div>
Kemudian, pilih > dan beri nama file Sumber Daya, dan klik Tambahkan:
Kemudian, dalam file Resources.resx , pilih Tambahkan Sumber Daya... Tambahkan file yang sudah ada. Navigasikan ke file teks (berisi fragmen html) yang Anda simpan di atas.
Pastikan kode GetFormHtml Anda menyelesaikan nama sumber daya baru dengan benar oleh awalan nama file sumber daya (file.resx) diikuti dengan nama sumber daya itu sendiri:
public string GetFormHtml(int lcid) { string htmlTemplate = Resources.MfaFormHtml; //Resxfilename.resourcename return htmlTemplate; }
Anda sekarang dapat mulai membangun.
Membangun adaptor
Adaptor harus dibangun ke dalam rakitan .NET dengan nama kuat yang dapat diinstal ke GAC di Windows. Untuk mencapainya dalam proyek Visual Studio, selesaikan langkah-langkah berikut:
Klik kanan nama proyek Anda di Penjelajah Solusi dan klik Properti.
Pada tab Penandatanganan, centang Tandatangani rakitan dan pilih <Baru...> di bawah Pilih file kunci nama yang kuat: Berikan nama file kunci dan kata sandi, lalu klik OK. Kemudian pastikan Tanda tangani rakitan dicentang dan tanda Tunda saja tidak dicentang. Halaman properti Penandatanganan seharusnya terlihat seperti ini:
Kemudian bangun solusinya.
Menyebarkan adaptor ke mesin uji Ad FS Anda
Sebelum penyedia eksternal dapat dipanggil oleh AD FS, penyedia tersebut harus terdaftar ke dalam sistem. Penyedia adaptor harus menyediakan alat penginstal yang melakukan tindakan instalasi yang diperlukan, termasuk instalasi di Global Assembly Cache (GAC), dan alat penginstal harus mendukung pendaftaran di Layanan Federasi Direktori Aktif (AD FS). Jika itu tidak dilakukan, administrator perlu menjalankan langkah-langkah Windows PowerShell di bawah ini. Langkah-langkah ini dapat digunakan di lab untuk memungkinkan pengujian dan penelusuran kesalahan.
Mempersiapkan mesin pengujian AD FS
Salin file dan tambahkan ke GAC.
Pastikan Anda memiliki komputer Windows Server 2012 R2 atau komputer virtual.
Instal layanan peran Layanan Federasi Direktori Aktif (AD FS) dan konfigurasikan farm dengan setidaknya satu simpul.
Untuk langkah-langkah terperinci untuk menyiapkan server federasi di lingkungan lab, lihat Panduan Penyebaran AD FS Windows Server 2012 R2.
Salin alat Gacutil.exe ke server.
Gacutil.exe dapat ditemukan di %homedrive%Program Files (x86)Microsoft SDKsWindowsv8.0AbinNETFX 4.0 Tools pada komputer Windows 8. Anda akan memerlukan file gacutil.exe itu sendiri dan 1033, en-US, dan folder sumber daya lokal lainnya di bawah lokasi NetFX 4.0 Tools .
Salin file penyedia Anda (satu atau beberapa file .dll yang ditandatangani dengan nama kuat) ke lokasi folder yang sama dengan gacutil.exe (lokasinya hanya untuk kenyamanan)
Tambahkan file .dll Anda ke GAC di setiap server federasi AD FS di farm:
Contoh: menggunakan alat baris perintah GACutil.exe untuk menambahkan dll ke GAC:
C:>.gacutil.exe /if .<yourdllname>.dll
Untuk melihat entri yang dihasilkan di GAC:
C:>.gacutil.exe /l <yourassemblyname>
Daftarkan penyedia Anda di AD FS
Setelah prasyarat di atas terpenuhi, buka jendela perintah Windows PowerShell di server federasi Anda dan masukkan perintah berikut (perhatikan bahwa jika Anda menggunakan farm server federasi yang menggunakan Windows Internal Database, Anda harus menjalankan perintah ini di server federasi utama farm):
Register-AdfsAuthenticationProvider –TypeName YourTypeName –Name “AnyNameYouWish” [–ConfigurationFilePath (optional)]
Di mana YourTypeName adalah nama tipe kuat .NET Anda: "YourDefaultNamespace.YourIAuthenticationAdapterImplementationClassName, YourAssemblyName, Version=YourAssemblyVersion, Culture=neutral, PublicKeyToken=YourPublicKeyTokenValue, processorArchitecture=MSIL"
Ini akan mendaftarkan penyedia eksternal Anda di Layanan Federasi Active Directory, dengan Nama yang Anda berikan sebagai AnyNameYouWish di atas.
Mulai ulang layanan AD FS (misalnya menggunakan snap-in Layanan Windows).
Jalankan perintah berikut:
Get-AdfsAuthenticationProvider
.Ini menunjukkan penyedia Anda sebagai salah satu penyedia dalam sistem.
Contoh:
$typeName = "MFAadapter.MyAdapter, MFAadapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL” Register-AdfsAuthenticationProvider -TypeName $typeName -Name “MyMFAAdapter” net stop adfssrv net start adfssrv
Jika Anda mengaktifkan layanan pendaftaran perangkat di lingkungan Layanan Federasi Direktori Aktif, jalankan juga perintah PowerShell berikut:
net start drs
Untuk memverifikasi penyedia terdaftar, gunakan perintah PowerShell berikut:
Get-AdfsAuthenticationProvider
.Ini menunjukkan penyedia Anda sebagai salah satu penyedia dalam sistem.
Buat kebijakan autentikasi AD FS yang memanggil adaptor Anda
Buat kebijakan autentikasi menggunakan snap-in Manajemen AD FS
Buka snap-in Manajemen AD FS (dari menu Alat Manajer Server).
Klik Kebijakan Autentikasi.
Di panel tengah, di bawah Autentikasi Multifaktor, klik tautan Edit di sebelah kanan Pengaturan Global.
Di bawah Pilih metode autentikasi tambahan di bagian bawah halaman, centang kotak untuk AdminName dari penyedia Anda. Klik Terapkan.
Untuk menyediakan "pemicu" untuk memanggil MFA menggunakan adaptor Anda, di bawah Lokasi , periksa Ekstranet dan Intranet, misalnya. Klik OK. (Untuk mengonfigurasi pemicu per pihak yang mengandalkan, lihat "Buat kebijakan autentikasi menggunakan Windows PowerShell" di bawah ini.)
Periksa hasilnya menggunakan perintah berikut:
Pertama gunakan
Get-AdfsGlobalAuthenticationPolicy
. Anda akan melihat Nama penyedia Anda sebagai salah satu nilai AdditionalAuthenticationProvider.Kemudian gunakan
Get-AdfsAdditionalAuthenticationRule
. Anda akan melihat aturan untuk Extranet dan Intranet yang dikonfigurasi sebagai hasil dari pilihan kebijakan Anda di UI administrator.
Membuat kebijakan autentikasi menggunakan Windows PowerShell
Pertama, aktifkan penyedia dalam kebijakan global:
Set-AdfsGlobalAuthenticationPolicy -AdditionalAuthenticationProvider “YourAuthProviderName”`
Nota
Perhatikan bahwa nilai yang disediakan untuk parameter AdditionalAuthenticationProvider sesuai dengan nilai yang Anda berikan untuk parameter "Nama" dalam cmdlet Register-AdfsAuthenticationProvider di atas dan ke properti "Nama" dari output cmdlet Get-AdfsAuthenticationProvider.
Set-AdfsGlobalAuthenticationPolicy –AdditionalAuthenticationProvider “MyMFAAdapter”`
Selanjutnya, konfigurasikan aturan global atau khusus pihak yang bergantung untuk memicu MFA.
Contoh 1: untuk membuat aturan global guna mewajibkan MFA untuk permintaan Eksternal:
Set-AdfsAdditionalAuthenticationRule –AdditionalAuthenticationRules 'c:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
Contoh 2: membuat aturan MFA untuk mewajibkan MFA pada permintaan eksternal ke pihak tertentu yang mengandalkan. (Catatan: Penyedia individu tidak dapat terhubung ke pihak yang bergantung secara individu di AD FS di Windows Server 2012 R2).
$rp = Get-AdfsRelyingPartyTrust –Name <Relying Party Name> Set-AdfsRelyingPartyTrust –TargetRelyingParty $rp –AdditionalAuthenticationRules 'c:[type == "http://schemas.microsoft.com/ws/2012/01/insidecorporatenetwork", value == "false"] => issue(type = "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", value = "http://schemas.microsoft.com/claims/multipleauthn" );'
Mengautentikasi dengan MFA menggunakan adaptor Anda
Terakhir, lakukan langkah-langkah di bawah ini untuk menguji adaptor Anda:
Pastikan jenis autentikasi utama global Active Directory Federation Services (AD FS) dikonfigurasikan sebagai Autentikasi Formulir untuk Ekstranet dan Intranet (ini membuat demo lebih mudah untuk diautentikasi sebagai pengguna tertentu)
Di snap-in AD FS, di bawah Kebijakan Autentikasi, di area Autentikasi Utama, klik Edit di samping Pengaturan Global.
- Atau cukup klik tab Utama dari UI Kebijakan multifaktor .
Pastikan Autentikasi Formulir adalah satu-satunya opsi yang dicentang untuk metode autentikasi Ekstranet dan Intranet. Klik OK.
Buka halaman html masuk yang dimulai oleh IDP (https://<fsname>/adfs/ls/idpinitiatedsignon.htm) dan login sebagai pengguna AD yang valid di lingkungan pengujian Anda.
Masukkan kredensial untuk autentikasi utama.
Anda seharusnya melihat halaman formulir MFA dengan contoh pertanyaan tantangan yang muncul.
Jika Anda memiliki lebih dari satu adaptor yang dikonfigurasi, Anda akan melihat halaman pilihan MFA dengan nama ramah Anda dari atas.
Anda sekarang memiliki implementasi antarmuka yang berfungsi dan Anda memiliki pengetahuan tentang cara kerja model. Anda dapat mencoba sebagai contoh tambahan untuk mengatur titik henti di BeginAuthentication dan TryEndAuthentication. Perhatikan bagaimana BeginAuthentication dijalankan ketika pengguna pertama kali memasukkan formulir MFA, sedangkan TryEndAuthentication dipicu di setiap Kirim formulir.
Memperbarui adaptor untuk autentikasi yang berhasil
Tapi tunggu - adaptor contoh Anda tidak akan pernah berhasil mengautentikasi! Ini karena tidak ada dalam kode Anda yang mengembalikan null untuk TryEndAuthentication.
Dengan menyelesaikan prosedur di atas, Anda membuat implementasi adaptor dasar dan menambahkannya ke server AD FS. Anda bisa mendapatkan halaman formulir MFA, tetapi Anda belum dapat mengautentikasi karena Anda belum menempatkan logika yang benar dalam implementasi TryEndAuthentication Anda. Jadi mari kita tambahkan itu.
Ingat implementasi TryEndAuthentication Anda:
public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims)
{
//return new instance of IAdapterPresentationForm derived class
outgoingClaims = new Claim[0];
return new MyPresentationForm();
}
Mari kita perbarui agar tidak selalu mengembalikan MyPresentationForm(). Untuk ini, Anda dapat membuat satu metode utilitas sederhana dalam kelas Anda:
static bool ValidateProofData(IProofData proofData, IAuthenticationContext authContext)
{
if (proofData == null || proofData.Properties == null || !proofData.Properties.ContainsKey("ChallengeQuestionAnswer"))
{
throw new ExternalAuthenticationException("Error - no answer found", authContext);
}
if ((string)proofData.Properties["ChallengeQuestionAnswer"] == "adfabric")
{
return true;
}
else
{
return false;
}
}
Kemudian, perbarui TryEndAuthentication seperti di bawah ini:
public IAdapterPresentation TryEndAuthentication(IAuthenticationContext authContext, IProofData proofData, HttpListenerRequest request, out Claim[] outgoingClaims)
{
outgoingClaims = new Claim[0];
if (ValidateProofData(proofData, authContext))
{
//authn complete - return authn method
outgoingClaims = new[]
{
// Return the required authentication method claim, indicating the particulate authentication method used.
new Claim( "http://schemas.microsoft.com/ws/2008/06/identity/claims/authenticationmethod", "http://example.com/myauthenticationmethod1" )
};
return null;
}
else
{
//authentication not complete - return new instance of IAdapterPresentationForm derived class
return new MyPresentationForm();
}
}
Sekarang Anda harus memperbarui adaptor pada kotak uji. Anda harus terlebih dahulu membatalkan kebijakan LAYANAN Federasi Direktori Aktif, lalu membatalkan pendaftaran dari AD FS dan memulai ulang LAYANAN Federasi Direktori Aktif, lalu menghapus .dll dari GAC, lalu menambahkan .dll baru ke GAC, lalu mendaftarkannya di Layanan Federasi Direktori Aktif, memulai ulang Layanan Federasi Direktori Aktif, dan mengonfigurasi ulang kebijakan AD FS.
Menyebarkan dan mengonfigurasi adaptor yang diperbarui pada mesin AD FS pengujian Anda
Bersihkan Kebijakan AD FS
Kosongkan semua kotak centang terkait MFA di antarmuka pengguna MFA, yang ditunjukkan di bawah ini, lalu klik OK.
Membatalkan pendaftaran penyedia (Windows PowerShell)
PS C:> Unregister-AdfsAuthenticationProvider –Name “YourAuthProviderName”
Contoh:PS C:> Unregister-AdfsAuthenticationProvider –Name “MyMFAAdapter”
Nilai yang Anda berikan untuk "Nama" adalah nilai yang sama dengan "Nama" yang Anda berikan ke cmdlet Register-AdfsAuthenticationProvider. Ini juga merupakan properti "Nama" yang dihasilkan dari Get-AdfsAuthenticationProvider.
Sebelum menghapus pendaftaran penyedia, Anda harus menghapus penyedia dari AdfsGlobalAuthenticationPolicy (baik dengan menghapus tanda centang yang Anda buat di snap-in manajemen AD FS atau dengan menggunakan Windows PowerShell.)
Layanan Federasi Direktori Aktif (AD FS) harus dimulai ulang setelah operasi ini.
Menghapus assembly dari GAC
Pertama, gunakan perintah berikut untuk menemukan nama kuat entri yang sepenuhnya memenuhi syarat:
C:>.gacutil.exe /l <yourAdapterAssemblyName>
Contoh:
C:>.gacutil.exe /l mfaadapter
Kemudian, gunakan perintah berikut untuk menghapusnya dari GAC:
.gacutil /u “<output from the above command>”
Contoh:
C:>.gacutil /u “mfaadapter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL”
Menambahkan rakitan yang diperbarui ke GAC
Pastikan menempelkan .dll yang diperbarui secara lokal terlebih dahulu. C:>.gacutil.exe /if .MFAAdapter.dll
Melihat majelis di GAC (baris perintah)
C:> .gacutil.exe /l mfaadapter
Daftarkan penyedia Anda di AD FS
PS C:>$typeName = "MFAadapter.MyAdapter, MFAadapter, Version=1.0.0.1, Culture=neutral, PublicKeyToken=e675eb33c62805a0, processorArchitecture=MSIL”
PS C:>Register-AdfsAuthenticationProvider -TypeName $typeName -Name “MyMFAAdapter1”
Mulai ulang layanan AD FS (Layanan Federasi Direktori Aktif).
Buat kebijakan autentikasi menggunakan snap-in Manajemen AD FS
Buka snap-in Manajemen AD FS (dari menu Alat Manajer Server).
Klik Kebijakan Autentikasi.
Di bawah Autentikasi Multifaktor, klik tautan Edit di sebelah kanan Pengaturan Global.
Di bawah Pilih metode autentikasi tambahan, centang kotak untuk nama admin penyedia Anda. Klik Terapkan.
Untuk menyediakan "pemicu" untuk memanggil MFA menggunakan adaptor Anda, di bawah Lokasi, periksa Ekstranet dan Intranet, misalnya. Klik OK.
Mengautentikasi dengan MFA menggunakan adaptor Anda
Terakhir, lakukan langkah-langkah di bawah ini untuk menguji adaptor Anda:
Pastikan Jenis Autentikasi Primer global pada Layanan Federasi Direktori Aktif dikonfigurasi sebagai Autentikasi Formulir untuk penggunaan di Extranet dan Intranet (ini memudahkan autentikasi sebagai pengguna tertentu).
Di snap-in manajemen AD FS, di bawah Kebijakan Autentikasi, pada bagian Autentikasi Utama, klik Edit di samping Pengaturan Global.
- Atau cukup klik tab Primary dari UI Kebijakan Multifactor.
Pastikan Autentikasi Formulir adalah satu-satunya opsi yang dicentang untuk metode autentikasi Ekstranet dan Intranet . Klik OK.
Buka halaman html masuk yang dimulai oleh IDP (https://<fsname>/adfs/ls/idpinitiatedsignon.htm) dan login sebagai pengguna AD yang valid di lingkungan pengujian Anda.
Masukkan kredensial untuk autentikasi utama.
Anda akan melihat halaman formulir MFA dengan contoh teks tantangan yang muncul.
- Jika Anda memiliki lebih dari satu adaptor yang dikonfigurasi, Anda akan melihat halaman pilihan MFA dengan nama yang mudah dikenali.
Anda akan melihat proses masuk yang berhasil saat memasukkan adfabric di halaman autentikasi MFA.
Lihat Juga
Sumber Daya Lainnya
Mengelola Risiko dengan Autentikasi Multifaktor Tambahan untuk Aplikasi Sensitif