2011-01-09 16 views
10

Chcę ozdobić niektóre zamówienia Praca z atrybutu do autoryzacji rozmówcy przez zwyczaj logiki, coś takiego:Czy WCF ma odpowiednik atrybutu [Authorize] MVC?

[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") }; 
    } 
} 

Sieć [Autoryzacja] należy sprawdzić, czy rozmówca ma prawo zwrócić się ta operacja; jeśli nie - powinien zwrócić błąd błędu.

Dzięki.

Odpowiedz

20

Nie po wyjęciu z pudełka - ale czołowy guru WCF Juval Löwy miał bardzo interesujący artykuł w MSDN Magazine o numerze Declarative WCF Security, który zmierza w tym samym kierunku.

Juval zidentyfikował kilka kluczowych scenariuszy zabezpieczeń i opakował każdy z nich w zachowanie usługi WCF, które ma być stosowane jako atrybut w klasie usług po stronie serwera. Całkiem interesująca lektura!

+1

Czy to dobra odpowiedź Nie tylko, ale jesteś tak blisko do 100k, które zasługują na upvote. Ruszaj! –

+1

"W tej kolumnie przedstawiam moje deklaratywne ramy bezpieczeństwa." - Świetna lektura. – cDima

+0

Podsumowując pytania, artykuł w zasadzie chce, abyś użył: [PrincipalPermission (SecurityAction.Demand, Role = @ "WindowsRole lub CustomRoleName")] Dodatkowo: https://msdn.microsoft.com/en-us/library/ff647503 .aspx – hidden

3

WCF nie ma żadnego specjalnego atrybutu w tym celu, ale można użyć PrincipalPermissionAttribute - wspólnego podejścia do deklaratywnych zabezpieczeń opartych na rolach w .NET.

Powiązane problemy