我一直在寻找这方面的解决方案一段时间,但每个线程不幸的是死路一条。尝试UserPrincipal.FindByIdentity时登录失败错误
我正在研究一个C#/ ASP.net web应用程序,它只能在我们公司内部使用。匿名访问已在IIS和我的web.config文件中关闭,迫使IIS使用Windows身份验证用户(Active Dir用户)。
我的问题是下面的代码完美地工作,以获得所需的(或任何)AD用户:在PrincipalContext使用
using System.DirectoryServices.AccountManagement;
... other code ...
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mydomain", "someADuser", "someADuserpassword");
UserPrincipal winuser = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "samaccountname");
“someADuser”以上是通过窗户登录的用户的电流,从而经过身份验证和有效的AD用户。使用下面的代码(使用完全相同的用户仍然登录)给了我一个“登录失败:未知的用户名或密码错误”的错误:
PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "mydomain");
UserPrincipal winuser = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, "samaccountname");
看来UserPrincipal.FindByIdentity不使用登录用户的如果未在PrincipalContext对象中指定,则由于某种原因验证凭证 - 我不想这样做。
是否有可能将CTX不拾取在Windows用户登录由于某种原因,即使进行必要的设置(我希望)被添加到web.config中:
<authentication mode="Windows"/>
<authorization>
<deny users="?"/>
</authorization>
和匿名访问在IIS中完全禁用?
我米不知道为什么你试图以编程方式做到这一点为什么不使用模拟?那么您可以设置为特定的AD用户?那是你正在尝试做什么? – TheKingDave 2013-04-09 13:34:44
@TheKingDave,我需要从AD获得更多的信息登录用户(帐户锁定/启用,GUID等),因为这个应用程序将托管在服务器上,被许多域访问。希望我明白你的问题并清楚回答? Thx为响应... – KDT 2013-04-09 13:42:54
创建PrincipalContext对象后,“ctx.UserName”是什么? – jadarnel27 2013-04-09 14:02:21