任何人都可以解释OAuth吗?

时间:2010-08-18 16:54:02

标签: c# android security rest oauth

我在http://oauth.net/读了一些关于它的内容,显然是“发布受保护数据并与之交互的简单方法”。

我认为这正是我需要通过REST Web服务提供从android / iphone应用程序访问数据的安全方式,但我无法确切地知道它是什么。

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

2 个答案:

答案 0 :(得分:13)

来自Craig Stuntz提供的链接:

  

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

DotNetOpenAuth是Open ID和OAuth的优秀C#库。

答案 1 :(得分:13)

OAuth是应用程序在没有存储真实数据的情况下保留登录数据的另一种方法。

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

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

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

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