【问题标题】:Validating Security Token issued by STS while calling WCF services在调用 WCF 服务时验证 STS 颁发的安全令牌
【发布时间】:2012-11-01 12:41:01
【问题描述】:

我们扩展了Windows Identity Foundation (WIF) 提供的SecurityTokenService。它按预期发出令牌,并在调用我们拥有的所有其他 WCF 服务时将 SAML 令牌添加到 SOAP 标头中。

我可以在安全令牌中的NotBeforeNotOnOrAfter Saml 条件中看到正确的值。

但令人惊讶的是,即使在NotOnOrAfter Saml 条件中出现的时间戳之后调用服务,对其他 WCF 服务的每次调用也会成功,该条件出现在 SOAP 标头中的安全令牌中。

  1. 我不明白为什么会这样。我是否需要编写一些代码来拒绝安全令牌过期的呼叫?
  2. 我是否需要为其创建自定义绑定或行为?
  3. WIF 或 WCF 不会自动处理这个基本的事情吗?
  4. 如果您能指出一些很好的文档来解释幕后发生的事情,那就太好了!

我正在使用 .NET 4.0

【问题讨论】:

  • 只是猜测:您的 WCF 服务是否使用会话?我不一定希望令牌在会话中间被重新评估以过期。
  • 我们不使用会话...
  • 这是 WS-Federation(网页)还是 WS-Trust(活动客户端)方案?
  • @Grzegorz Wilczura:我们没有任何网页。我们有使用 STS 保护的 WCF 服务。 Client 是一个 WinForm 应用程序,它使用 STS 对用户进行身份验证,获取安全令牌并调用其他 WCF 服务。
  • @Grzegorz Wilczura:使用 .NET 4.0

标签: .net wcf web-services wif sts-securitytokenservice


【解决方案1】:

此验证由SecurityTokenHandler 提供。 使用哪个令牌处理程序取决于您的令牌类型和您的配置。

回答你的观点:

  1. 这取决于令牌处理程序。对于 saml 令牌,这应该为您完成。
  2. 通常 - 没有。
  3. 就像第 1 点一样。
  4. 我亲自反汇编 Microsoft.IdentityModel.dll。

检查您的 web.config 中的 <microsoft.identityModel><service><securityTokenHandlers> 部分。如果它被更改并且您使用自定义处理程序,那么您可能会覆盖SecurityTokenHandler.ValidateToken 中实现的默认行为。 如果没有,那么您必须弄清楚您的令牌类型。如果是 SAML1.1 或 SAML2.0,则应对其进行验证。如果没有,请分享您的令牌类型。

【讨论】:

    【解决方案2】:

    在 ValitTo 日期到期加上 MaxClockSkew 参数的时间后,对 wcf 服务的调用将被拒绝。 您可以通过配置服务来管理这个参数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      • 1970-01-01
      • 2019-05-02
      • 2011-08-22
      • 2011-07-13
      • 1970-01-01
      • 2012-07-06
      相关资源
      最近更新 更多