2011-01-09 15 views
10

que quieren decorar ciertos contratos de operación con un atributo para autorizar la persona que llama mediante una lógica personalizada, algo como esto:¿WCF tiene un equivalente del atributo MVC [Authorize]?

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

El [Autorizar] debe comprobar si la persona que llama tiene derecho a llamar a esta operación; si no, debería devolver una falla de error.

Gracias.

Respuesta

20

No fuera de la caja, pero el gurú superior de WCF Juval Löwy tenía un artículo muy interesante en MSDN Magazine sobre Declarative WCF Security que va en la misma dirección.

Juval identificó varios escenarios de seguridad clave, y envolvió cada uno de ellos en un comportamiento de servicio WCF que se aplicará como un atributo en su clase de servicio en el lado del servidor. ¡Una lectura bastante interesante!

+1

Esto no sólo es una buena respuesta, pero estás tan cerca de 100k que se merece una upvote. Rock en! –

+1

"En esta columna, presento mi marco de seguridad declarativo". - gran lectura. – cDima

+0

En resumen, para sus preguntas, el artículo básicamente quiere que use: [PrincipalPermission (SecurityAction.Demand, Role = @ "WindowsRole o CustomRoleName")] Además: https://msdn.microsoft.com/en-us/library/ff647503 .aspx – hidden

3

WCF no tiene ningún atributo especial para este propósito, pero puede usar PrincipalPermissionAttribute: enfoque común para la seguridad declarativa basada en roles en .NET.

Cuestiones relacionadas