Есть несколько вещей, которые вы можете сделать.
1) Ограничьте доступ к веб-сервисам, к которым это призывается - ответ Давиде прекрасно охватывает это.
2) Ограничить доступ к веб-сайту, где есть приложение SL, которое легко сделать с ASP.NET и встроенной поддержкой проверки подлинности Windows с помощью MembershipProvider. Таким образом, пользователь не может даже загрузить HTML-страницу, на которой размещается приложение Silverlight, если они не в правильной роли. Это также помешало бы им устанавливать приложение как Out of Browser, поскольку они никогда не смогут добраться до него в первую очередь.
3) В режиме OOB приложения (когда Application.Current.IsRunningOutOfBrowser
является истинным) при запуске вызова в веб-службу, которая проверяет, что пользователь находится в правильной роли - если это не так, приложение может просто перевернуть " не авторизованы ", а не показывают реальную функциональность приложения.
Таким образом, если пользователь когда-либо был в роли и установил приложение OOB, но затем потерял это разрешение, они все равно не смогут использовать это приложение.
Что касается реализации всего этого, я предлагаю посмотреть службы WCF RIA. Он имеет отличную поддержку аутентификации/авторизации, которая должна упростить ее реализацию, даже если вы не хотите использовать службы RIA для доступа к данным по любой причине (хотя я рекомендую это также, это помогает скрыть большую сложность асинхронных данных Silverlight доступ).