【问题标题】:Who have to validate STS security token lifetime谁必须验证 STS 安全令牌的生命周期
【发布时间】: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


    【解决方案1】:

    IIRC,WIF 使用 5 分钟的时钟偏差来适应机器时钟。这可以解释为什么您的令牌在 1 分钟到期后仍然被接受。

    【讨论】:

    • Allen,我们的客户端、服务器和运行在本地计算机上的 sts。但我尝试将 ServiceConfiguration.MaxClockSkew 设置为 1 秒 - 没有结果
    猜你喜欢
    • 2019-06-17
    • 1970-01-01
    • 1970-01-01
    • 2015-01-08
    • 2017-07-25
    • 2011-05-02
    • 2020-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多