在我们的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"
,但这似乎并没有影响我的目标。
答案 0 :(得分:2)
可能产生此错误的两个因素是:
IServiceProviderTokenManager.GetRequestToken
会抛出KeyNotFoundException
或者dotNetOpenAuth/oauth/serviceProvider/security/@maxAuthorizationTime
设置中指定的超时。例如:
<dotNetOpenAuth>
<oauth>
<serviceProvider>
<security maxAuthorizationTime="00:05:00"/>
</serviceProvider>
</oauth>
</dotNetOpenAuth>