5

Grailsを使用してRESTAPIを構築しています。OAuth2.0 client_credentials flow(grant_type)を使用して保護する必要があります。私のユースケースは次のとおりです。

外部エージェントは、次のようなものにリクエストを送信します

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

access_tokenを取得します。次に、私のURL(保護されたリソース)は次のようなものでアクセス可能である必要があります

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

Grailsでこれを簡単かつ迅速に実行できるものを探しています。これに使用するのに最適な方法/ツール/プラグインは何ですか?Scribeライブラリはオプションです。私の特定のユースケースのチュートリアルがあれば、それは素晴らしいことです。

PS:私は春のセキュリティと関連するプラグインを試しましたが、そこには喜びがありません。どんな選択肢もいいでしょう。

4

3 に答える 3

2

同じ問題があります。他の oauth プロバイダーに対してアプリを認証するのに役立つ多くの grails プラグインを見つけましたが、私のアプリを oauth プロバイダーにするのに役立つものは何もありませんでした。掘り下げた後、私はまさにあなたが望むことをするこのgrailsプラグインに出くわしました。

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

私はまだアプリケーション用に構成しています。ドキュメントにはいくつかの編集が必要になると思いますが (特に、authorization_code フロー)、最小限の構成で動作するように単純な client_credentials フローを取得しました。それが役立つことを願っています!

于 2012-07-19T18:45:16.827 に答える
-1

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

Java 用の優れたオープン OAuth 2.0 ライブラリーをまだ見つけていないので (率直に言って、Groovy には詳しくありません)、クライアント コードを自分で作成することをお勧めします。クライアント資格情報の付与フローを使用するために、クライアント コールバック エンドポイントさえ必要ありません。したがって、HTTP 要求を作成するだけで (既に上で書いたように、GET パラメーターをエスケープするように注意してください)、応答コンテンツを取得します。フローはリダイレクトを使用しないため、たとえば org.json ライブラリを使用して、応答コンテンツ内の JSON オブジェクトを単純に解析します。最後に、抽出したアクセス トークンを使用して HTTP リクエストを送信します。

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

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

于 2012-06-27T14:56:31.963 に答える