2010-07-28 3 views
0

Может ли кто-то указать мне на [относительно] простую прогулку о том, как правильно настроить службу WCF 4.0, размещенную на ASP.Net, чтобы олицетворять учетные данные вызывающего абонента только для определенных методов службы, но разрешать анонимные доступ к другим методам?Олицетворение клиента WCF

Я много читал об этом в MSDN, но чем больше я читал, тем больше я сбился с толку. Может быть, я просто сумасшедший, но это кажется намного сложнее, чем это должно быть :-(

Я просмотрел сообщения здесь, на SE, но ни один из них не указывает на сквозной образец или учебник . Существует руководящий документ WCF на CodePlex, но это, кажется, безнадежно устарели, и не обновлялся с 2008 года

Любая помощь здесь будет принята с благодарностью.

ответ

1

Это может быть сделано с помощью OperationBehaviorAttribute.Impersonation имущество

[ServiceContract] 
interface ISelectiveImpersonationExample 
{ 
    [OperationContract] 
    void ThisUsesImpersonation(); 

    [OperationContract] 
    void ThisDoesNotUseImpersonation(); 
} 


// Implementation 
class SelectiveImpersonationExampleImpl : ISelectiveImpersonationExample 
{ 
    [OperationBehavior(Impersonation=ImpersonationOption.Required)] 
    public void ThisUsesImpersonation() 
    { 
     // ... 
    } 

    [OperationBehavior(Impersonation=ImpersonationOption.NotAllowed)] 
    public void ThisDoesNotUseImpersonation() 
    { 
     // ... 
    } 
} 

Убедитесь, что вы не устанавливайте значение службы ImpersonateCallForAllOperations в значение true. Если вы это сделаете, функция ThisDoesNotUseImpersonation выкинет InvalidOperationException.

Я продолжаю теорию здесь и на самом деле не сделал это в реальной жизни. Если он не работает, сообщите мне.

+0

Спасибо, я попробую. Однако я нахожу наиболее запутанным, пытается установить правильные параметры конфигурации, чтобы сделать эту работу. Я дам Вам знать. – camainc

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