Adfs

ADFS 2.0 客戶端證書登錄錯誤頁面

  • September 19, 2014

我有一個 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();
}

引用自:https://serverfault.com/questions/629297