Могу ли я создать веб-службу .net, которая разрешает анонимный доступ, но олицетворяет права пользователя на основе идентификатора пользователя?

У меня есть веб-приложение на сервере IBM WAS (Windows).

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

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

Запрос службы приложения WAS отправляет идентификатор пользователя как часть вызова.

Есть ли способ получить идентификатор пользователя, который передается веб-службе, и ограничить этого пользователя только теми файлами/папками, к которым у него есть доступ, на основе безопасности Windows?

Насколько я знаю, это невозможно, если приложение WAS не может отправить запрос в веб-службу в качестве вошедшего в систему пользователя.

Итак, мой второй вопрос: можно ли передать учетные данные пользователя Windows из приложения WAS в веб-службу?

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


person dtc    schedule 22.05.2009    source источник


Ответы (3)


Предполагая, что у вас есть настройка Active Directory, единственный способ, который я могу придумать для сервера WAS, для отправки учетных данных пользователя, обращающегося к нему, — это если DC распознает службу WAS (то есть учетную запись, на которой запущено ваше приложение WAS) для делегирования. Мы столкнулись с этой проблемой (несколько) здесь. Мы используем учетную запись AD для запуска наших пулов приложений IIS, а затем эта учетная запись AD должна иметь возможность проверять пользователей по AD и подключаться к серверу SQL.

Исправление для нас состояло в том, чтобы зарегистрировать имена сервисных процессов (SPN) для пользователя, работающего с пулом приложений IIS. Это позволяет учетной записи пользователя аутентифицировать пользователей в AD, поскольку AD распознает ее как службу. Затем вы можете следовать традиционным правилам олицетворения .NET, чтобы передать учетные данные. Мне жаль, что я не могу предоставить более конкретную информацию, но я надеюсь, что это, по крайней мере, укажет вам правильное направление.

См.: http://technet.microsoft.com/en-us/library/cc773257.aspx

person Scott Anderson    schedule 22.05.2009

Вот ссылка, чтобы понять анонимный доступ и олицетворение с .NET: Анонимный доступ и олицетворение

person CSharpAtl    schedule 22.05.2009

Нет. Вы можете создать токен удостоверения, но для проверки доступа вам потребуется токен олицетворения, а такой токен можно создать только путем предоставления пароля или путем делегирования от учетной записи, доверенной для делегирования, которой, в свою очередь, был предоставлен пароль (или достаточный доказательство доверия к тому, что первоначальная личность обладает паролем, т. е. AD поручился за него).

Что вам нужно сделать, так это заставить сервер WAS олицетворять вызывающего абонента, а затем вызывать вашу службу под олицетворением. Учетная запись, в которой работает WAS, должна быть настроена на разрешение ограниченного делегирования.

person Remus Rusanu    schedule 22.05.2009