从Native iOS App实现Web登录

时间:2015-01-23 02:31:47

标签: ios web-services security mobile

我们有一个拥有后端网络服务的应用。我们希望从我们的原生iOS应用程序到Web服务器实现用户身份验证。我们希望我们的原生应用程序登录到网站,获取用于请求的令牌,并在一段时间后(例如,30天后)使此令牌过期。

我们正在寻找示例代码,以展示如何为本机iOS应用程序执行此操作。

例如,我们是否使用带有Web登录URL的UIWebView?这样做的一个优点是本机应用程序可以使用用户注册,忘记密码等Web代码。否则,我们将不得不重新编写本机应用程序的注册,帐户确认,忘记密码。如果我们使用Web视图方法,我们在本机应用程序中保存什么来验证来自登录用户的请求?

如果我们重新实施本机应用的注册,验证,忘记密码,登录代码,我们需要担心哪些事情?实现此代码的最佳方法是什么?我们赞赏伪代码或真实代码。

1 个答案:

答案 0 :(得分:0)

我的同事和我刚刚实施了一个Web视图,用于登录我们正在构建的企业应用程序。你已经列出了这种方法的许多好理由,并且它有效。

我不是这方面的专家,但我会在几天内描述我们所取得的成就。希望它有所帮助。

首先,我们显示的Web登录页面是支持OAuth2协议的现有企业登录系统。 OAuth2是一种非常流行且安全的方式来支持这种类型的身份验证。在网上有大量关于OAuth2的信息,在我看来,它相当复杂。让我们成功的第一个关键是让这个企业登录系统已经可以使用OAuth2支持。我们没有写任何后端代码。

其次,我们使用这个开源库来处理iOS中OAuth2协议的实现:https://github.com/nxtbgthng/OAuth2Client

正如我所提到的,OAuth2实施起来很复杂。该库负责处理大部分复杂性,因此我们编写的代码量很小。

使用该库有点挑战,但我们管理。库文档将帮助您入门,但我们发现本教程非常有助于将其全部工作: http://www.idmworks.com/blog/entry/getting-started-with-oauth2client-on-ios

我们的解决方案包括一个托管Web视图的登录视图控制器,以及一个用于管理配置库所需的密钥和URL的类。

使用此方法,身份验证完全由Web视图处理。身份验证成功后,我们的视图控制器会拦截重定向URL并使用它提供的请求令牌来获取可用于访问安全资源的访问令牌。这里繁重的工作由图书馆和我们的企业登录系统处理。我们的应用程序相对较少。该库将令牌安全地存储在钥匙串中。它还支持刷新令牌,如果您的后端支持,则允许以静默方式刷新访问令牌。

当我们的应用程序启动时,如果用户未登录,则导航到登录视图控制器;如果用户已登录,则导航到主视图控制器。