我可以配置DotNetOpenAuth请求令牌到期吗?

时间:2012-05-10 14:15:04

标签: c# asp.net oauth dotnetopenauth oauth-provider

在我们的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",但这似乎并没有影响我的目标。

1 个答案:

答案 0 :(得分:2)

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

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

    <dotNetOpenAuth>
        <oauth>
            <serviceProvider>
                <security maxAuthorizationTime="00:05:00"/>
            </serviceProvider>
        </oauth>
    </dotNetOpenAuth>