ASP.NET ActiveDirectoryMembershipProvider要求智能卡

时间:2016-02-23 14:12:28

标签: asp.net iis ldap iis-express smartcard

我正在使用ActiveDiretoryMembershipProvider和ASP.NET Login-Control进行表单身份验证。使用IIS Express在本地进行测试时会出现此问题。

当我第一次输入凭证时,没有立即重定向,而是反复弹出一个要求智能卡的窗口。关闭此窗口最终将导致成功登录。

仅在应用程序启动后第一次调用Membership.ValidateUser()时才会发生这种情况。后续登录不会导致它。

单步执行ActiveDirectoryMembershipProvider代码表明,在选择或实例化MembershipProvider时会发生这种情况。解除弹出窗口不会影响身份验证的结果,但应用程序将暂停,直到弹出窗口关闭。

我已阅读过ASP.NET登录控件和ActiveDirectoryMembershipProvider代码,但未找到任何智能卡参考。

因此我认为这种行为的原因不在于代码本身,而是在我第一次尝试连接到AD时也会触发的另一个事件。

什么可能导致这种行为? (隐藏的ASP.NET或IIS Express功能?)

我不想使用任何智能卡身份验证。

弹出窗口属于IIS Express工作进程。

我能找到的唯一与智能卡相关的配置是“ClientCertificateMappingAuthentication”。但它在applicationhost.config中被禁用。

1 个答案:

答案 0 :(得分:0)

目前的解决方法:

  1. 禁用智能卡服务(SCardSvr)
  2. 运行powershell脚本以关闭所有iisexpress弹出窗口
  3.  
    @ECHO OFF
    echo This script kills all iisexpress popups, and can be placed in your autostart directory
    powershell.exe -NoProfile -ExecutionPolicy Bypass -windowstyle hidden -command "while($true) { if(get-process iisexpress) { for (1..20) { (get-process iisexpress).closemainwindow(); Start-Sleep -m 200; } }; Start-Sleep -s 5; }; PAUSE"
    echo Done
    PAUSE