今天经过真正的大脑弯曲会议后,我觉得我很了解三脚OAuth身份验证。我仍然无法理解的是使用用户ID。到目前为止,我看到的例子都似乎只是在示例脚本的顶部任意分配一个用户标识并去。这让我困惑。了解在三方OAuth会话中使用用户标识吗?
我见过的大多数示例代码似乎围绕使用用户标识和OAuth服务器的使用者密钥来管理OAuth“会话”的概念(在引号中,因为我没有试图将该术语与一个浏览器“会话”)。例如,我见过的数据库示例代码根据用户标识和消费者键字段值存储和检索涉及的标记和其他信息。
我现在是在不确定性,其中的理解一些竞争片段竞争和相互冲突的那种状态:
1)如果我的OAuth的会议细节记录或“OAuth的店”查找的理解是正确的,通过消费者密钥和用户ID字段,那么是否并非要求我为使用与OAuth服务器连接的应用程序的每个用户拥有完全不同的用户ID?
2)如果#1是正确的,那么我该如何避免为不同的用户创建自己的用户帐户,我试图避免这种情况?我正在尝试编写用作启用OAuth服务的前端的软件,因此我不需要拥有自己的用户记录和伴随的维护难题。相反,我只是让OAuth服务器处理难题的结尾。然而,似乎后来我的方法的缺点是,我不得不重新授权用户的每个会话,因为没有我自己的持久用户帐户/ ID我无法查找以前授予的“良好撤销”访问令牌,正确?
3)令我困扰的是,我已经阅读了一些OAuth服务器,它们在请求未授权令牌期间不允许传递动态指定的回调URL,从而使用户密钥和用户ID回传给自己不可能。相反,当您注册为开发人员/消费者时指定回调URL,就是这样。幸运的是,我正在处理的OAuth服务器确实允许使用该功能,但是如果我正在处理那个不支持的功能,那么这不会引发巨大的猴子扳机来使用使用消费者密钥和用户ID对的整个想法索引OAuth会话详细信息?
你说得对。我将最终得到至少一个用户ID和PIN。关于静态回调URL安全的好处。一个问题。你说“如果一个邪恶的人盗走了一个GreatApp的消费者钥匙”,但是他们是不是也必须拥有这个秘密?我希望如此,因为我已经看到示例代码,他们建议将它作为明显可见的GET url参数传递回您的回调URI。例如,请参见标题为:对OAuth的PHP样品中“第3步获取访问服务器”:http://code.google.com/p/oauth-php/wiki/ConsumerHowTo – 2011-04-20 13:51:22
是的,你说得对,我应该说消费者的密钥和消费者的秘密,因为只有与密钥本身,没有太多可以做:) – middlehut 2011-04-21 06:07:33
@Lyuben,是不是只有提供者需要用户ID(这听起来合乎逻辑),但也是正确的客户?因此,客户端(使用OAuth作为登录系统)需要先创建一个用户(带有ID),然后才能通过OAuth服务器成功进行身份验证。当身份验证失败或未授予访问权时,使您拥有大量空的用户帐户。这使得很难使用OAuth作为登录系统,而OpenID则更好。 – Lode 2012-08-27 14:58:02