我有通过 Active Directory 域获得 Windows 授权的 asp.net mvc 4 web api 站点。其中一部分是api控制器,通过实体框架查询sql server。Asp.net 调整得很好 - 我知道,该用户在 api 方法中被模拟。但是 EF 使用匿名凭据查询数据库。
web.config 的一部分
<authentication mode="Windows" />
<identity impersonate="true" />
<authorization>
<deny users="?" />
</authorization>
部分方法:
var winId = (WindowsIdentity) HttpContext.Current.User.Identity;
WindowsImpersonationContext ctx = null;
try
{
ctx = winId.Impersonate();
var ret = DAL.DBPort.Instance.GetDivisionStructure();
// ret.Name = identy.AuthenticationType.ToString();
return ret;
}
catch (Exception exception)
{
return null;
}
finally
{
if (ctx != null)
{
ctx.Undo();
}
}
我m constantly getting "underlying provider failed to open".
While having impersonation, asp.net still uses anonymous or system account in database connection.
Don
不知道,在这里做什么。