У меня есть служба WCF, для которой требуется маркер безопасности, выданный отдельной службой WCF STS. Это все работает просто денди. В своем приложении я использую эту службу следующим образом:
MyServiceClient myService = new MyServiceClient();
myService.Open();
myService.DoStuff();
Служба STS вызывается для получения токена, и этот токен используется для вызова метода службы DoStuff.
Однако после завершения первоначального рукопожатия ] объект myService
кэширует токен и повторно использует его, пока не истечет срок его действия. Это нормальное поведение и все такое, но как мне заставить его обновить токен?
myService.ClientCredentials.Invalidate(); // something like this?
Чтобы, если бы я снова вызвал DoStuff (), он бы знал, что ему нужно снова обратиться к STS, как и в первый раз.
Я застрял только в создании нового объекта прокси-класса, например myService = new MyServiceClient ();
? Это работает, но похоже на решение ядерной бомбы.
В качестве альтернативы, есть ли способ просто вручную получить новый токен и заменить текущий, например myService.ClientCredentials.Renew ();
?
Если мне нужно создать для этого собственный класс ClientCredentials, как мне реализовать приведенные выше примеры методов?