【问题标题】:c# library impersonate problemc#库模拟问题
【发布时间】:2011-08-06 11:08:45
【问题描述】:

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

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

网络服务在他的网络配置中使用了模拟方法,如下所示:

 <?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 中添加模拟代码。事实证明,图书馆使用了正确的用户,但请求永远不会结束。你知道有什么问题吗?

【问题讨论】:

    标签: c# web-services impersonation


    【解决方案1】:

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

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

    但是你想在做之前确定这是正确的做法。

    安全是一个棘手的大问题,它可能会转过身来,狠狠地咬你一口。您在此处使用的任何用户都应该是单一用途的。它应该具有您需要的权限,仅此而已。

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

    有一些方法可以在短时间内冒充,这可能会更干净地解决您的问题。我会让真正知道这个答案的人告诉你它是什么。

    【讨论】:

    • 谢谢,我向管理员请求了许可,但你知道,网络人需要很长时间才能做到这一点:P 哈哈,再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    • 1970-01-01
    • 2011-04-25
    • 2012-07-19
    • 2011-11-06
    • 2011-08-24
    • 2015-11-13
    相关资源
    最近更新 更多