我正在尝试在以下网络服务中实施OAuth:
http://www.codeproject.com/Tips/372422/Secure-WCF-RESTful-service-using-OAUTH
每次,当Authenticate方法触发时,WebOperationContext.Current.IncomingRequest
都存在,但UriTemplateMatch
为空。使用WCF测试客户端时甚至就是这种情况,因此我的客户端应用程序不是问题。最后,我需要访问QueryParameters
下的UriTemplateMatch
。
在Authenticate
方法中,这是代码中断的地方:
NameValueCollection pa = context.UriTemplateMatch.QueryParameters;
寻找与此不同的解决方案,以便在一个请求中处理所有内容:
此外,就像解决方案一样,我正在寻找仅在WCF服务的情况下UriTemplateMatch为空的原因。关于这个问题的存在有数百篇文章,但我没有找到一个好的解决方案和/或解释。我想我可能会遗漏web.config
中的某些内容。
答案 0 :(得分:0)
这个解决方案似乎期待来电如:
http://localhost:49262/TestProject/Service.svc/user/123?oauth_consumer_key=key&oauth_nonce=10a33ed37b549301644b23b93fc1f1c5&oauth_signature=cUobFDxVB5wjPe9X2XICJ6awmnE%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1289976718&oauth_version=1.0
有两种方法可以附加oauth参数,一种是通过标题,另一种是通过查询字符串,两种都是有效的,所以我选择在查询字符串中附加oauth参数。如果那些oauth参数在标题中,则从IncomingWebRequestContext.Headers中检索它们没有任何问题
这个解决方案不是来自我。请检查此link。