0

Web サービスがあり、呼び出し元の ID に基づいて結果を設定する必要があります。

サーバー上のインターフェースを次のように定義するのは魅力的です。

public String[] getUserLogFile(int userId){
    return logDAO.getLogs(userId);
}

ログイン時に、Web サービスは userId を返します。クライアントは、今後の呼び出しにこの userId を含めることができます。ただし、クライアントが独自の userId を設定した場合、発信者は他の userId を試すことができます。これはセキュリティ上の問題を引き起こします。

Web サービスの呼び出し元を識別する最良の方法は何ですか? サーバーは Java です。クライアントは iPad、.Net、Android などです。

ありがとう。J.

4

1 に答える 1

1

シンプルだが効果的なセキュリティ戦略は、Web サービスを SSL で保護し、呼び出しごとに基本認証ヘッダーを渡すことです。このセットアップの SSL 部分は重要です。クライアントは、各呼び出しに次の形式の認証ヘッダーを含めます。

承認: 基本 QWxhZGluOnNlc2FtIG9wZW4=

エンコードされた文字列は、base 64 でエンコードされたユーザー名とパスワードを連結したものです

Base64(username:password)

これにより、クライアント側の責任が処理されます。サーバー側では、すべての着信呼び出しで認証ヘッダーを調べたいと考えています。存在する場合は、それをデコードし、ユーザー名とパスワードを分割し、これら 2 つの情報を使用して要求を認証します。通常、認証時にユーザーのセキュリティ プリンシパルを作成します。これには、ユーザーとそのロール (またはアプリケーションの承認) に関する基本情報が含まれます。効率化のため、この作業は通常、Web フィルターで行われます。多くのサーバー側タスクを自動化する次のライブラリをお勧めします。

于 2012-11-20T06:27:00.360 に答える