Если вы не хотите зависеть от ASP.NET, вам не следует использовать какой-либо сеанс
Что я мог бы посоветовать:
Использовать UserNameValidator, так что вам нужно отправлять имя пользователя / пароль при каждом запросе к сервису wcf (в Интернете много статей о том, как настроить UserNameValidator)
Реализация IAuthorizationPolicy гдеВы можете получить пользовательские данные, чтобы установить роли и т. д. Этот объект создается один раз, а затем используется повторно
Проблема в том, что если вы используете только эти 2 компонента, вам нужно будет извлечь данныедля каждого запроса вы не можете перенести имя пользователя из UserNameValidator в IAuthorizationPolicy. Во избежание этого вам необходимо реализовать полный механизм аутентификации в WCF.Это совсем не сложно, и вот очень хорошая ссылка, которая поможет мне сделать это за 1 или 2 часа:
http://www.neovolve.com/post/2008/04/07/wcf-security-getting-the-password-of-the-user.aspx
«PasswordAuthorizationPolicy» (по ссылке выше)создается один раз, затем используется повторно.И для каждого запроса вызывается метод Evaluate.
Это означает, что вы можете добавить любое пользовательское свойство в этот класс, заполнить их в конструкторе и затем использовать их навсегда.Вам не нужно управлять этим временем жизни кэша, так как он привязан к клиентскому каналу, поэтому, как только клиент закроет соединение, канал истечет, все эти данные будут удалены из памяти