0

在我们的 API 中,我们实现了 DotNetOpenAuth (v3.4.7)。我们经常收到异常“服务提供者无法识别消息中的令牌”,以及此堆栈跟踪:

   at DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol(Boolean condition, String message, Object[] args)
   at DotNetOpenAuth.Messaging.ErrorUtilities.ThrowProtocol(String message, Object[] args)
   at DotNetOpenAuth.OAuth.ChannelElements.TokenHandlingBindingElement.VerifyThrowTokenTimeToLive(ITokenContainingMessage message)
   at DotNetOpenAuth.OAuth.ChannelElements.TokenHandlingBindingElement.ProcessIncomingMessage(IProtocolMessage message)
   at DotNetOpenAuth.Messaging.Channel.ProcessIncomingMessage(IProtocolMessage message)

就在最近,我发现当人们花费太长时间授权他们的请求令牌时会引发此异常。所以授权过程的第1步和第2步之间的时间太长了。

这个时间可以在 web.config 中或以编程方式配置吗?

注意:我试过messaging lifetime="00:30:00"了,但这似乎并没有影响我的目标。

4

1 回答 1

2

可能产生此错误的两个因素:

  1. IServiceProviderTokenManager.GetRequestToken抛出KeyNotFoundException, 或
  2. 令牌早于 web.config 文件dotNetOpenAuth/oauth/serviceProvider/security/@maxAuthorizationTime设置中指定的超时时间。

例如:

<dotNetOpenAuth>
    <oauth>
        <serviceProvider>
            <security maxAuthorizationTime="00:05:00"/>
        </serviceProvider>
    </oauth>
</dotNetOpenAuth>
于 2012-05-11T03:39:50.133 回答