我正在开展一个移动应用程序通过一组API连接到网站的项目。我考虑使用“通用处理程序”创建API。在为敏感数据定义限制之前,这似乎工作正常。用户在请求数据之前必须经过身份验证。
我创建了一个登录API,其中验证了用户凭据,并且在成功验证后,包含他在登录时提供的相同凭据的加密字符串将返回给用户。
每次用户在成功登录后发出请求,都会在标头中将加密的字符串提供回服务器。在服务器端,加密数据使用存储在DB中的凭证进行解密和验证。由于最近验证了用户,因此不需要此步骤。无论如何,我可以避免为每个请求验证用户身份。我打算使用WCF服务,其中Session可以有效地用于实现相同的目标(这是一个好主意吗?)
答案 0 :(得分:1)
我做了与您的API相同的步骤。以下是我在身份验证部分所做的一些更改。
服务器验证凭据并形成一个加密字符串,其中包含用户标识和一些必要的数据,如失效日期。将此称为令牌。
var tokenStr =“user_id = 1234; expire_date =”+ DateTime.Now.AddMinutes(20).ToString(); var encToken = AESCryptoService.Encrypt(salt,tokenStr);
将此加密令牌返回给客户
您还可以使用SHA-1或MD5或某些签名/加密机制来确保除了您之外不能更改令牌字符串。