Есть ли в WCF эквивалент атрибута [Authorize] MVC? - PullRequest
11 голосов
/ 09 января 2011

Я хочу украсить определенные Операционные контракты атрибутом для авторизации вызывающего абонента с помощью пользовательской логики, что-то вроде этого:

[ServiceBehavior]
public class Service1
{
    [OperationContract]
    [Authorize] // ?? this should make sure only admins can call this method
    public List<SampleItem> GetCollection()
    {
        return new List<SampleItem>() { new SampleItem("Only Admins see me") };
    }
}

[Авторизовать] должен проверить, имеет ли вызывающий абонент право вызывать эту операцию;если нет - должно возвращаться сообщение об ошибке.

Спасибо.

Ответы [ 3 ]

21 голосов
/ 09 января 2011

Не из коробки - но топ-гуру WCF Ювал Леви написал в журнале MSDN очень интересную статью о декларативной безопасности WCF , которая идет в том же направлении.

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

3 голосов
/ 09 января 2011

WCF не имеет специальных атрибутов для этой цели, но вы можете использовать PrincipalPermissionAttribute - общий подход для декларативной безопасности на основе ролей в .NET.

2 голосов
/ 10 января 2011

В моем приложении WCF я в значительной степени переопределил все средства аутентификации и авторизации по умолчанию, и я использую некоторую пользовательскую обработку PrincipalPermissionAttribute для проверки своих пользовательских разрешений безопасности.

У меня есть некоторые фрагменты кода того, как я это сделал в этом посте: .NET. Декларативная безопасность: почему с SecurityAction.Deny невозможно работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...