2011-06-30 7 views
2

私はちょうど助言を求めています。基本的にJBoss上で実行されるRESTサービスの束である私のamazonクラウドインスタンスでシステムを稼働させています。私の次のステップは、クレジットカード情報が流れるようにこれらのサービスを確保することです。私も認証が必要なので、私の質問は、RESTサービスに使用できる最も安全な方法は何ですか?Jersey RESTサービスを安全に保護するための最も安全な方法

もちろん、CAの証明書はCAを使用してデータを暗号化するため、おそらく私が開始する場所です。 パパはこれについて評判がいいですか?または、私はverisignのためにたくさんのお金を払わなければならないのですか?

認証には、単純に基本認証を行うか、発信者が何とかリクエストに署名するだけで十分でしょうか?その他の方法は?

OHクライアントアプリケーションはiPadアプリケーションです。アドバイスをいただきありがとうございます。

答えて

0

certsを使用することは、セキュリティの大きな出発点です。 Thawteは、価値とサポートされるクライアントとの間のバランスが良いと感じました。 GoDaddyは、(Java、Objective-C/iPad、ブラウザなど)期待していただけのクライアントではサポートされていませんでしたが、今のところ変更されている可能性があります。あなたは確かにあなたが気にしているクライアントによってサポートされている証明書を確実にしたいと思っています(あなたの場合はObjective-Cです)。

基本認証はhttpsで問題ありません。URL自体が表示されているため、idsやトークンなどのURLに何も公開しないようにしてください。 httpsですべてのデータをPOSTすると、良いスタートを切ることができます。

2

中間の攻撃で人間から身を守り、要求の再生を防止したいと考えています。 支払い関連の情報が中継されている場合はいつでも、ノンスとタイムスタンプを使用してリクエストに署名することを選択します。 これには、クライアントとサーバー間の共有秘密情報を使用して要求に署名することが含まれます。シークレットはログイン時に一度だけ渡すことができます。

符号付きバイトの一部として、タイムスタンプとクライアントで生成された一意のノンス値を使用します。 これらの値は、サーバーが要求を再アセンブルできるように、要求のヘッダーとして戻されます。カールから実行

典型的な要求は次のようになります。

curl -v -H "Content-Type: application/json" -H "Authorization: ff7b93ad-27d0-49f6-90bd-9937951e5fcc:ncYoA5n5s2nFSm7qyvf5hDgL4pmmPOUP3zo/UYfaQKg=" -H "x-date:2013-03-28T19:34:00+00:00" -H "nonce:2d1321d32a" -X GET 'http://localhost/orders/123' 

Authorizationヘッダは、要求した後、署名された要求のハッシュを識別するためのIDを含んでいます。 日付ヘッダーは、サーバー時間の一定のオフセット内にある必要があります(15分は合理的な制限です)。

私は完全なコード例を持っていますhere

関連する問題