1

我一直在开发一个使用 Ruby on Rails 的 Web 服务器应用程序和一个使用 Android 的客户端应用程序。Web 服务器有一些通往客户端访问的路由,无需身份验证。我想创建一个令牌来验证请求是否来自客户端。我想像这样的解决方案:

  1. 创建一个键,例如“stackoverflow;
  2. 在客户端和服务器应用程序中共享此密钥;
  3. 使用带有生成随机字符串函数 + 密钥的 AES 加密生成令牌;
  4. 当客户端应用程序向服务器发送请求时,也发送生成的令牌;
  5. 服务器使用共享密钥和 AES 加密验证令牌是否有效。

以下是我的疑问:

  1. 这是在他们之间建立沟通的最佳方式吗?
  2. 两个系统中是否有 gem/api crypt 和解密?

请不要犹豫,描述一个建议或例子来指导我=)

提前致谢

4

1 回答 1

2

更安全和标准的方法是使用 SSL 客户端证书。

为您的应用程序的每个新版本颁发客户端证书,确保使用只有您自己的证书(即 CA 证书)对其进行签名,或者您的签名 CA 拥有私钥。

设置您的 Web 服务器以在允许连接之前要求客户端证书。设置 Web 服务器以根据您持有的 CA 证书验证证书。

这样就没有可以从您的应用程序中提取的“共享秘密”。如果有人提取并窃取了客户端证书,请使用新证书发布您的应用程序的更新版本,然后将旧证书添加到您 CA 的吊销列表中,或者只是告诉 Web 服务器阻止该特定证书。

无需编写 ruby​​、java 或 javascript 代码。

于 2013-03-02T20:29:18.817 回答