WCF RIA авторизация через локальные группы Windows - PullRequest
1 голос
/ 13 сентября 2011

В настоящее время я разрабатываю бизнес-приложение Silverlight на основе WFC RIA (только для внутренней сети) для своей компании. Я столкнулся с парой проблем при попытке авторизации пользователей. Вот ситуация:

Приложение работает в нашем домене Windows и поэтому использует проверку подлинности Windows, которая уже работает хорошо. Доступ к определенным операциям службы домена должен быть ограничен членами определенной группы (скажем, «Администраторы»). Эта группа доступна локально на сервере, на котором размещено приложение, и уже используется для ограничения доступа к экземпляру SQL Server. Невозможно добавить эту группу в домен и сделать ее доступной в глобальном масштабе.

Я знаю, что могу ограничить доступ к методам доменной службы через атрибут RequiresRole[]. Проблема, однако, заключается в том, что членство пользователя в локальной группе не загружается в объект пользователя, доступный через WebContext.Current.User, и, следовательно, авторизация не выполняется.

Есть ли обходной путь или лучший способ сделать это?

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 03 октября 2011

Вы пытались установить атрибут "PrincipalPermission" в методе службы, который хотите ограничить?

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
public string GetResult()
{
   return "result";
}

С уважением, Арьен

0 голосов
/ 04 октября 2011

Я решил свою проблему.

Я скопировал базу данных AspnetDb в экземпляр SQL Server на моем сервере.Эта база данных содержит всю информацию о пользователях, ролях и т. Д. И используется диспетчером ролей ASP.NET для авторизации.Эта база данных обычно находится в папке проекта вашего веб-проекта (внутри каталога App_Data).Чтобы новая конфигурация работала, вам нужно изменить строку подключения внутри вашего Web.config (для более подробной информации: http://weblogs.asp.net/scottgu/archive/2005/08/25/423703.aspx).

Я вручную добавил новых пользователей в базу данных. Имя пользователя, которое вы там вводите, должно совпадатьимя пользователя Windows (например, DOMAIN \ USER_NAME). Затем вы можете добавить новые роли в базу данных и назначить всем своим пользователям определенные роли.

Диспетчер ролей ASP.NET автоматически загружает роли / пользователей в приложение.при запуске, и вы можете ограничить доступ к методам службы вашего домена через атрибут RequiresRole[].

Кроме того, есть также способ динамически отображать / скрывать / включать / отключать пользовательские элементы управления на основе членства в ролях, см. здесь: http://blogs.msdn.com/b/kylemc/archive/2010/05/04/authorization-sample-201.aspx

...