[Java, Security] OAuth with Jersey 2
Sabtu, 16 November 2013
0
komentar
https://blogs.oracle.com/mira/entry/oauth_support_in_jersey_2
Jersey 2.3でOAuthのサポートが追加されました。OAuthのサポートについては、サンプル月で以下のドキュメントで説明があります。
Jersey 2.4.1 User GuideOAuth 1 をJersey 1.xから移行しました。OAuth 1用のサーバーAPIをあまり変更せず、利用方法の基本原則はJersey 1.xと同様にしています。APIでは認可フローとOAuth 1認可ヘッダー(OAuth1署名を含む)を使う認証をサポートします。アクセストークンやリクエストトークン、利用者の資格証明を管理するOAuth1Providerのご自身の実装を登録することができます。実装はトークン作成ならびにトークンの保存(例えばデータベースへ保存)の責務を負います。残りはJerseyがやってくれます。
Security > OAuth Support
https://jersey.java.net/documentation/latest/security.html#d0e9038
クライアントAPIは、認可フロー(ユーザー認可プロセス)の実行方法が大きく変わりました。認可フローはもはやクライアントフィルタに含まれず、スタンドアロンのツールに分離されています。API変更の理由は、クライアントがWebアプリケーションである場合に認可フローを簡単に利用できるようにするためでした。以前のAPIでは、クライアントフィルタから例外を送出し、ユーザーコードがその例外を処理し、ユーザーをリダイレクトして再度リクエスト(認可フローを終了させるフィルタを再度呼び出すリクエスト)を呼び出す、ということによってのみユーザーのリダイレクトが可能でした。現在ではフィルタを使ってOAuth署名を
Authorization
ヘッダーに追加するだけで、認可フローは完全に分離されています。このことにより、様々なユーザーが何度も一つのクライアントインスタンスを再利用して認可フローを実行することができます。さらに、認可フローのAPIは認可プロセス内で例外の送出、捕獲を必要としません。OAuthサポートを使ってTwitterに接続するOAuth 1クライアントのサンプルをチェックしてください。
oauth-client-twitterJersey 2でのOAuth 2 のサポートは現在クライアント用のみ実装されています(このエントリ執筆時現在のバージョンは2.4.1)。The API for OAuth 2クライアントをサポートするAPIは、Jersey 2でのOAuth 1クライアントをサポートするものと類似しています。
https://github.com/jersey/jersey/tree/master/examples/oauth-client-twitter
OAuth 2 APIの使用例です。
認可フローは OAuth2ClientSupport という静的メソッド(OAuth 2クライアントAPIへアクセスするためのメインクラス)を使って構築されています。クライアントアプリケーションの資格証明(clientId)と認可フロー時に使うURIをを渡す必要があります。これらのパラメータは全てサービスプロバイダが発行します。サービスプロバイダはユーザーの同意を得てアクセスしたい当事者です。Auth2CodeGrantFlow flow = OAuth2ClientSupport
.authorizationCodeGrantFlowBuilder(clientId, authUri, accessTokenUri)
.scope("contact")
.build();
これで、
flow
オブジェクトを使い、認可URIを生成して、認可フローを開始することができます。String finalAuthorizationUri = flow.start();
finalAuthorizationUri
とはユーザーをリダイレクトする先のURIです。これにはクエリパラメータが含まれており、その一つがclientId
です。ここで、ユーザーを認可URIにリダイレクトする必要があります。アプリケーションをサーバー上で利用する場合は、flow
オブジェクトを(キャッシュに)格納し、ユーザーリクエストに対しHTTPのステータス303を返す必要があります。その際、認可URIを location
ヘッダーに入れておく必要があります。ユーザーをサービスプロバイダにリダイレクトし、ユーザーにアプリケーションへ権限を付与するかどうかを尋ねるページを表示します。承認後、ユーザーをアプリケーションにリダイレクトします。code
と state
パラメータをリクエストから取り出し、これらを使って認可を終了します。このメソッドは、内部でTokenResultに返されるサービスプロバイダからアクセストークンを要求し、その後最終的に、リクエスト内のAuthorizationヘッダーにあるこのトークンを使って、サービスプロバイダにクライアントアプリケーションを認証させることができます(JerseyはOAuth 2認可ヘッダを追加するフィルタを提供します)。TokenResult result = flow.finish(code, state);
Jerseyには、OAuth 2のクライアントサポートを使用し、WebアプリケーションでGoogleアカウントからタスクを取得するという、OAuth 2サンプルが含まれています。
oauth2-client-google-webappJerseyでOAuthサポートを試すには、Jerseyのドキュメントで手順を確認して下さい。
https://github.com/jersey/jersey/tree/master/examples/oauth2-client-google-webapp
Jersey 2.4.1 User Guide
Security > OAuth Support
https://jersey.java.net/documentation/latest/security.html#d0e9038
TERIMA KASIH ATAS KUNJUNGAN SAUDARA
Judul: [Java, Security] OAuth with Jersey 2
Ditulis oleh Unknown
Rating Blog 5 dari 5
Semoga artikel ini bermanfaat bagi saudara. Jika ingin mengutip, baik itu sebagian atau keseluruhan dari isi artikel ini harap menyertakan link dofollow ke http://apk-zipalign.blogspot.com/2013/11/java-security-oauth-with-jersey-2.html. Terima kasih sudah singgah membaca artikel ini.Ditulis oleh Unknown
Rating Blog 5 dari 5
0 komentar:
Posting Komentar