c#库冒充问题

时间:2011-04-15 15:52:54

标签: c# web-services impersonation

我正在开发一个由其他人编码的网站。该应用程序包含三个层。网站,网络服务和图书馆。 Web服务可用于其他应用程序以调用方法和所有内容。工作人员使用该网站执行查询和所有内容。

问题是:网站使用使用库的Web服务而不是直接访问库。我想删除Web服务使用并立即使用库。不幸的是,当直接从网站调用时,库无法连接外部服务器。

Web服务在其Web配置中使用了impersonate方法,如下所示:

 <?xml version="1.0"?>
<configuration>
<appSettings/>
<connectionStrings/>
<system.web>
  <compilation defaultLanguage="c#" debug="true" />
  <authorization>
    <allow users="*" />
  </authorization>
  <authentication mode="Windows" />
  <identity
  impersonate="true"
  userName="USERNAME_HERE"
  password="PASSWORD_HERE" />
  <sessionState
      mode="InProc"
      stateConnectionString="tcpip=10.96.8.37:42424"
      sqlConnectionString="data source=10.96.8.37;Trusted_Connection=yes"
      cookieless="false"
      timeout="20" />
</system.web>

当Web服务使用库时,库标识将成为web.config中指定的用户名。但是当我直接从网站上调用它时,用户结果是:MY_COMPUTER \ ASPNET

我如何在图书馆内成功模仿?

谢谢!

修改

好的,我想在网站的web.config中添加模拟代码。原来,该库使用了正确的用户,但请求需要永远,永远不会结束。你知道什么可能是错的吗?

1 个答案:

答案 0 :(得分:2)

乍一看,您可以在交易网站的web.config中使用这些条目。

<authorization>
  <allow users="*" />
</authorization>
<authentication mode="Windows" />
<identity
impersonate="true"
userName="USERNAME_HERE"
password="PASSWORD_HERE" />

然而你希望在做之前确定这是正确的做法。

安全是一个棘手的棘手问题,可以扭转局势,让你陷入困境。您在此处使用的用户应该是单一目的。它应该具有您需要的权限,而不是更多。

为什么不能在外部服务器上授予MY_COMPUTER \ ASPNET用户权限?

有很多方法可以在短时间内冒充,这可能会更清楚地解决您的问题。我会让那些真正了解答案的人告诉你它是什么。