今天经过真正的大脑弯曲会议后,我觉得我对 3-legged OAuth 身份验证非常了解。我仍然无法理解的是用户 ID 的使用。到目前为止,我所看到的示例似乎都只是在示例脚本的顶部任意分配了一个用户 ID,然后运行。这让我很困惑。
我看到的大多数示例代码似乎都围绕使用用户 ID 和 OAuth 服务器的消费者密钥来管理 OAuth“会话”的概念(在引号中,因为我不想将该术语与浏览器“会话”混为一谈”)。例如,我见过的数据库示例代码根据用户 ID 和消费者键字段值存储和检索令牌和其他相关信息。
我现在处于不确定状态,其中一些相互竞争的理解片段相互竞争和相互冲突:
1) 如果我通过消费者密钥和用户 ID 字段对 OAuth 会话详细信息记录或“OAuth 存储”查找的理解是正确的,那么这并不要求我为使用我的应用程序连接的每个用户都有一个不同的用户 ID使用 OAuth 服务器?
2)如果#1是正确的,那么我如何避免为不同的用户创建自己的用户帐户,这是我试图避免的?我正在尝试编写充当启用 OAuth 的服务的前端的软件,因此我不需要拥有自己的用户记录和随之而来的维护难题。相反,我将让 OAuth 服务器处理难题的那一端。然而,似乎我的方法的缺点是我必须在每个会话中重新授权用户,因为没有我自己的持久用户帐户/ID,我无法查找以前授予的“可撤销”访问令牌,正确的?
3) 困扰我的是,我读到一些 OAuth 服务器不允许在请求未经授权的令牌期间传递动态指定的回调 URL,这使得将消费者密钥和用户 ID 传递回自己是不可能的。相反,您在注册为开发者/消费者时指定回调 URL,仅此而已。幸运的是,我正在处理的 OAuth 服务器确实允许该功能,但是,如果我正在处理一个不支持的 OAuth 服务器,那不会在使用消费者密钥和用户 ID 对的整个想法中抛出一个巨大的猴子扳手索引 OAuth 会话详细信息?