2010-01-29 5 views
1

У меня есть веб-служба .NET WCF, которая будет раскрывать некоторые методы для создания/обновления уведомлений по электронной почте для разных контактов. Веб-сервис будет жить за брандмауэром..NET WCF-разрешения

Мой страх, что если мы подвергаем вызов, как:

bool SetAlertTemplate(int alertId, int templateId); 

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

Даже если я использую:

bool SetAlertTemplate(int alertId, int contactId, int templateId); 

Это может создать проблемы в будущем, если мы разоблачить WebService общественности. Там, где кто-либо может изменить какое-либо предупреждение.

Каков наилучший способ открыть веб-сервис и убедиться, что у клиента есть разрешения на модификацию оповещения contactId и переадресовать эти параметры при каждом вызове.

ответ

1

Настройте службу WCF, чтобы перевести аутентифицированного пользователя в соответствующий IPrincipal экземпляр. Это гарантирует, что в остальной части стека вызовов Thread.CurrentPrincipal будет представлять аутентифицированного пользователя.

Из вашего описания кажется, что вам необходимо защитить активы (предупреждения), а это значит, что вам нужно будет реализовать Списки контроля доступа (ACL) для активов.

Всякий раз, когда кто-либо пытается изменить актив, вы можете проверить, разрешено ли Thread.CurrentPrincipal изменять этот конкретный актив в соответствии с его ACL.

Похожие ответы: