在调用WCF服务时验证STS发出的安全令牌

时间:2012-11-01 12:41:01

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

我们已延长SecurityTokenService(WIF)提供的Windows Identity Foundation。它按预期发出令牌,并在调用我们拥有的每个其他WCF服务时在SOAP头中添加SAML令牌。

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

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

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

2 个答案:

答案 0 :(得分:1)

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

回答你的观点:

  1. 这取决于令牌处理程序。对于saml令牌,这应该为你完成。
  2. 通常 - 否。
  3. 与第1点相似。
  4. 我个人不喜欢Microsoft.IdentityModel.dll。
  5. 检查{。1}}部分的web.config。如果它已更改并且您使用自定义处理程序,则可能会覆盖<microsoft.identityModel><service><securityTokenHandlers>中实现的默认行为。 如果没有那么你必须找出你的令牌类型。如果是SAML1.1或SAML2.0则应验证它。如果没有,请分享您的令牌类型。

答案 1 :(得分:0)

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