我有一个 WCF 服务,它需要由单独的 WCF STS 服务颁发的安全令牌。这一切都只是花花公子。在我的应用程序中,我像这样使用该服务:
MyServiceClient myService = new MyServiceClient();
myService.Open();
myService.DoStuff();
调用 STS Service 获取令牌,并使用令牌调用服务方法 DoStuff。
但是,一旦初始握手结束,myService
对象就会缓存令牌并重新使用它,直到它过期。这是很好的行为,但我将如何强制它刷新令牌?
myService.ClientCredentials.Invalidate(); // something like this?
这样,如果我再次调用 DoStuff(),它就会知道它需要再次访问 STS,就像第一次那样。
我是否只是制作一个新的代理类对象,即myService = new MyServiceClient();
?这行得通,但它似乎是核弹解决方案。
或者,有没有办法手动获取新令牌并替换当前令牌,即myService.ClientCredentials.Renew();
?
如果我必须创建一个自定义 ClientCredentials 类来执行此操作,我将如何实现上述示例方法?