2009-07-23 4 views
0

У меня есть проект клиент/сервер, связанный с WCF (Именованные каналы на данный момент, но это может измениться, но я не могу использовать IIS). Этот проект интегрирован с Active Directory.Аутентификация Windows, пользовательские разрешения, WCF, Active Directory

Эта программа предназначена для предоставления пользователям разрешений, которые обычно не имеют прав доступа, действуя как своего рода прокси. Пользователь использует клиент для «запроса» задачи, которая должна быть выполнена. Затем сервер выполняет задачу для клиента, пока выполняются определенные критерии.

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

Как использовать проверку подлинности Windows, чтобы гарантировать 100%, что пользователь является тем, кем они себя называют?

Спасибо заранее,

Майк

ответ

0

only allowed type of authentication для Named Pipes является проверка подлинности Windows (прокрутите вниз до netNamedPipeBinding). Вы можете сделать impersonation declareatively, например ...

[OperationBehavior(Impersonation = ImpersonationOption.Required)] 
public string GetData(int value) 
{ 
    return string.Format("Hi, {0}, you have entered: {1}", 
          WindowsIdentity.GetCurrent().Name, value); 
} 

После того как вы личность, вы знаете, что Windows, должным образом проверку подлинности этого пользователя, и вы можете проверить, что личность против того, что у вас есть в вашей БД.

+0

Требуется ли код олицетворения? Мне действительно нужно выполнить задачу как совершенно другой пользователь, чем тот, который был запрошен. Просто нужно проверить свои учетные данные против моей базы данных, прежде чем продолжить. Это сделает это? –

+0

Вам нужно только олицетворение, чтобы получить личность вызывающего. Если вы получите текущую идентификационную информацию Windows без олицетворения, вы получите личность учетной записи, под которой работает служба. Вам нужно только проверить, получить имя и вернуть имя из своего метода. Вам не нужно выполнять работу в методе, который олицетворяет вызывающего абонента (на самом деле это то, чего вы не хотите делать). –

Смежные вопросы