2009-06-23 3 views
1

Я пишу службу WCF, которая разрешает доступ к операциям на основе группы пользователей AD. Если зарегистрированный пользователь является частью groupA, разрешите ему сделать operationA, но не operationB и так далее. Теперь для этого я должен пройти NetworkCredentials к службе какСлужба WCF с аутентификацией Active Directory

factory.Credentials.Windows.AllowedImpersonationLevel = 
        TokenImpersonationLevel.Identification; 
factory.Credentials.Windows.AllowNtlm = true; 
factory.Credentials.Windows.ClientCredential.username = "username"; 
factory.Credentials.Windows.ClientCredential.password = "pwd"; 
factory.Credentials.Windows.ClientCredential.domain = "mycompany.com"; 

Я хочу, чтобы пользователю не нужно вводить свои учетные данные для вызова операции службы. Он должен принимать от Thread.CurrentPrincipal. Может ли кто-нибудь помочь мне в этом отношении о том, как передавать сетевые учетные данные.

ответ

2

Почему бы вам просто не указать режим безопасности для обеспечения безопасности Windows? Это значение по умолчанию связано с привязкой net.Tcp и wsHttp - учетные данные Windows текущего пользователя будут отправляться по сети на сервер.

Не нужно явно устанавливать эти учетные данные снова, действительно.

+0

Вы имеете в виду, что я должен просто удалить вышеуказанный код с моего клиента? Если да, он все равно берет учетную запись ASPNET в качестве учетных данных по умолчанию. Можете ли вы отправить сообщение в каком-то коде, чтобы помочь мне? Спасибо за ответ. – Ashish

+0

AHA - ASP.NET - вы не упомянули об этом в своем оригинальном POST! –

+0

Это зависит от того, как вы настроили ASP.NET - если вы подключаетесь к вашему сайту ASP.NET анонимно, вы «потеряете» свои учетные данные, и ASP.NET подключится к вашему сервису WCF со своими учетными данными. Если вы настроили проверку подлинности Windows для приложения ASP.NET (в диспетчере IIS), вы, должно быть, все в порядке. –