私は OAuth2 と Perl (つまり Net::OAuth2) に頭を悩ませようとしています。具体的には、データベース用の RESTful API とそれを使用するアプリケーションをセットアップします。
Perl Oauth2 パッケージにより、Net::OAuth2 にたどり着きました。
私が把握できる限り、私がしなければならないことがいくつかあります (私がどこかで雑草を離れている場合は、私を修正してください):
- サーバー側: データベースと対話する REST サーバーを構築します (現在、このために mojolicious で遊んでいます)。
- サーバー側: 認証・認可サーバーの構築 (??)
- クライアント アプリケーション: WWW::Mechanize (またはそのようなもの) を使用して REST サーバーと通信します。
私の頭の中では、これがどのように機能するかです:
- クライアントアプリにはAPIキーがあります(サーバー(RESTサーバー?認証サーバー?)に登録され、クライアントに「焼き込まれています」)
- ユーザーは、サーバー上のデータベースのテーブルにエントリ (ユーザー名とパスワード) を持っています
- ユーザーはクライアント アプリを起動し、保護されたリソースにアクセスしようとします (行を更新するなど) (ここでも、たとえば、クライアントで [この操作を行う] メニュー オプションを選択することにより、クライアントはそれを REST API に変換します)。 URI、例: http://the.rest.server/api/thisthing )
- サーバーはクライアントを (サーバーの) 認証/承認ビットにリダイレクトします
- サーバー、クライアント、およびユーザーは魔法の OAuth ダンスを実行してユーザーを認証します
- サーバー、クライアント、およびユーザーは、別の魔法の OAuth ダンスを実行して、ユーザーがそのリソース URI を参照する権限を持っていることを確認します。
- すべてが正常な場合、サーバーはクライアントを最初に要求されたリソース URI に再リダイレクトします (認証パラメーターが必要な場合)。
それはプロセスの合理的な評価ですか?
もしそうなら、「認証/承認」をRESTサーバーの一部として、または完全に別のサーバーとして持つ方が理にかなっていますか? (同じハードウェア上)。
Net::OAuth2::Profile::WebServerは、クライアント アプリケーション側で何が起こらなければならないかをうまく説明しています。
http://cpansearch.perl.org/src/MARKOV/Net-OAuth2-0.55/t/のテスト(本当に何かが足りない場合を除きます) は、(再び) Net::OAuth2 Web サーバー プロファイルの操作に関するものです。 「クライアント アプリケーション」になります。
クライアントを作成するための他の例があります – Google API などの既存の OAuth2 サーバーに接続します – しかし、サーバーを作成する例を見つけることができません.... FMを見つけてください...ポインタを高く評価します!)