iphone - 使用 2 条腿 oauth 的 REST 身份验证内部项目(iPhone 到 grails 应用程序)?

标签 iphone grails oauth

我正在创建一个 iPhone 项目,并将通过 REST 与服务器通信。我将发送从另一个服务启动的推送通知。我想验证从 iPhone 到我的服务器的所有通信(例如,与服务器同步通知,因为不能保证推送请求通过)

2 legged Oauth 似乎是理想的解决方案,但是关于它的信息并不多,尤其是因为大多数库似乎面向消费者而不是提供者。我应该使用什么库?

Oauth 是不是矫枉过正?如果是这样,你有什么建议?我目前正在寻找最简单的解决方案;如果我要花一个多星期的时间来实现 Oauth,那根本不值得。

谢谢

最佳答案

2条腿的oauth会在那里完成工作。

2 腿是相对基本的,并且更容易实现 3 腿(例如,不需要跟踪 token )。所有 2-legged oauth 所做的就是根据客户端和服务器之间的共享 key 生成您发送的请求的签名。然后服务器验证签名是否正确。差不多就是这样。

可能有一些适用于 iPhone 的库可以为您完成签名请求的大部分工作,并且肯定有适用于大多数 Web 服务器语言的库来验证签名。

在高层次上,这是您想要做的(来自 the oauth spec ):

  • 以某种方式在服务器和 iphone 客户端上获取共享 key (密码、随机生成的字符串等)——这必须超出范围,而不是作为请求的一部分(即,将其硬编码到每个组件中,或放入一个配置文件)。这是假设您使用 HMAC-SHA1 进行签名,而不是 RSA-SHA1 - 如果是 RSA,则改为共享公钥。
  • 将所有请求参数、URL、帖子正文等组合成一个字符串,考虑排序等。
  • 通过计算带有 key 的 HMAC-SHA1 哈希字符串来生成请求的签名。
  • 在请求中附上签名
  • 发送到服务器
  • 服务器接收请求。
  • 服务器使用与客户端(和 secret )相同的算法计算签名
  • 如果服务器上生成的签名与客户端发送的签名匹配,则请求受信任,否则拒绝访问。

  • 通常你不必自己实现所有这些。大多数库将允许您生成签名并根据 2-legged oauth 的要求对其进行验证。

    关于iphone - 使用 2 条腿 oauth 的 REST 身份验证内部项目(iPhone 到 grails 应用程序)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1679208/

    相关文章:

    grails - 如何用Groovy闭包包装所有Grails服务方法?

    grails - Grails链接ID未发送回服务器

    soap - 使用 OAuth 访问 token 访问 SOAP 服务?

    php - Twitter oauth2/invalidate_token 错误 "Unable to verify your credentials"、 "authenticity_token_error"

    azure - 使用 Azure Active Directory 提供的 Oauth 的 Team Foundation Server API

    iphone - 通过 iPhone 提交链接 -> Facebook Connect

    iphone - 当我使用Finch播放音频时,我真的可以做OpenAL可以做的所有事情吗?

    iphone - SBTableAlert 问题。它显示警报但不显示 UITableView

    iphone - 在 View 导航时在 UITableView 中显示数据

    grails - 使用 Spring Security 在 Grails 中更改上次登录日期