2012-03-18 112 views
0

我搜索了很久,但只能找到真正的基本信息,所以我决定在这里问:安全认证:Rails的Web应用程序和iOS应用

简单的事情是,我想对一个轨验证iOS应用程序Web应用程序。 我想过基于HTTP Basic或Token的东西 - 但这不是我真正想要的。 我想从Facebook,Twitter等OAuth认证。 在轨道上,这非常简单。使用omniAuth的设备可以很好地完成这项工作。 但是,我应该如何使用此方法验证iOS应用程序?

如果有人能够更详细地了解如何做到这一点,那将是一件好事。

回答

1

我想你有两个解决方案。

1:WebView

使用WebView进行OAuth请求/响应。

SHKOAuthView ShareKit将帮助你理解。

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{  
    // "OAUTH_DID_FINISH_SUCCESS_URL" is URL your wab app display after finishing OAuth authentication successfully. 
    if ([request.URL.absoluteString isEqualToString:OAUTH_DID_FINISH_SUCCESS_URL]) 
    { 
     // OAuth success 
     return NO; 
    } 
    return YES; 
} 

整理与web视图OAuth认证后,iOS应用自动保存的Cookie(如果web应用程序保存的Cookie),所以iOS应用可以正常请求/响应于网络应用程序。顺便提一句,Android可能不会自动保存cookie,因此如果您还必须支持Android应用程序,基于标记的身份验证会更好。

2:RestKit

RestKit支持的OAuth。

我认为设备不是iOS应用程序使用OAuth的最佳解决方案。 我认为使用omniAuth的临时认证更好。

+0

这只解决了问题的一部分。但对于通过OAuth进行身份验证,我需要自己成为OAuth Provider,还是我错了? 有了您的解决方案,我可以验证对OAuth用户提供iOS设备 - 但我需要验证我的Web应用程序针对的OAuth提供者和反对我的Web应用程序验证自己的iOS设备 例子: 'Twitter的Web应用程序<-> iOS版<-> App' – PascalTurbo 2012-03-19 18:26:55

+0

我用了第一个解决方案(1:WebView)。我的网络应用程序(Rails 3.1)是[SingSing](http://www.singsing.biz/)。我的iOS应用程序是[A Cappella LITE](http://itunes.apple.com/us/app/acappellalite/id370754632?mt=8)。 – dadachi 2012-03-20 01:08:05

+0

是的,那太棒了。但你如何解决Rails-Part? – PascalTurbo 2012-03-20 08:20:36