Tengo un servicio WCF que requiere un token de seguridad emitido por un servicio WCF STS separado. Todo esto funciona muy bien. En mi solicitud, yo uso el servicio de este modo:¿Cómo fuerzo una actualización del token de seguridad para un servicio WCF?
MyServiceClient myService = new MyServiceClient();
myService.Open();
myService.DoStuff();
El Servicio STS se llama para obtener una ficha y la ficha se utiliza para llamar al método de servicio DoStuff.
Una vez que finaliza el protocolo de enlace inicial, el objeto myService
tiene el token en caché y lo vuelve a utilizar hasta que caduque. Este es un buen comportamiento y todo, pero ¿cómo lo haría forzar para actualizar el token?
myService.ClientCredentials.Invalidate(); // something like this?
De tal manera que si llamaba a DoStuff() de nuevo se sabría que tiene que ir a la STS de nuevo tanto como lo hizo la primera vez.
¿Estoy atascado simplemente haciendo un nuevo objeto de clase proxy, es decir, myService = new MyServiceClient();
? Esto funciona pero parece ser la solución de la bomba nuclear.
Alternativamente, ¿hay alguna forma de obtener manualmente un nuevo token y reemplazar el actual, es decir, myService.ClientCredentials.Renew();
?
Si tengo que hacer una clase ClientCredentials personalizada para hacer esto, ¿cómo implementaría los métodos de ejemplo anteriores?