Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WCF, Web Services, Remoting Новый топик    Ответить
 кэширование токена (пользовательского маркера) у WCF клиента  [new]
Кифирчик
Member

Откуда: СПб
Сообщений: 909
Господа, спасите, 2й день взрываю мозг

есть некоторый WCF клиент (wsHttpBinding + сертфикат + кастомная авторизация по логину и паролю)
            using (LoginTestClient proxy1 = new LoginTestClient())
            {
                proxy1.ClientCredentials.UserName.UserName = "1";
                proxy1.ClientCredentials.UserName.Password =  "";
                Console.WriteLine(proxy1.Fun2());
            }

чудесно работает, но при подобном использовании (using) при каждом вызове дергается авторизация

как я понял из гугления, решением проблемы будет token caching или durable token. При котором, при первом вызове происходит авторизация, токен запоминается (кэшируется) и при последующем создании клиента - вытягивается из кэша без повторной авторизации.

нашел два подходящих решения
http://msdn.microsoft.com/en-us/library/aa717045.aspx и http://weblogs.asp.net/cibrax/archive/2006/03/27/441227.aspx
По сути оба одно и тоже, и нифига не получается заставить это работать.
успешно подтягивается кастомный clientCredentials
но в функции
        public override SecurityTokenProvider CreateSecurityTokenProvider(SecurityTokenRequirement tokenRequirement)
        {
            if (IsIssuedSecurityTokenRequirement(tokenRequirement))
            {
                return new DurableSecurityTokenProvider(
                    (IssuedSecurityTokenProvider) base.CreateSecurityTokenProvider(tokenRequirement)
                    , this.cache);
            }
            else
            {
                return base.CreateSecurityTokenProvider(tokenRequirement);
            }
        }


всегда попадаю на строчку return base.CreateSecurityTokenProvider(tokenRequirement);
игнорится обращение к кэшу.
IsIssuedSecurityTokenRequirement(tokenRequirement) всегда false

Как заставить клиента использовать кэш?
всякие ClientCredentials.IssuedToken.CacheIssuedTokens = true; - не помогают(((

Что я делаю не так?
в приложении солюшн для VS12 с тестовым приложением

К сообщению приложен файл (WcfLoginTest.zip - 62Kb) cкачать
6 сен 13, 13:36    [14804288]     Ответить | Цитировать Сообщить модератору
Все форумы / WCF, Web Services, Remoting Ответить