【发布时间】:2014-07-08 13:37:54
【问题描述】:
我们有一个基于 WIF 的自定义活动 STS。它通常根据客户端请求发布标准安全令牌。在 STS 服务配置中,我们已将 DefaultTokenLifetime 参数设置为 1 分钟。
之后,我们每 15 秒使用应用令牌调用我们的服务器。但是 1 分钟后,我们对服务器的调用成功完成。这是奇怪的行为! 谁必须验证安全令牌的 ValidTo 参数?
在 RP(业务逻辑服务)中验证安全令牌的最佳做法是什么?
统一更新: 看来我们找到了解决方法。 顺便说一句,我们在客户端使用以下代码:
ChannelFactory<ICalculator> calcFactory = new ChannelFactory<ICalculator>( GetClientBinding(), ServiceAddress );
calcFactory.ConfigureChannelFactory();
ICalculator calc = calcFactory.CreateChannelWithIssuedToken(token);
for (int i = 0; i < 300; i++)
{
double sum = calc.Add(40.0, 2.0);
Console.WriteLine("Called. Token ValidTo: {0} but now: {1}", token.ValidTo.ToLongTimeString(), DateTime.UtcNow.ToLongTimeString());
Thread.Sleep(5000);
}
此代码创建一次通道工厂并在每次调用时使用它。 如果我们将在每次调用时创建通道工厂,安全令牌将被正确验证:当令牌过期时,服务调用将不会被验证并会引发安全异常。它的工作,但它是好的做法吗?
谢谢
【问题讨论】:
标签: validation token wif claims-based-identity sts-securitytokenservice