java游戏客户端/mysql数据库的身份验证机制 我需要找出如何最好地验证从C++游戏客户端连接到另一个服务器上的MySQL数据库的用户,我计划编写一个java Web服务来完成这个任务。

java游戏客户端/mysql数据库的身份验证机制 我需要找出如何最好地验证从C++游戏客户端连接到另一个服务器上的MySQL数据库的用户,我计划编写一个java Web服务来完成这个任务。,java,c++,authentication,handshake,Java,C++,Authentication,Handshake,安全性是首要考虑的问题,我需要确保传输的数据经过加密,因此我将利用SSL(最初我考虑使用ws-Security进行消息级加密,但我认为这会带来太多开销) 我真正需要弄清楚的是我应该提供什么样的身份验证机制。这些用户将提供用户名和密码,并向服务发出web请求 我还没有决定该服务应该是传统的soapweb服务还是RESTful服务。rest背后的整个想法是使服务器无状态,而且由于客户端基本上将与服务建立会话,因此我认为在这里使用rest没有任何意义 话虽如此,我真正需要确定的是如何准确地执行握手以及

安全性是首要考虑的问题,我需要确保传输的数据经过加密,因此我将利用SSL(最初我考虑使用ws-Security进行消息级加密,但我认为这会带来太多开销)

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

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

话虽如此,我真正需要确定的是如何准确地执行握手以及如何持续会话

有没有流行的框架提供针对mySQL数据库的API

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


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

让事情尽可能简单

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

您还可以从一个非常轻量级和开放的通信协议以及许多好的库中获得好处,从而可以轻松地序列化/反序列化常见的REST有效负载,如JSON或XML


REST还意味着您可以非常轻松地将同一台服务器与其他客户端一起使用。

我想看看oauth:

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


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

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

客户不应该直接访问数据库,尤其是对于特定的供应商。首先,如果它们能够执行任意的
SELECT
语句,它们可能会使整个系统停止。但最重要的是,它会阻止您进行未来的维护。理想情况下,您提供的软件服务碰巧使用的是数据库,而他们对此一无所知。除此之外。。。看看Spring,它是最流行的JavaEE框架之一,可以处理您几乎所有的需求。如果写得正确,客户机是用什么写的就无关紧要了。@X-Zero-你确实读过OP,对吗?包括它说
并将向服务发出web请求的部分
?@cdeszaq-我做了,但有点不清楚OP打算框架做什么-将其用作实际的web服务,或者只是为客户端提供某种身份验证框架以直接运行SQL语句。不,该服务将充当两者之间的中间层。oauth很好,但是如果您需要做的不仅仅是身份验证,那么如果您需要做的不仅仅是身份验证,并且不需要允许一个应用程序对其进行身份验证的其他服务,那么这项工作通常会超出其价值。此外,如果您以后发现需要另一个身份验证系统,可以很容易地使用它。它是一个标准,具有良好的库支持,非常适合rest。我不确定是什么问题。您可以轻松地将会话分层。我想我不知道困难在哪里。