c # библиотека олицетворяет проблему - PullRequest
0 голосов
/ 15 апреля 2011

Я работаю над сайтом, который был закодирован кем-то другим. Приложение содержит три слоя. Сайт, веб-сервис и библиотека. Веб-сервис предназначен для других приложений для вызова методов и всего остального. Веб-сайт используется работниками для выполнения запросов и всего остального.

Проблема в том, что веб-сайт использует веб-сервис, который использует библиотеку, вместо того, чтобы идти прямо в библиотеку. Я хочу удалить использование веб-службы и сразу использовать библиотеку. К сожалению, библиотека не может подключиться к внешнему серверу при вызове напрямую с веб-сайта.

Веб-сервис использовал метод олицетворения в своей веб-конфигурации следующим образом:

 <?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.config. Но когда я звоню с веб-сайта напрямую, пользователь оказывается: MY_COMPUTER \ ASPNET

Как я могу успешно подражать в самой библиотеке?

Спасибо!

EDIT

Хорошо, я подумал о добавлении имперсонального фрагмента кода в web.config веб-сайта. Оказалось, что библиотека использовала правильного пользователя, но запрос длится вечно и никогда не заканчивается. Вы знаете, что может быть не так?

1 Ответ

2 голосов
/ 15 апреля 2011

На первый взгляд, вы можете использовать эти записи в web.config вашего транзакционного сайта.

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

Однако вы хотите быть уверены, что это правильное действие, прежде чем вы это сделаете.

Безопасность - это большая непростая проблема, которая может развернуться и довольно сильно укусить вас за задницу. Какой бы пользователь вы здесь ни использовали, он должен быть единственной целью. Он должен иметь именно те разрешения, которые вам нужны, и не более.

Почему вы не можете дать пользователю MY_COMPUTER \ ASPNET разрешения на внешний сервер?

Есть способы выдать себя за короткое время, которые, вероятно, решат вашу проблему более чисто. Я позволю тому, кто действительно знает этот ответ, рассказать вам, что это такое.

...