访问数据库时,我想要使用一项服务,以访问数据库以使用呼叫身份凭证。
在访问特定数据库之前,我会通过以下方式进行模拟
var winId = HttpContext.Current.User.Identity as WindowsIdentity;
var ctx = winId.Impersonate();
//Access Database
ctx.Undo();
当该服务在我的PC上本地运行时,此方案可以正常工作。但是,当部署在另一台远程PC上时,会出现错误:
用户“ NT Authority \ Anonymous Logon”的登录失败
尝试访问数据库时。
DBAdmin告诉我,SQL Server具有SPN。
服务运行所在的帐户是域帐户。
与您最有可能遇到的问题Delegation
相反Impersonation
。
我假设在您的生产环境中,实际上您的Web浏览器,IIS Server和SQL Server都位于不同的计算机上。
简单模拟不支持Multi-Hop
。
为了支持Multi-Hop
你需要设置Kerberos
有Delegation
。您将必须在上设置SPN
记录Active Directory
。完成此操作后,还需要Delgation
在AD上启用IIS计算机。
简而言之,委派是一大堆蠕虫。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句