我的印象是,一旦授权过程完成,访问 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/