asp.net олицетворяет себя с сервера в домене на сервер вне домена - PullRequest
2 голосов
/ 10 ноября 2011

Я использую этот код http://platinumdogs.wordpress.com/2008/10/30/net-c-impersonation-with-network-credentials/#comment-770 для подключения с компьютера в домене к компьютеру за пределами домена.

Веб-приложение, которое я написал, подключается с веб-сервера к файлообменнику для удаления файлов.

Моя проблема в том, что я не могу получить правильные учетные данные в одной ситуации. В обоих сценариях, описанных ниже, я использую один и тот же бэкэнд DLL.

У меня есть 2 приложения, использующие этот код. 1 с обоими машинами вне домена и одним с веб-сервером в домене и сервером данных вне домена. Работает код, выполняющийся на сервере, который выполняет запрос от сервера веб-сервера, не входящего в домен, к серверу данных, не являющемуся доменом. Код, который на веб-сервере домена запрашивает сервер данных, не относящийся к домену, не работает.

Для дальнейшей проверки мы вывели сервер домена из домена, и без дальнейших изменений код снова заработал. Похоже, мне нужно что-то изменить (возможно, настройку), чтобы эта работа работала. Кто-нибудь, что мне нужно сделать, чтобы это исправить?

@ ----------- Дополнительная информация по вопросам ниже:

Это статический пароль пользователя, указанный в файле конфигурации. Учетная запись не является учетной записью домена и той же учетной записи, которая используется на другом сервере.

    Request information: 
    Request URL: http://XXX.XXX.XXX.XXX/nl-nl/Attachment/GetAllFileNames 
    Request path: /nl-nl/Attachment/GetAllFileNames 
    User host address: XXX.XXX.XXX.XXX 
    User:  
    Is authenticated: False 
    Authentication Type:  
    Thread account name: NT AUTHORITY\NETWORK SERVICE 

    Thread information: 
    Thread ID: 1 
    Thread account name: NT AUTHORITY\NETWORK SERVICE 
    Is impersonating: False 
    Stack trace:    at System.Web.Mvc.ViewResult.FindView(ControllerContext context)
   at System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context)
       at System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult)
     at System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName)
     at System.Web.Mvc.Controller.ExecuteCore()
     at System.Web.Mvc.ControllerBase.Execute(RequestContext requestContext)
     at System.Web.Mvc.ControllerBase.System.Web.Mvc.IController.Execute(RequestContext requestContext)
     at System.Web.Mvc.MvcHandler.<>c__DisplayClass6.<>c__DisplayClassb.<BeginProcessRequest>b__5()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass1.<MakeVoidDelegate>b__0()
   at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _)
   at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End()
   at System.Web.Mvc.MvcHandler.<>c__DisplayClasse.<EndProcessRequest>b__d()
   at System.Web.Mvc.SecurityUtil.<GetCallInAppTrustThunk>b__0(Action f)
   at System.Web.Mvc.SecurityUtil.ProcessInApplicationTrust(Action action)
   at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult)
   at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result)
   at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

1 Ответ

2 голосов
/ 10 ноября 2011

Я нашел проблему.

При подключении с сервера домена я должен использовать logon_type_new_credentials (9) вместо интерактивного (2).

...