Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Авторизация в WCF сервисах

279
14 ноября 2009 года
bave
456 / / 07.03.2004
Покапался для начала в MSDN на тему безопасности WCF-служб - по авторизации там шишь да маленько, по аутентификации вариантов полно, но ни один мне не подходит.

У меня реализуется следующая трехзвенная система: CУБД (Postgres) - WCF Service - Windows Client (Win Forms).

1. С аутентификацией проблем нет - так как передать логин и пароль от клиента к службе легко... На стороне службы остается только вызвать и соответствующий метод, чтобы по логину и паролю определить определить кто к ней ломиться...
2. А вот с авторизацией пролема - получив данные по пользвателю мы также опреляем можно ли данному пользователю предоставить доступ. Но как после этого службе объяснить, что с данным клиентом работать нельзя.

Т.е. допустим при аутентификации мы получаем объект Account у которого есть свойство Status и если он не равен 1, то пользователь не должен иметь возможности
вызывать ни один метод службы, кроме аутентификации...
----------------------

В качестве привязки используется - basicHttpBinding (если это имеет значение).
5
14 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Если служба знает, кто с ней работает, то определить его права - простой запрос в БД, а дальше уже смотреть, можно ли ему делать те или иные действия.
279
14 ноября 2009 года
bave
456 / / 07.03.2004
Я это и написал. Получение данных о пользователе из БД, в том числе можно ли ему предоставить доступ получить проблем нет, как после этого службе запретить работать с этим пользователем.

вот допустим есть в контракте метод - GetAllEducationOrganization(), приходит сообщение с запросом этого метода (пользователь вызывает его удаленно proxy.GetAllEducationOrganization()) и этот метод выполниться (с чего бы ему не выполниться) причем для кого угодно,а нужно чтобы только для тех кто аутентифицирован. Но логики проверки аутентифицирован ли пользователь внутри GetAllEducationOrganization быть не должно, сам WCF Service должен это проверить... - вот собсно как его заставить проверять я и спрашиваю...

Например в MSDN на эту тему написано, что-то типа интегрируйтесь с ASP.NET-ом и пользуйтесь его средствами аутентификации и авторизации, но у меня нет такой возможности...
279
15 ноября 2009 года
bave
456 / / 07.03.2004
Покопаться пришлось основательно, но вроде все получилось! :)

Если в друг кому тоже понадобиться, вот на вот этой странице в MSDN-е внизу страницы есть неплохой пример для Custom-ной авторизации
http://msdn.microsoft.com/ru-ru/library/system.servicemodel.description.principalpermissionmode.aspx

Ещё на одном из форумов хорошую информацию находил, но ссылка затерялась в море информации, которую пришлось перелопатить...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог