2012-09-05 13 views
5

Apache CXFを使用してTomcatにwebserviceをデプロイしました。 OAuth 2.0を使用してそのWebサービスのセキュリティを確保するにはどうすればよいですか?oAuth 2.0を使用してapache cxf webservice(jax-ws)を保護する方法

私は以下のURLを見てきましたが、適切な解決策を見つけることはできませんでした。シンプルなWebサービスを実装するための具体的な例やチュートリアルはoAuth 2.0ですか?

オリジナルのチュートリアルへのリンク:

+2

WS-Securityのバイナリ・トークンを処理するためにカスタマイズすることができますあなたがJAX-WS(SOAP Webサービス)を書いたタイトルで、リンクがJAX-RS(REST Services)を指している、私はあなたが正しい場所を探していないと思う – jmhostalet

答えて

0

私は最近、同じ問題に直面しました。まともな量の研究の後、私はこれが非常に複雑であることを発見しました(そして、これは私だけに限られます)。

なお、このようにしてSOAPのWebサービス呼び出しに必要な「認証ヘッダー」を取り付けることができる。

Map<String, Object> req_ctx = ((BindingProvider)port).getRequestContext(); 
req_ctx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, WS_URL); 

Map<String, List<String>> headers = new HashMap<String, List<String>>(); 
headers.put("key", Collections.singletonList("yourkey")); 
//... all other parameters required. 
req_ctx.put(MessageContext.HTTP_REQUEST_HEADERS, headers); 

要求は、その後のようなサーバ側で確認することができる。

MessageContext mctx = wsctx.getMessageContext(); 

//get detail from request headers 
    Map http_headers = (Map) mctx.get(MessageContext.HTTP_REQUEST_HEADERS); 
    List userList = (List) http_headers.get("key"); 
//... get other information required here 

これでリクエストを検証できます。

サイドノートで

それは私の調査結果から、注意することがある、のOAuth2は、単にあなたのAPIを確保するために非常に有用ではありません - 単に外利用から保護。

推理

OAuthの1で、あなたはそれらのキーでユーザーを検証するために、認証を使用することができます。あなたは彼らが要求に首尾よく署名したので彼らが認可されていたことを知っていたので、あなたは彼らが情報へのアクセスを許可しました。

oAuth 2では、HTTPSを使用する必要があります。なぜあなたのAPIでアプリケーション認証を使用するだけではないのですか? oAuth 2は、元の証明書セット(プロトコルの目標)を使用して第三者アプリケーションにアクセスするのに非常に便利であることがわかりました。しかし、これを行う必要がなければ、完全なoAuthを実装する必要はありません(再度IMO)。 APIを保護するだけの場合は、SSLとキーまたはユーザー名とパスワードの組み合わせを使用してください。


も参照してください:

関連する問題