c# - 桌面应用程序中需要 OAuth 客户端凭据( key + secret ),即使具有有效的 token 凭据

标签 c# wpf oauth dotnetopenauth

我的印象是,一旦授权过程完成,访问 token 和 secret ( token 凭据)就是使用目标资源所需的全部。根据此引用 [ in some cases, the client credentials cannot be trusted and can only be used for informational purposes only, such as in desktop application clients 】 这未必如此。我遇到了一个问题,即使在授权之后仍然需要消费者 key 和 secret (客户端凭据)才能访问资源。这似乎不对。

我在查找 DotNetOpenAuth 示例的桌面应用程序中实现了 OAuth。我基本上使用了一个未更改的 InMemoryTokenManager 和一个 DesktopConsumer,并且在授权后一切正常。当我重新启动应用程序并重新使用保存的 token 凭据时,应用程序无法访问资源。如果我使用保存的 token 凭据 + 客户端凭据,则资源可以正常访问。这是设计使然吗?听起来不正确,但我不是专家。

最佳答案

这是正确的。根据 OAuth 1.0 规范,每次使用访问 token 时都需要客户端凭据。这可以防止泄露的访问 token 被其他客户端利用。这种推理主要假设客户端 secret 实际上是一个 secret ,正如您所指出的那样,不能为桌面应用程序假设。然而,您可以拥有一个不是 secret 的“ secret ”,并在您的应用程序启动期间维护它,只是为了让一切顺利进行。

关于c# - 桌面应用程序中需要 OAuth 客户端凭据( key + secret ),即使具有有效的 token 凭据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5621880/

相关文章:

c# - 如何在VS2010中的每个方法中设置断点

c# - 具有足够精度以实现计算器的数字类型

c# - 将 SocketError 值转换为字符串消息

oauth - 用户使用 Facebook 应用中心的 "visit web site"按钮时无法获取访问 token

c# - UriKind.Relative 和 UriKind.Absolute 有什么区别?

c# - WPF "undo"深拷贝

c# - 如何使用 SQL Server 数据库部署 C#/WPF 应用程序

c# - ReactiveUI 6 异步命令未在 WPF 应用程序的后台线程上运行

python - Django 中的 Oauth 1.0a

php - 如何使用 Twitter V2 API 调用电话