Что позволяет имени пользователя аутентификации Windows работать (проходить) между двумя серверами? - PullRequest
4 голосов
/ 19 февраля 2009

Типичная настройка интернет-провайдера. Один сервер - это веб-сервер, другой - сервер БД SQL. Существует локальная учетная запись администратора, скажем, XYZ, созданная на обеих машинах. Поэтому при удаленном входе в систему я либо WebServer \ XYZ, либо DBServer \ XYZ, в зависимости от того, где я вхожу.

Теперь, когда я вхожу в систему SSMS SQL Server на DBServer с использованием аутентификации Windows и выполняю «SELECT SUSER_NAME ()», я получаю DBServer \ XYZ. Это имеет смысл, поскольку обнаруживает тот факт, что я вошел в систему с этими учетными данными.

Теперь перейдите к веб-серверу. Я удаленно войти в систему как WebServer \ XYZ. Я установил клиентские компоненты SQL там. Когда я запускаю SSMS, выбираю DBServer, регистрируюсь с аутентификацией Windows и выполняю «SELECT SUSER_NAME ()», я как-то получаю DBSERVER \ XYZ, вместо того, что я бы предположил, должно быть WebServer \ XYZ.

Каким-то образом XYZ из WebServer становится XYZ из DBServer. Это почему? Как это происходит? Конечно, это не может быть просто потому, что имена совпадают?

Я слышал о доверенных доменах, но ни одна из них не является контроллером домена, поэтому у меня нет доступа к этой информации. Как я могу узнать, доверяют ли они или нет, без инструментов GUI?

Причина, по которой я задаю этот вопрос, заключается в том, что я пытаюсь реализовать то же самое на своем ноутбуке с XP (используя Virtual PC), чтобы я мог имитировать производственную среду, но мне не повезло.

Ответы [ 2 ]

3 голосов
/ 19 февраля 2009

Проблема NTLM между машинами немного сложнее, указывает @Quassnoi, но она похожа. Машины вполне могут находиться в одном и том же домене или в доверенных доменах, но используемые вами учетные записи являются учетными записями локальных компьютеров, ограниченные областью управления безопасным доступом локального компьютера.

Локальные учетные записи SAM с шаблоном имя_компьютера \ ID пользователя не подлежат распространению. При попытке аутентификации на внешних ресурсах с использованием этой учетной записи вы столкнулись с рядом непредвиденных ситуаций следующим образом:

  1. Передать текущий хеш-токен домена / имени пользователя / пароля - произойдет сбой, учетной записи не доверяют
  2. Откат - отменить хэш UserID + пароль
  3. Откат - вернуться к подключению в качестве анонимных учетных данных.

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

Как @Quassnoi указывает, что в этом случае вам удалось войти в систему, используя запасной вариант # 2.

Чтобы разрешить распространение учетных данных учетной записи, вам потребуется следующее:

  1. машины должны быть членами доменов с как минимум односторонним доверием друг к другу (они не обязательно должны быть членами одного домена).
  2. использование учетных записей домена - не учетных записей локального компьютера - будет выглядеть примерно так: имя_домена \ идентификатор пользователя. Особый случай - учетная запись сетевой службы, у которой в сценарии домена есть учетная запись-посредник - domainname \ machinename $.

Как узнать, является ли ваша машина членом домена? Это довольно легко, если у вас есть интерактивный вход в систему для машин. Есть несколько стратегий

  1. интерактивно Панель управления системой покажет членство в рабочей группе или домене. (Щелкните правой кнопкой мыши свойства на компьютере в меню «Пуск»)
  2. в командной строке IPCONFIG /ALL также покажет префикс DNS по умолчанию, который обычно совпадает с именем вашего домена.

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

3 голосов
/ 19 февраля 2009

У вас XYZ учетные записи, кажется, имеют одинаковые пароли на обеих машинах, и они не являются частью домена.

WebServer отправляет только XYZ в качестве имени пользователя и успешно отвечает на все вызовы пароля, так как пароли совпадают.

DbServer, конечно, думает о вас как о DbServer/XYZ, поскольку не знает других.

Точно так же происходит, когда вы пытаетесь получить доступ к одному автономному компьютеру с другого через SMB. Если ваши имена пользователей и пароли совпадают, вы добились успеха.

...