Adfs
ADFS 2.0 客戶端證書登錄錯誤頁面
我有一個 ADFS 2.0 伺服器設置為使用智能卡身份驗證。
如果使用者已經存在於 AD 中,或者沒有被禁用,它會很好地工作。
稍有背景,我們執行一個使用第三方 PKI 進行使用者身份驗證的 Active Directory 森林。我們不信任原始 AD,僅信任 PKI,因此將根據需要創建使用者帳戶。有可能擁有成千上萬的使用者,所以我們希望這個過程是自助的。
當一個人無法登錄(因為他們的帳戶不存在或他們的帳戶被禁用)時,會引發兩個錯誤,一個事件 364,始終相同,事件 111 表示使用者名/密碼失敗或帳戶被禁用。
錯誤頁面似乎只從事件 364 中提取(據我所知),這非常無益。
有沒有辦法找出智能卡登錄期間使用者身份驗證失敗的原因?
我最終重寫了 error.aspx.cs 以執行並嘗試獲取帳戶然後檢查它是否有問題。
該程式碼非常特定於我的環境,但用 c# 編寫仍然相當簡單
對於那些感興趣的一些虛擬碼:
添加到頂部:
using System.Security.Cryptography.X509Certificates using System.DirectoryServices; using System.DirectoryServices.AccountManagement;
在 page_load 的底部:
X509Certificate2 cert = new X509Certificate2(Request.this.Request.ClientCertificate); X509Extension SAN = cert.Extensions["Subject Alternative Name"]; if (SAN!=null){ string principalname = [parse out principalname from SAN]; PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "DomainName", "OU"); UserPrincipal principal= UserPrincipal.FindByIdentity(ctx, IdentityType.UserPrincipalName, principalname); if (principal!=null) { [check if disabled, display message accordingly] principal.Dispose(); } else { [display message about account not exisiting] } ctx.Dispose(); }