У меня есть служба 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, как мне реализовать приведенные выше примеры методов?