好的 - 我是一个DotNetOpenAuth newb,只是为了解决这个问题。
首先是一些概述
我正在构建一个应用程序,该应用程序将成为另一个应用程序的OAuth使用者。此其他应用程序具有所谓的“应用市场”,登录其网站的用户可以直接启动消费者网站。此市场将包含指向我们应用的链接 - 点击时将包含请求令牌和请求令牌密钥。话虽如此,我们显然不必使OAuth请求获取请求令牌等,因为我们已经拥有它。
现在 - 这是我的问题
据我所知 - DotNetOpenAuth似乎没有办法在授权过程中跳过前几个请求,直接转到获取访问令牌的请求。现在,显然,我可以构建自己的HttpWebRequest来获取它,但我希望不必这样做,因为DotNetOpenAuth隐藏了所有那些凌乱的授权头文件。那么,任何人都知道如何通过DotNetOpenAuth跳转到访问令牌步骤?
我尝试拨打WebConsumer.Send(PrepareRequestUserAuthorization())
,但这似乎从一开始就启动了OAuth授权。我也试过调用WebConsumer.ProcessUserAuthorization()
,但只返回null。而且,坦率地说,围绕DotNetOpenAuth的文档对于这个newb来说还不够具体,无法确定这些方法到底应该做什么。所以,任何帮助都会非常感激。
答案 0 :(得分:3)
这个应用程序市场提出的是不是标准OAuth 1.0(a),因此不是DotNetOpenAuth支持的东西。也就是说,你可以发挥一些技巧让它发挥作用。用精心设计的论点调用WebConsumer.ProcessUserAuthorization(HttpRequestInfo)
会“愚弄”DotNetOpenAuth从这个应用程序市场离开你的角度出发。您需要制作HttpRequestInfo
对象,使其包含在授权请求令牌时包含在正常OAuth流中的所有消息部分:
此外,您需要在WebConsumer.TokenManager
中人工将请求令牌及其秘密注入您的令牌管理器实例中。这也可能不是微不足道的,取决于你如何实现它。
我会提醒您,无论何时您离开标准OAuth流程,彻底的安全审核都至关重要,因为您可能会破坏协议中内置的安全机制。