3

我需要弄清楚如何最好地验证从 C++ 游戏客户端连接到另一台服务器上的 mySQL 数据库的用户,并且我计划编写一个 Java Web 服务来完成此任务。

安全是首要考虑的问题,我需要确保通过网络传输的数据是加密的,所以我将利用 SSL(最初我考虑使用 ws-security 进行消息级加密,但我认为它的开销太大)。

我真正需要弄清楚的是我应该提供什么样的身份验证机制。这些用户将提供用户名和密码,并将向服务发出 Web 请求。

我还没有决定该服务应该是传统的 SOAP Web 服务还是 RESTful 服务。REST 背后的整个想法是使服务器无状态,并且由于客户端基本上将与服务建立会话,因此我认为在这里使用 REST 没有意义。

说了这么多,我真正需要确定的是如何准确地执行握手以及如何保持会话。

是否有任何流行的框架提供 API 来针对 mySQL 数据库执行此操作?

再次,客户端将向服务器提供 UN / PW,服务器需要解密它们(SSL 应该负责),根据存储在 mysql DB 中的帐户信息对它们进行身份验证,然后返回某种哈希或类似的东西这样用户的会话就可以持续下去,或者用户不必再登录来发出额外的请求。

谁能推荐一个框架/一些阅读材料让我浏览一下?

4

3 回答 3

1

我会看看oauth:

http://developers.sun.com/identity/reference/techart/restwebservices.html

一个成熟的模式是: 1. 登录并接收一个 oauth 令牌 2. 将令牌与用户的内部 id(以及您希望存储的任何其他数据,例如令牌到期时间)一起存储在 db 中。3. 向客户端发送令牌,客户端保留令牌 4. 客户端为所有未来请求发送令牌 5. 服务器从令牌中获取用户信息

此方法应该适用于任何客户端语言和任何后端数据存储。

于 2012-01-18T16:58:37.570 回答
1

让事情尽可能简单。

HTTP 已经是无状态的,登录后继续会话的想法已经确立(会话 cookie)。使用这个范例,你不会有任何麻烦。

您还可以从非常轻量级和开放的通信协议和许多优秀的库中受益,这些库可以轻松序列化/反序列化常见的 REST 有效负载,如 JSON 或 XML。

REST 还意味着您可以很容易地将同一台服务器与其他客户端一起使用。

于 2012-01-18T16:55:07.190 回答
0

我建议使用 REST。作为授权框架,您可以在 JAAS 上使用标准容器的 jdbc 或文件领域。如果登录/密码对成功,则将它们存储在客户端。之后,您可以使用每个请求提供的身份验证凭据执行请求。我为此使用了球衣客户端。对于从/到 XML/json XStream 库的 [反] 序列化“做所有数据数学”。祝你今天过得愉快。

于 2012-01-18T17:06:15.740 回答