2012-06-27 18 views
5

Grailsを使用してREST APIを構築しています。 OAuth2.0のclient_credentialsフロー(grant_type)を使用して保護する必要があります。次のように私のユースケースは、次のとおりです。Grails:OAuth2.0でREST APIを保護

外部エージェントが

http://server-url/oauth/token?client_id=clientId&client_secret=clientSecret&grant_type=client_credentials 

のようなものにリクエストを送信し、access_tokenはを取得します。その後、私のURL(保護されたリソースは)私は、簡単かつ迅速にGrailsの上でこれを行うことになり、何かを探しています

http://server-url/resource?access_token={access-token obtained before} 

のようなものを持つづけしなければなりません。どのような方法/ツール/これに使用するプラグインは、最善の方法になりますか?スクライブライブラリはオプションです。特定のユースケースのチュートリアルがあれば、それは素晴らしいことです。

P.Sは:私は、春・セキュリティおよび関連プラグイン、そこには喜びを試してみました。どんな選択肢もいいだろう。

+0

で実行されています。これを記録する。 –

答えて

-1

私の経験に基づいて、スクライブのOAuth 1.0のために構築されており、OAuth 2.0のためのサポートは非​​常に限定されていました。実際に、独自のOAuth 2実装をテストするためには、HTTPリクエストラッパーを使用するだけで、手動で何かを行う必要がありました。幸いにも、手動で行うことは驚くほど簡単です。

Java用のオープンなOAuth 2.0ライブラリがまだありませんでした(率直にも私はGroovyに精通していません)ので、自分でクライアントコードを書くことをお勧めします。クライアントのクレデンシャル・グラント・フローを使用するためにクライアント・コールバック・エンドポイントは必要ありません。したがって、単にHTTPリクエストを作成するだけです(すでに書いたように、GETパラメータからエスケープしてください)、レスポンスの内容を取得してください。あなたのフローはリダイレクトを使用しないので、応答コンテンツのJSONオブジェクトを解析するだけです(例: org.jsonライブラリを使用します。最後に、抽出されたアクセストークンを使用してHTTP要求を送信します。あなたの例では、完全に標準に準拠していない

注意。標準ではHTTPSを使用し、GETパラメータではなくHTTPヘッダーにトークンを送信する必要があり、GETパラメータの代わりにHTTP基本認証ヘッダーを使用してクライアントの資格情報を指定することを推奨しています。

私はあなたの質問を誤解している可能性があり、そしてあなたも、サーバ側を実装することをお勧めします。スクライブライブラリはクライアント側のみをサポートしているため、商用実装を見つけるか、独自のサーバを実装することができます。複雑な作業ですが、クライアント資格情報フローだけをサポートすると、ほとんど簡単になります。

+0

あなたの入力をありがとう。しかし、私はサーバー側の実装に興味があります。私はOAuthのセキュリティ専門家ではなく、セキュリティの欠陥を残したくないので、最初から実装するのは躊躇しませんでした。正確には、私は生成されたアクセストークンを保存/管理するのに役立つものを探していました[有効期限が過ぎると自動的に無効にする]などです。もちろん、ゼロから行うことはできますが、いくらかのギャップが残る可能性があります。 Javaの場合、これはサーバー側にトークンなどを生成、保存するための簡単なインターフェイスを提供するものですか? – SoftDev

+0

私はそのようなライブラリは知っていませんが、トークンストレージはクリアインターフェース(ストア、ロード、および取り消し操作は必要なものすべて)でプラグインとして実装するのが最も簡単です。クライアントの資格情報の許可フローを実装するセキュリティの詳細と、クライアントの資格情報の事前定義された権限を格納することについて、より多くのことを心配する必要があります。 –

2

;-)私は同じ問題を持っています。私は他のoauthプロバイダに対してあなたのアプリケーションを認証するのに役立つ多くのgrailsプラグインを見つけましたが、私のアプリケーションをoauthプロバイダにするのに役立つものは何もありません。たくさんの掘り出した後、私はあなたが望むものを正確に行うこのgrailsプラグインを見つけました。

https://github.com/adaptivecomputing/grails-spring-security-oauth2-provider

私はまだ自分のアプリケーションのためにそれを構成しています、と私は、ドキュメントは、いくつかの編集(特にauthorization_codeの流れを)必要があるかもしれませんが、私はシンプルなclient_credentialsは、最小限の構成で動作するように流れてしまったと思います。希望が助けてくれる!

+0

そのプラグインは実際にはドキュメントの点で欠けており、放棄されています。 Grailsの代わりにSpring Rooを使用して終了しました。 Rooにはとても良いプラグインがあり、RooはバニラSpring MVCのリパッケージにすぎないので、もっと公式なドキュメントを入手できます。いずれにしても、Grailsが要件でない場合、SpringSourceファミリ製品(Spring MVCやRooなど)がOAuth実装のために優れた仕事をするかもしれません。これは興味のある人のためのヒントです。それは答えではないと思われるので、私はコメントの中でここを去った。 – petersaints

-1

これはプラグインではなく、単にGrailsアプリケーションのサンプルで、OAuthプロバイダとして機能します。申し訳ありませんが、スクライブは一瞬だけ、クライアント側であるまで取得することは本当に簡単だったとGrails 3

https://github.com/bobbywarner/grails3-oauth2-api

関連する問題