如何在.NetCore WebAPI中获取没有凭据的远程调用者的PrincipalContext?

时间:2019-07-12 15:59:18

标签: c# asp.net-core-webapi

我有一个Web API在公司内部网中的Microsoft服务器上运行。客户端在同一个域内。已禁用匿名身份验证,并在服务器上启用了集成Windows身份验证,并在web.config中启用了身份模拟。

Thread.CurrentPrincipal.IdentityWindowsIdentity.Current显示了客户端的身份验证Windows帐户,这意味着据我了解,appPool中的线程代表有权访问Active Directory的特权客户端用户运行。

但是,问题是PrincipalContext方法仅在将帐户凭据作为参数提供时才返回成功的主体对象。否则,将引发以下异常。

我不是要明确键入凭据。它应该从用户的帐户推断出这显然不会发生。我将非常感谢您的帮助。

var context = new PrincipalContext(ContextType.Domain);

错误:

  

System.DirectoryServices.DirectoryServicesCOMException
  发生操作错误。

     

在System.DirectoryServices.DirectoryEntry.Bind(布尔throwIfFail)
  在System.DirectoryServices.DirectoryEntry.Bind()
  在System.DirectoryServices.DirectoryEntry.get_AdsObject()
  在System.DirectoryServices.PropertyValueCollection.PopulateList()
  在System.DirectoryServices.PropertyValueCollection..ctor(DirectoryEntry条目,字符串propertyName)中
  在System.DirectoryServices.PropertyCollection.get_Item(String propertyName)
  在System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInitNoContainer()
  在System.DirectoryServices.AccountManagement.PrincipalContext.DoDomainInit()
  在System.DirectoryServices.AccountManagement.PrincipalContext.Initialize
  在System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()
  在System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithTypeHelper(PrincipalContext上下文,类型PrincipalType,可为空的1identityType,字符串identityValue,DateTime refDate)
  在System.DirectoryServices.AccountManagement.Principal.FindByIdentityWithType(PrincipalContext上下文,类型PrincipalType,字符串identityValue)中
  在System.DirectoryServices.AccountManagement.UserPrincipal.FindByIdentity(PrincipalContext上下文,字符串identityValue)中
  在Headcount_Backend.Controllers.ActiveDirectoryController.GetUserAD()“,” RemoteStackTraceString“:空,” RemoteStackIndex“:0,” ExceptionMethod“:” 8 \ nBind \ nSystem.DirectoryServices,版本= 4.0.0.0,文化=中性,PublicKeyToken = b03f5f7f11d50a3a3a \ nSystem.DirectoryServices.DirectoryEntry \ nVoid Bind(Boolean)“,” HResult“:-2147016672,” Source“:” System.DirectoryServices“,” WatsonBuckets“:null}

0 个答案:

没有答案