【问题标题】:White list of devices able to connect to server可连接服务器的设备白名单
【发布时间】:2015-09-21 08:52:57
【问题描述】:

我希望只有我的员工能够从他们的移动应用程序连接到我的服务器。

除了用户名/密码类型的安全性之外,我希望只有预先批准的设备能够连接到服务器并尝试登录。

有没有办法在设备上手动配置某种证书,并且从服务器只允许这些设备连接?可能是 SSL?

理想情况下,证书对于每台设备都是唯一的(这样我们以后可以撤销对设备的访问权限)。

【问题讨论】:

  • 您可以使用设备的IMEI号码作为唯一证书。
  • IMEI 并非在所有平台上都可用。但是我有办法获得一个可以的唯一 ID。但我不是在代码级别而是在证书上寻找解决方案......
  • 您可以发送登录成功的密钥,在客户端解析密钥并在所有调用中发送该密钥,如果密钥正确则发送数据。在每次登录中,您都可以更改密钥

标签: android ssl certificate


【解决方案1】:

您可以使用以下代码获取唯一的设备 ID,您可以将此 ID 保留在服务端,并可以使用它来撤销对服务器的访问。供参考见Device Unique ID

 final TelephonyManager tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);

final String tmDevice, tmSerial, androidId;
tmDevice = "" + tm.getDeviceId();
tmSerial = "" + tm.getSimSerialNumber();
androidId = "" + android.provider.Settings.Secure.getString(getContentResolver(), android.provider.Settings.Secure.ANDROID_ID);

UUID deviceUuid = new UUID(androidId.hashCode(), ((long)tmDevice.hashCode() << 32) | tmSerial.hashCode());
String deviceId = deviceUuid.toString();

【讨论】:

  • 它适用于所有设备制造商吗?您确定设备ID不会改变吗??
猜你喜欢
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
  • 1970-01-01
  • 2017-10-10
  • 1970-01-01
相关资源
最近更新 更多