2010-08-18 152 views
13

我在http://oauth.net/阅读一些关于它,它显然是“发布,并与受保护的数据进行交互的简单方法”。任何人都可以解释OAuth吗?

我认为这正是我需要提供通过REST Web服务从Android/iPhone应用程序访问数据的安全方式,但我不能工作了它到底是什么。

所以,简单地说,究竟它有什么作用以及是否有任何(真的)简单的它在行动,我可以遵循,最好实现在C#中的东西,可以从智能手机的应用程序进行访问的例子吗?

+1

这就像OpenID,除了不同。这篇文章解释得很好:http://softwareasas.com/oauth-openid-youre-barking-up-the-wrong-tree-if-you-think-theyre-the-same-thing – 2010-08-18 17:03:59

+0

如果通话OAuth“简单“他们应该尝试HTTP基本认证。 – 2011-07-06 13:24:22

回答

13

由克雷格斯顿茨提供的链接:

开放ID为您提供多个网站一个登录。每次您需要登录到Zooomr(一个使用Open ID的站点)时,您都将被重定向到您登录的Open ID站点,然后返回到Zooomr。 OAuth允许您授权一个网站 - 消费者 - 从另一个网站 - 提供商访问您的数据。例如,您想授权一家印刷提供商(称为Moo)从照片存储库中获取照片 - 将其称为Flickr。 Moo会将你重定向到Flickr,它会问你,例如,“Moo想要下载你的Flickr照片。这很酷吗?“,然后回到Moo打印你的照片。

DotNetOpenAuth是一个很好的开放标识和OAuth C#库。

13

OAuth是针对应用程序保持登录数据,而不必存储在所有的真实数据的另一种方式。

当您登录到某些页面中,你通常有一个用户名和个人密码,或任何其他种类的登录凭证。现在,如果您希望应用程序能够通过该登录名执行操作,则需要为该应用程序提供原始登录数据。这意味着您将用户名和密码输入到应用程序中。这到目前为止并不糟糕,但问题是,如果您想通过该应用程序保持登录状态,则需要存储您的凭证。但为了能够将正确的登录数据发送到实际页面,它需要以原始形式存储这些数据(只需使用一些加密或其他)。因此,如果有人知道数据如何存储在应用程序中,他们可以提取您的原始登录凭据。

这是一个安全问题,正是OAuth的用武之地。通过OAuth,每一个应用程序被消费者密钥和消费者秘密标识。两者对于客户来说都是独一无二的,通常没有用户会看到这些(尤其不是秘密)。现在,当您希望允许应用程序访问该页面时,您将启动OAuth授权过程。您只需登录该页面,并明确允许特殊应用程序(由消费者密钥标识)有权访问。如果你这样做,应用程序将收到另一个密钥对,访问令牌和访问密钥。该密钥对仅适用于您的帐户,并且只适用于确切应用程序(由消费者密钥标识,并由消费者密钥确保为原始应用程序)使用。现在,所有应用程序需要存储的都是该访问密钥对(与已存储的使用者密钥对一起),并且无需查看原始登录数据即可访问该页面。

这样,没有人能够获得您的实际登录详细信息,而其他任何人(或其他应用程序)都无法使用生成的访问凭据访问该页面。如果您不希望应用程序仍然可以访问,则可以轻松地撤消访问密钥对,以便应用程序不再能够使用它。

因此,OAuth只是一种保护您的真实登录数据的方法。除此之外,它不会添加任何其他级别的安全措施或其他内容,只是为了保护您的数据。

+0

这是OAuth的精彩解说。我发现像我这样的傻瓜的另一个好解释是在https://blog.varonis.com/introduction-to-oauth/ – snark 2016-04-29 10:24:31

相关问题