3

別のサーバー上のmySQLデータベースに対して、C ++ゲームクライアントから接続しているユーザーを最適に認証する方法を理解する必要があります。これを実現するために、JavaWebサービスを作成する予定です。

セキュリティが最大の関心事です。ネットワークを流れるデータが暗号化されていることを確認する必要があるため、SSLを利用します(当初はws-securityを使用したメッセージレベルの暗号化について考えていましたが、オーバーヘッドが大きすぎると思います)。

私が本当に理解する必要があるのは、どのような認証メカニズムを提供する必要があるかということです。これらのユーザーはユーザー名とパスワードを提供し、サービスにWebリクエストを発行します。

サービスを従来のSOAPWebサービスにするかRESTfulサービスにするかは決めていません。Restの背後にある全体的な考え方は、サーバーをステートレスにすることです。クライアントは基本的にサービスとのセッションを確立するため、ここでRESTを使用する意味はありません。

そうは言っても、私が本当に理解する必要があるのは、ハンドシェイクを正確に実行する方法と、セッションを継続する方法です。

mySQLデータベースに対してこれを行うためのAPIを提供する人気のあるフレームワークはありますか?

この場合も、クライアントはサーバーにUN / PWを提供します。サーバーはそれらを復号化し(SSLが処理する必要があります)、mysql DBに保存されているアカウント情報に対して認証し、何らかのハッシュなどを返します。これにより、ユーザーのセッションを継続できるようになり、ユーザーが追加のリクエストを発行するためにログインする必要がなくなります。

誰かが私が一瞥するためのフレームワーク/いくつかの読み物をお勧めできますか?

4

3 に答える 3

1

物事をできるだけシンプルにしてください。

HTTPはすでにステートレスであり、ログインの後にセッションを継続するという考え方は十分に確立されています(セッションCookie)。このパラダイムを使用すれば、問題は発生しません。

また、非常に軽量でオープンな通信プロトコルと、JSONやXMLなどの一般的なRESTペイロードのシリアル化/逆シリアル化を容易にする多くの優れたライブラリの利点も得られます。

RESTは、同じサーバーを他のクライアントと非常に簡単に使用できることも意味します。

于 2012-01-18T16:55:07.190 に答える
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 に答える
0

RESTの使用をお勧めします。承認フレームワークとして、標準コンテナのjdbcまたはJAAS上のファイルレルムを使用できます。ログイン/パスワードのペアが成功した場合は、クライアント側に保存します。その後、リクエストごとに提供された認証クレデンシャルを使用してリクエストを実行できます。これにはジャージクライアントを使用しました。XML /jsonXStreamライブラリから/への[逆]シリアル化の場合は「すべてのデータ計算を実行」します。良い1日を。

于 2012-01-18T17:06:15.740 に答える