Principal atributo de permiso en el contrato de servicio

¿Hay alguna razón técnica por la que no se pueda colocar un Permiso Principal en una interfaz de contrato de servicio? Solo funciona en la clase que implementa el contrato o directamente en los métodos de la clase.

Esto no funciona.

[ServiceContract]
public interface IMyService
{
    [PrincipalPermission(SecurityAction.Demand, Role="Admin")]
    [OperationContract]
    void MyFunction(string str);
}

Pero funciona si coloco el atributo en el método correspondiente en la clase que implementa IMyService.

Respuestas a la pregunta(2)

Su respuesta a la pregunta