2012-10-03 7 views
6

私はサービス指向アーキテクチャを設計しており、クライアントを認識してリソースにアクセスできるようにするために認証サービスも必要です。 pubkeyでとのPrivateKey SOA - 認証サービス設計

を用いpubkeyでとのPrivateKey

  • トークンベースの認証を使用して、各単一の要求は、私がのOAuth2を想定していないよ

    • 記号:

      は実際に私は2つの可能な解決策を見つけました私のニーズに合わせてシステムを設計するにはあまりにも多くのオーバーヘッドを追加することになるため、より単純な(しかし強力な)認証ソリューションを採用することを好む。

      ここで私は、APIリクエスト(リクエストと一緒に渡すトークンを取得する)によってクライアントに照会されるか、または各単一のAPIエンドポイントによって照会されて、HMACの逆チェックを実行するかのどちらかを問わず、AuthenticationService一致するかどうかを確認する要求に署名した(HMACを生成するために使用された秘密鍵が有効かどうかを確認する)。

      私はいくつかの操作を行い、最終的な開発者のための簡単であるために、最新のを見ることができますが、それはまた、トークンを検証し、それが有効期限です処理するために多くのチェックが必要になります...

      何潜在的なセキュリティ上の問題

      でしトークンソリューション単一要求のHMACはそうではないと提起するか?あなたは何を好きですか、おそらく理由は何ですか?

  • +0

    _SOA認証ではどういう意味ですか?独自のSOAスイートを構築していますか? SOAは多くのテクノロジー(メッセージング、Webサービス、BPELなど)の複合体であり、使用するSOAスイートでは、ESBの外部から来ているかどうかにかかわらず、リクエストごとにユーザーを認証するための既成の手段を提供する必要がありますそれの。 –

    +0

    私は、アーキテクチャ全体がサービス指向で構築されていることを意味します。すべてのサービスは、要求を許可/拒否するためにユーザーが誰であるかを認識する必要があるため、認証が必要です。これは独立したサービス自体でもあります。 –

    +0

    @ AlonsoDominguez私はポスト本体を編集しました。あなたは正しいでしょう。おそらく、 "SOA認証"として明確ではないかもしれません。 –

    答えて

    7

    最終的に私は同じAmazonソリューションに基づく認証サービスを設計しました。 ユーザーは、秘密鍵を使用して各要求に署名する必要があります。したがって、リクエストは、 "PUBKEY:SIGNATURE"という値を持つAuthorizationヘッダーを送信します。このシグネチャは、Dateヘッダーの内部で渡される任意のリクエストデータ(リクエスト本体そのもの)とタイムスタンプで構成されたHMACです。この実装は、MITMとリプレイ攻撃を回避するのに十分強力です。

    hereは実際の実装を理解するのに役立つ素晴らしい説明です。

    これは本当に同じ問題に直面している世界中の誰かを助けることを願っています。

    +3

    私はこの6ヶ月間に、この正確な問題についてほとんど話していないことに非常に驚いています。 Kerberos、CAS、SAMLなどのヘビーなものを使用したフェデレーションされたIDだけでなく、単一のアプリケーションとそのWebサービスの認証と認可に関する議論はもちろんあります。私はこのタイプのもののためにOAuthにサービスを強制し続けます。あなたはOAuthを検討しましたか?代わりにあなたは自分のソリューションを実装するように導いたのですか? –