通过电话号码或其他唯一ID(iOS / Android)验证用户身份

时间:2013-05-07 13:05:35

标签: android ios identity uniqueidentifier

以下情景:
我想在公共场所(例如火车站)创建一个 wifi热点。因此,我想编写一个用作门户页面的移动应用程序(iOS and/or Android)。由于我将通过我的wifi热点提供互联网访问,我需要确保想要登录的人正确验证他们的身份(责任)。首先,我认为我可以做类似Facebook登录的事情,但我想这还不够,因为人们可以创建虚假账户 然后我明白我可以通过他们的智能手机访问他们的电话号码。 我用Google搜索了很多,并得出结论,这两个平台都很难。 iOS方法似乎已被弃用,应用程序无法使用该版本进入应用程序商店。 Android可以从SIM卡读取电话号码,但并非所有提供商都将该号码存储在SIM卡上。

问题
有可能获得电话号码吗?或者还有其他方法可以唯一地识别wifi网络中的人吗?
当然,我不想在没有要求用户许可的情况下做任何事情...... 提前问候和感谢 彼得

4 个答案:

答案 0 :(得分:0)

选择MAC地址是一个不错的选择,它不是最安全的,但它更容易做到。

并不总是提供IMEI,而SERIAL不是uniq。

但实际上,我不知道如何使用iOS。

答案 1 :(得分:0)

手机的MAC地址是什么?这应该是足够独特的,您可以从Android和iOS轻松获得。

Android:http://developer.android.com/reference/android/net/wifi/WifiInfo.html#getMacAddress%28%29 iOS:How can I programmatically get the MAC address of an iphone

答案 2 :(得分:0)

使用IMEI号

Android提供访问设备IMEI号的功能/方法

首先设置<uses-permission android:name="android.permission.READ_PHONE_STATE" /> 在android清单中

TelephonyManager tm = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
// get IMEI
String imei = tm.getDeviceId();

希望有所帮助

对于像平板电脑这样的非CDMA或GSM设备

使用

import android.provider.Settings.Secure;

private String android_id = Secure.getString(getContext().getContentResolver(),
                                                        Secure.ANDROID_ID); 

这将为设备生成一个唯一的代码。当用户重置设备时,它会改变,即工厂重置它。它适用于具有os&gt;的设备。 2.2(Froyo的)

答案 3 :(得分:0)

这实际上取决于你想要识别的对象。这可能看起来像是一个奇怪的反应,但通常,我们试图找出两个而不是一组凭证元素。

首先,我们想要识别设备本身 - 这是我们期望看到的设备,我们可以相信这个设备没有被篡改。其次,我们通常想知道此设备的用户此刻是否是我们期望使用此设备(现已验证的设备)的用户。 (如果我拿走你的手机,没有第2步,我就成了你。)

这就是为什么我们有像802.1x这样的东西。它让我验证网络的用户,而不仅仅是设备。对于您的情况,请考虑以下内容:

对于设备验证,是hte MAC地址和IMEI的组合。将这些内容与用户的一些数据合并为一个唯一的哈希值。例如。

ID = SHA1(IMEI + MAC(Wifi)+用户密码)

现在我们非常确定设备和用户是否正确,如果需要,您可以更进一步,使用该哈希值来加密应用中的用户验证步骤。即使用户是正确的,如果他们在错误的设备上,他们的密钥也不会解密。

相关问题