Мне нужно создать пользовательскую аутентификацию/авторизацию в существующей службе WCF, которая должна быть для каждого метода: некоторые методы должны заставить пользователя войти в систему, а другие должны разрешить анонимное использование. Услуга реализована как singleton.Конфигурация WCF с использованием идентификатора сеанса связи
Чтобы сделать это, я хочу сделать следующее:
- позволяют сеансы с поведением по умолчанию, так что каждый из существующих методов обслуживания будет инициировать сеанс в случае, если она не существует;
- add login (имя_пользователя, пароль) метод, который сохранит успешный артефакт входа в обертке вокруг
Dictionary<>
, с текущим идентификатором сеанса, используемым в качестве ключа; - добавить
logout()
метод, который закрывает сеанс и удаляет артефакт из словаря; - добавить сессионный монитор, который будет использовать
Dictionary<SessionId, WeakReference<OperationContext.Current>>
для сеансов сбрасывания, для которых методlogout()
не был вызван. Монитор будет выполняться каждый раз, когда будет добавлен новый сеанс.
Есть два вопроса, хотя:
- Есть более простой способ достичь в-метод аутентификации?
- Есть ли проблемы с этим подходом?