代码之家  ›  专栏  ›  技术社区  ›  Evert

两条腿的奥斯-寻找信息

  •  25
  • Evert  · 技术社区  · 17 年前

    我想实现一个新的基于REST的 API 在我们的基础设施上,以及 OAuth 似乎是要走的路。

    对于我们的实现,首先只有服务器到服务器的访问,这是完全不受限制的。我相信这叫做两腿授权。

    稍后,我们将允许浏览器使用API,这将使我们的授权变成三条腿。

    有没有一个很好的起点来实现这一点?我们如何才能完全授权一个服务器,并在路上为每个用户添加受限授权?

    OAuth规范在这些场景中并没有真正的帮助,但我相信这意味着我们需要为服务器到服务器的访问创建一个永不过期的会话,稍后还要为仅限用户的API添加具有有限访问权限的正常会话。

    我希望找到更多信息的起点,让我知道!

    Oauth是我的吗?我只是在寻找一个经过身份验证的请求系统,在这个场景中只存在使用者和服务提供者。最终用户不会进来玩!

    3 回复  |  直到 13 年前
        1
  •  48
  •   abraham    14 年前

    你,欧奥斯很可能是你的。

    实际上有两个OAuth规范,三条腿版本和两条腿版本。三条腿的版本是最受关注的版本,它 你想用的那个。

    好消息是,2条腿的版本完全满足您的需要,它允许应用程序通过共享密钥(与Amazon的Web服务模型非常相似,您将使用HMAC-SHA1签名方法)或通过公钥/私钥系统(使用签名方法:RSA-SHA1)向另一个应用程序授予访问权限。坏消息是,它的支持还不如3条腿版本,所以你可能需要做更多的工作,而不是你现在可能需要做的。

    基本上,两条腿的OAuth只指定了一种方法来“签名”(计算哈希)几个字段,其中包括当前日期、称为“nonce”的随机数以及请求的参数。这使得它 很辛苦 模拟对Web服务的请求。

    OAuth正在慢慢地,但肯定会成为这类事情的公认标准——从长远来看,如果你接受它,你会是最好的,因为人们可以利用各种可用的库来实现这一点。

    这比你最初想要了解的要复杂得多,但好消息是很多人花了很多时间在这上面,所以你知道你没有忘记任何事情。一个很好的例子是,最近Twitter在OAuth安全系统中发现了一个缺口,目前社区正在努力弥补这个缺口。如果你发明了自己的系统,你就必须自己解决所有这些问题。

    祝你好运!

        2
  •  5
  •   Peter Mortensen Pieter Jan Bonestroo    13 年前

    记住区分身份验证和授权。在某些地方,我相信OP混合了两者。

    例如,一旦服务器对某人进行身份验证,它通常显式或隐式(使用cookie)提供身份验证令牌,以便随后的请求已经得到授权。

    由服务器决定凭据的使用时间。这是明智的 计划 凭证在某个时候会超时。只要让客户机服务器准备好在收到“授权过期”错误响应时重新进行身份验证。

    您不想尝试提供“永不过期”的会话,因为:

    1. 一切都会在某个时候到期。例如,如果客户端服务器断电或重新启动,它将如何重新开始访问应用程序?

    2. 您正在创建一个不灵活的系统。它们更容易断裂。

    3. 因为您知道将来要添加其他类型的登录,而不是两种类型的登录(服务器客户端和浏览器客户端),所以现在只进行一种类型的登录。客户机服务器的额外工作将是实现“必要时重新登录”功能。
        3
  •  2
  •   Evert    17 年前

    Oauth最终会因为太难满足我们的需求。我决定采用AmazonS3的认证方案,因为它更适合我们的模型。

    谢谢你帮我找到答案。