首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用远程web应用程序对iOS/iPhone用户进行身份验证,并在将来对同一web应用程序的请求中重用身份验证票证?

如何使用远程web应用程序对iOS/iPhone用户进行身份验证,并在将来对同一web应用程序的请求中重用身份验证票证?
EN

Stack Overflow用户
提问于 2011-10-03 15:33:22
回答 4查看 11.8K关注 0票数 18

我正在构建一个iOS应用程序,我需要能够向Rails3应用程序发出经过身份验证的请求,以获取各种数据。例如,Rails3应用程序使用omniauth和https://myapp.com/auth/facebook之类的URL来验证用户身份。一旦通过身份验证,就会将身份验证存储在名为“auth”的安全cookie中。

我想知道的是如何从iOS/iPhone应用程序对用户进行身份验证,持久化身份验证令牌,并将其与将来的请求一起发送到Rails应用程序?

使用ASIHTTPRequest我正在考虑这样做:

  1. 打开一个UIWebview,从我的web应用程序加载一个特定于他们想要进行身份验证的提供商的网址(例如,myapp.com/auth/facebook用于facebook或myapp.com/auth/yahoo...)。
  2. 成功后,以某种方式解析出身份验证cookie并将其存储在iOS应用程序中,而不显示人们通过网站进行身份验证时通常看到的网页...此外,Rails application.
  3. Somehow还希望允许用户允许iOS应用程序在本地存储这些信息,这样他们就不必重新登录到远程应用程序(如果他们选择的话),而不是关闭application.
  4. I并导航回Rails UIWebView中的另一个UIVewController将持久化身份验证令牌包含在Rails application.
  5. I的未来web请求中。

这种方法合适吗?有没有更好的方法?当然,如何实际实现上述内容呢?

谢谢- wg

EN

回答 4

Stack Overflow用户

发布于 2011-10-14 04:10:08

使用OAuth非常简单(好吧,简单不是一个词……),但是我做了一个iOS应用程序和一个java服务器,它们使用OAUth作为身份模式,按照整个周期,最后我获得了一个令牌来标识这个用户,并且(因为只有使用签名的请求才能访问)可以安全地存储在手机中(我只使用standardUserDefaults来存储它)。只有您的应用程序(使用密钥)才能对请求进行签名。

我不知道这对你是否有用..。

阿!在通过web进行身份验证之后,浏览器重定向一个特殊的url (为我的应用程序注册),该url将打开我的应用程序,并在其参数中包含令牌,因此在handleOpenURL中的身份验证阶段之后,很容易检索令牌。

票数 2
EN

Stack Overflow用户

发布于 2011-10-15 02:50:07

  1. 一旦请求通过了所述服务,就让它加载另一个UIWebview (例如:通过页面上的javascript,在authentication).
  2. Capture这个请求之后,使用实现以下协议method:
  • (BOOL)webView:(UIWebView *的UIWebViewDelegate对象)webView shouldStartLoadWithRequest:(NSURLRequest *)request have这里你有了NSURLRequest对象。您可以使用以下NSURLRequest
    • (NSDictionary *)allHTTPHeaderFields

    方法将请求的头部提取到NSDictionary,其中包含身份验证cookie详细信息、令牌等

票数 2
EN

Stack Overflow用户

发布于 2011-10-10 18:22:41

对于我的应用程序,这就是我正在做的。

我的应用程序使用devise和omniauth进行登录和用户操作。Devise本身可以生成一个具有token_authenticatable标志的唯一令牌。因此,在我的登录请求中,如果登录成功,我会用我的用户和用户令牌的JSON表示来回复。我把所有这些都保存在手机内存里。

然后,对于每个请求,我添加参数auth_token=MY_USER_TOKEN。

仅此而已。

我只是遇到了Facebook身份验证的问题,因为我使用的是Ios facebook SDK,所以我将FB令牌转发到我的应用程序,验证它,然后为以下所有请求返回相同的devise auth_token。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7632185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档