Как принудительно обновить токен безопасности для службы WCF?

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

8
задан Sean Hanley 9 November 2010 в 22:22
поделиться