2009-06-18 25 views
0

私は、クライアントがユーザ名とパスワードでログインする必要があるカスタムクライアント/サーバアプリケーションを開発しています。ユーザーアカウントはWindows/ADアカウントとは関係ありません。ログイン後、クライアントアプリケーションはサーバーシステムから他のサービスを要求します。クライアント/サーバアプリケーションの認証とセキュリティモデル

私の質問はこれを実装する最良の方法は何ですか?ここでどのようなアーキテクチャが最適でしょうか?私はチケット/トークン認証システムのいくつかの種類を実装する必要があると思いますか?あなたはそれがクライアント/サーバである以外に、あなたのアーキテクチャについて多くを語っていないので、私はあなたがVS.でWindowsフォームのようなフォームデザイナーのいくつかの並べ替えを使用していると仮定しています

おかげ

答えて

1

あなたは実際には異なる部分(ログインサーバー、クライアント、アプリケーション・サーバ)との間に沿って、「チケット」を渡すシステムを実装することをお勧めします。このチケットには、ユーザーID(ユーザー名、行IDなど)などの基本情報が含まれます。このチケットは、許可されたサーバが共有する秘密鍵で暗号化されるか、またはサーバが共有する秘密鍵で暗号化されたチケットコンテンツのハッシュでスタンプされます。第1の方法は、許可されたサーバーだけがチケットを作成して読むことを可能にし、第2の方法は、許可されたサーバーが、チケットを作成したが、誰でもそのチケットを読むことを許可できることを確認することを可能にする。すべてのアプリケーションサーバーは、保護する必要のある操作を続行する前に、チケットをチェックします(復号化を試みるか、またはハッシュが一致することを確認して)。これがウェブアプリの場合、クッキーはチケットを保存するのに適しています。

+0

コード例はありますか?言語とプラットフォームは関係ありません。 –

0

このような場合、私はいつも簡単でセットアップが簡単で、合理的に安全であるため、何らかの形式のデータベーステーブル認証を使用してきました。このようにしてグループやロールを設定することもできます。

Table: Users 
Fields: UserID PK 
     Login Text 
     Password Text 
     ... 

Table: Roles 
Fields: RoleID PK 
     Role  Text 
     ... 

Table: UserRoles 
Fields: UserID FK 
     RoleID FK