移动应用程序:如何提供客户端身份验证

时间:2011-09-28 08:02:33

标签: authentication mobile client-server lamp

我有一个健身移动应用程序的想法,我一直在开发基于这个想法的iPhone(基于Obj-C),Android(基于java),WebOS(基于html5)和诺基亚Qt。

我现在需要为我的应用程序的用户提供身份验证。服务器是典型的LAMP系统。我希望移动应用程序的用户能够无缝,安全地登录服务器。

我不是一个真正的网络程序员,因此会欣赏有关如何提供身份验证的想法。我听说过OpenID ......但我不确定它是否可用于验证移动客户端。有人提到OAuth,但我不确定a)它是否适用于此用例; b)如果我的客户没有Facebook / Twitter账户怎么办?

任何想法都将受到赞赏!

2 个答案:

答案 0 :(得分:2)

我做了类似的事情并使用gnuTLS和x.509证书从客户端进行身份验证。它无缝且易于集成。

https://idlebox.net/2009/apidocs/gnutls-2.6.6.zip/gnutls_7.html#SEC65

对我来说使用这个方法的重要一点是,https连接只是简单的方法调用,握手过程本身将由gnuTLS库处理。

我的应用程序是iOS应用程序,我使用xcode来做到这很容易。我认为在Java方面会更容易,但我不确定诺基亚部分。编码在C中,因此是跨平台的。

但是,如果您正在寻找基于iOS的解决方案,我建议http://developer.apple.com/library/ios/#samplecode/AdvancedURLConnections/Introduction/Intro.html

但对于需要在所有应用程序中使用相同证书而无需用户输入或工作的跨平台解决方案,我仍然建议使用gnuTLS并使用x509证书。

答案 1 :(得分:1)

如果您已经在某处拥有LAMP服务器,那么设置实现自己的密码身份验证API应该相当容易 - 重要的是您通过HTTPS进行操作! (因此无法嗅探用户ID /密码)。您需要为您的Web服务器提供数字证书(CERT)。

在LAMP系统上,您可以将用户数据保存在其数据库中。您的LAMP服务器还应该允许创建本地用户帐户(当然)。

您可以单独使用此解决方案,也可以与OpenID或OAuth一起使用此解决方案!

这意味着,如果您的客户没有Facebook或Twitter,他们仍然可以在您的LAMP服务器上创建一个帐户。

http://en.wikipedia.org/wiki/OAuth