2016-05-04 7 views
5

OAuth 2.0で保護するJerseyベースのサーバーがあります。私は共通として見てきた2つの経路があります。JerseyベースのRESTfulサーバーにOauth 2.0を追加する

  • Oltu - ジャージーとの互換性とサポートされているようだ、ではないがだけでなく、春のセキュリティです。 This 2012 questionはこれが行く方法だと思っているようですが、私は2016年の状況で確認したいので、もうサポートされていないものも実装しています。
  • Spring Security - これは普及しているようですが、このパスはサーバーをSpringベースのMVCに変更することを意味します。 Springとして広くサポートされているものとリファクタリングのコストを使用するメリットに基づいて推薦できるものかどうかはわかりません。

私は、開発中のプロジェクト、チュートリアル、資料、および既に利用可能なクライアント(ウェブ、モバイル、サーバー)用のライブラリを持つよく確立されたコミュニティを意味します。

どちらが強力なオプションですか?別のオプションがありますか?

いずれにしても。これを実装するための参考資料やチュートリアルはありますか?


UPDATE

私が述べていたのOAuthプロバイダーの両方について読んで理解するのは数時間後、私は文書化されていないキーコンポーネントがあるとしてApache Oltuのdocumentationはずっと私を案内していなかった感じしかし、exampleは、私にどのようにしてOltuを実装しなければならないかについてのより良いイメージを与えました。一方、Spring Security's materialを介して、私はそれがまだ非Spring MVCベースのJavaプロジェクトで構築できることを知る必要があります。しかし、Spring以外のプロジェクトでは、Spring Securityの実装/チュートリアルの公開は限られています。

別のアプローチ:

私はより安定であるかもしれないと内部サーバー(すでにジャージーを使用して実装1)の実装の詳細を気にしないだろうなアーキテクチャを思い付きました。セキュリティ目的(外部データベースと内部サーバーの間のゲートウェイのような役割を果たす)で中央にある認証、認証、トークンを独自のデータベースに格納するために専用されたサーバーを持つ。本質的にリレーを実行し、呼び出しを前後にルーティングし、クライアントが内部サーバーについて何も知らず、両方のエンティティがセキュリティサーバーとだけ通信することを保証します。

  1. 他のセキュリティプロバイダに置き換えると、セキュリティサーバの実装を外して新しいものを追加するという意味です。
  2. セキュリティサーバーは内部サーバーの実装については何も気にせず、呼び出しは引き続きRESTful標準に従います。

このアプローチに関するご意見やご感想をお寄せいただきありがとうございます。

答えて

0

私は、ジャージ自体の内部に実装されているoauthコネクタを使用する方がはるかに簡単だと思います! ジャージー独自のOAuth(すでにジャージーにリンクされている)サーバー/クライアントを使用することを検討しましたか? https://jersey.github.io/documentation/latest/security.html#d0e12970

に見てみてください。

16.3.2。 OAuth 2サポート

希望しました。 :)

+3

ジャージーのOAuth 2サポートは、クライアント側のみです。 –

+0

川崎隆彦、もう一度質問を読んでいますが、vardhinisuresh27は自分自身のoauth内部メカニズムを実装したいとは思いません。既に開発され提供されているものを使用しないでください。 – jeorfevre

+0

vardhinisuresh27がOAuth 2.0 _client_を実装したい場合、JerseyのOAuth 2.0サポートを使用できます。一方、彼がOAuth 2.0 _server_を望むならば、Jerseyはこのシナリオをサポートしていないことを指摘しなければならない。 OAuth 2.0 _server_の両方のソリューションであるOltuとSpring Securityについて言及したので、OAuth 2.0サーバーを実装したいと思っていました。 –

1

アパッチOltuOpenID Connectをサポートしていますが、そのアーキテクチャが悪いです。たとえば、OpenIdConnectResponseOAuthAccessTokenResponseの子孫であってはなりません。なぜなら、OpenID Connectの応答には常にアクセストークンが含まれているわけではないからです。さらに、ライブラリにはGitHub固有のクラス、GitHubTokenResponseが奇妙に含まれています。

スプリングセキュリティは有名ですが、OpenID Connectをサポートすることはできません。 OpenID Connectサポートの大きなハードルについては、Issue 619を参照してください。

java-oauth-serverjava-resource-serverAuthlete、ジャージー+ OAuth 2.0の良い例ですが、彼らは、市販のバックエンドサービスを使用しています。 (私は彼らの著者です。)

OpenAMMITREid接続GluuConnect2id、およびその他のOAuth 2.0 + OpenIDの接続ソリューションは、OpenIDの財団のLibraries, Products, and Toolsページに記載されています。質問

RFC 6749(OAuth 2.0の認証フレームワーク)の更新のため


UPDATEリソースサーバから 認可サーバを区別する。要するに、認証サーバーはアクセストークンを発行するサーバーであり、リソースサーバーはアクセストークンに付随する要求に応答するサーバーです。

リソースサーバーの場合、APIゲートウェイは最近のデザインパターンの1つです。 Amazon、CA Technologies、IBM、OracleなどがAPI Gatewayソリューションを提供しています。 API Gatewayアーキテクチャはあなたの考えに近いかもしれません。いくつかのAPIゲートウェイソリューションは、アクセストークンを独自の方法で検証します(ソリューションにはアクセストークンを発行するメカニズムがないため)だけでアクセストークン検証を外部サーバーに委任します。たとえば、Amazon API Gatewayは、アクセストークンの検証を外部サーバーに委任する例です。外部サーバーは、Amazonがというカスタム承認者という名前を付けました。カスタムオーソライザーの詳細については、以下を参照してください。

認証サーバを使用すると、使用することができます(例えばRFC 7662など)イントロスペクションAPIを提供している場合アクセス・トークンに関する問合せ情報を使用すると、リソース・サーバーの実装では、比較的簡単に参照するために認可サーバーを置き換える(プラグインおよび追加)ことができます。

認可サーバーの場合、ゲートウェイ形式のソリューションはほとんどありません。そのようなソリューションは、Web APIとして認可サーバーを実装するために必要なすべての機能を公開する必要があるからです。 Authleteそのような解決策ですが、私は他人を知らない。

+0

@ vardhinisuresh27私はあなたの追加の質問に対して私の答えを更新しました。 –

関連する問題