【问题标题】:Client OAuth implementation on devices with no permanent storage在没有永久存储的设备上实现客户端 OAuth
【发布时间】:2011-09-14 15:02:07
【问题描述】:

我正在实现一个 OAuth 消费者,它将在各种机顶盒上运行。其中一些不提供任何永久存储用户数据的方法。当机顶盒关闭时,所有数据都会丢失(当然,固件除外)。那我该如何存储访问令牌?要求是用户应该只进行一次身份验证,并且访问令牌具有长期有效性(直到用户自己撤销)。因此,每次打开 STB 时都进行身份验证是不可能的。在这种情况下,OAuth 是否毫无价值?我可以使用一些其他数据(例如 MAC 或一些唯一的硬件数据)而不是访问令牌吗?我知道这些可以被欺骗,但我没有任何其他想法。

啊,顺便说一句,我也在实现服务器端(服务提供者),但由于它也将被第 3 方消费者使用,我必须为他们提供“正确的”OAuth,并且可以对我的消费者应用程序进行了一些调整,因为它显然是一个值得信赖的应用程序。

谢谢!

【问题讨论】:

    标签: oauth store token consumer


    【解决方案1】:

    您能否在服务器端有一个 Web 服务(受 SSL 和数字证书保护,以确保没有其他人可以访问它),它需要一些唯一的 MAC(或硬件数据)并将正确的 OAuth 令牌返回给 STB?

    所以流程是: 1) STB 启动,通过 Web 服务向服务器发送唯一的 HW 数据以检索 OAuth Token - 如果令牌存在,则转到第 4 步,否则转到第 2 步 2) 用户在 STB 进行 OAuth 身份验证。 3) STB 将令牌存储在本地内存中,并通过 Web 服务将其与一些唯一的硬件数据一起发送到服务器端 4) STB 使用 OAuth 令牌执行正常功能 5) STB 被拔掉、关闭等导致它从本地内存中丢失令牌 返回第 1 步。

    需要注意的问题: A) 用户返回 STB,因为他们不再需要服务。您需要以某种方式清除令牌,以防其他用户获得该 STB。您不希望新用户获取旧用户的数据 B) STB 中断,用户必须得到一个新的。他们是否必须重新进行身份验证,或者令牌会自动转移到新的唯一硬件数据中

    【讨论】:

    • 我不确定唯一的硬件数据是否可用。如果我使用 MAC,我担心 MAC 欺骗。如果访问令牌的寿命不确定,并且有人以某种方式读取了其他人的机顶盒 MAC,那可能会非常危险。我将强制执行 SSL,但我对协议本身并不熟悉。你能在加密的 HTTP 数据包中截获 MAC 地址吗?如果 MAC 已加密,来自服务器的答案如何路由到正确的客户端 (STB)?
    • 您确实需要通过 SSL 将唯一的硬件发送到受数字证书保护的 Web 服务。 SSL 将隐藏数据,证书将确保没有人可以在未经您许可的情况下访问 Web 服务。唯一的硬件数据(MAC 等)将在 Web 服务的数据中。由于连接是 SSL,因此没有人能够窥探和获取它。
    • 当您提到证书时,您是指服务器端证书还是客户端证书?服务器端证书是强制性的,但我们不想使用客户端证书,因为用户可以拥有更多设备,并且处理客户端证书会变得非常麻烦。
    • 我说的是web service message level security。服务器将具有只有您的 STB 才能调用的特殊 Web 服务操作。如果 Web 服务安全性不在标头中,则它会阻止请求。这会阻止第三方访问该 Web 服务。
    • 现在这对我来说是全新的。是否有任何可能对我有帮助的服务器端 (Java) 和客户端 (JS) 示例或教程?
    猜你喜欢
    • 2016-12-26
    • 2010-11-28
    • 1970-01-01
    • 2011-05-15
    • 2015-03-22
    • 2010-11-30
    • 2019-06-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多