Авторизация в WCF сервисах
У меня реализуется следующая трехзвенная система: CУБД (Postgres) - WCF Service - Windows Client (Win Forms).
1. С аутентификацией проблем нет - так как передать логин и пароль от клиента к службе легко... На стороне службы остается только вызвать и соответствующий метод, чтобы по логину и паролю определить определить кто к ней ломиться...
2. А вот с авторизацией пролема - получив данные по пользвателю мы также опреляем можно ли данному пользователю предоставить доступ. Но как после этого службе объяснить, что с данным клиентом работать нельзя.
Т.е. допустим при аутентификации мы получаем объект Account у которого есть свойство Status и если он не равен 1, то пользователь не должен иметь возможности
вызывать ни один метод службы, кроме аутентификации...
----------------------
В качестве привязки используется - basicHttpBinding (если это имеет значение).
Если служба знает, кто с ней работает, то определить его права - простой запрос в БД, а дальше уже смотреть, можно ли ему делать те или иные действия.
вот допустим есть в контракте метод - GetAllEducationOrganization(), приходит сообщение с запросом этого метода (пользователь вызывает его удаленно proxy.GetAllEducationOrganization()) и этот метод выполниться (с чего бы ему не выполниться) причем для кого угодно,а нужно чтобы только для тех кто аутентифицирован. Но логики проверки аутентифицирован ли пользователь внутри GetAllEducationOrganization быть не должно, сам WCF Service должен это проверить... - вот собсно как его заставить проверять я и спрашиваю...
Например в MSDN на эту тему написано, что-то типа интегрируйтесь с ASP.NET-ом и пользуйтесь его средствами аутентификации и авторизации, но у меня нет такой возможности...
Если в друг кому тоже понадобиться, вот на вот этой странице в MSDN-е внизу страницы есть неплохой пример для Custom-ной авторизации
http://msdn.microsoft.com/ru-ru/library/system.servicemodel.description.principalpermissionmode.aspx
Ещё на одном из форумов хорошую информацию находил, но ссылка затерялась в море информации, которую пришлось перелопатить...