ADFS 2.0 客户端证书登录错误页面

ADFS 2.0 客户端证书登录错误页面

我有一个设置了 ADFS 2.0 服务器来使用智能卡身份验证。

如果用户已经存在于 AD 中或者没有被禁用,它会很好地工作。

简单介绍一下背景,我们运营一个使用第三方 PKI 进行用户身份验证的 Active Directory 林。我们不信任原始 AD,只信任 PKI,因此将根据需要创建用户帐户。可能会有数万名用户,因此我们希望该过程是自助的。

当某人无法登录时(由于其帐户不存在或其帐户被禁用),将引发两个错误,事件 364(始终相同)和事件 111(表示用户名/密码失败或帐户被禁用)。

据我所知,错误页面似乎仅提取事件 364,这毫无帮助。

有什么方法可以找出智能卡登录时用户身份验证失败的原因?

答案1

我最终重写了 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();
}

相关内容