web-dev-qa-db-ja.com

REST SlimFrameworkを使用したAPIクライアントシークレット

単純なREST API(Slimフレームワークを使用)を設定して、ユーザーが次のようなページを呼び出すことができるようにしました。

subdomain.domain.com/api/musician/id/3273

いくつかの単純なJSONデータを取得して表示します。

これに認証を追加して、(少なくとも)何らかのクライアントIDを持つユーザーのみがこのデータにアクセスできるようにします。ユーザーがURLでクライアントのシークレット/ ID情報を渡せるようにしたいのですが、REST構造をあまり気にせずに、これを実行したいと思います。

これを達成するために特に効果的な特定のフレームワークまたはライブラリはありますか?

12
user1427661

私もしばらくの間この問題を抱えていましたが、このトピックに関する回答のない質問もあります(ここではそうです)。

基本的にあなたの選択はOAuthまたは何かカスタムです。

現在、oauthの場合、バージョン2.0で動作しているため、OAuth 1を使用して新しいプロジェクトを開始するべきではありませんが、oauth2はまだ完成しておらず、サポートもほとんどありません。 php用のoauth2サーバーの場合。oauth22-legged/ 3-leggedが複雑であるとは言いたくありませんが、それは本来あるべき以上であり、これに関する多くの投稿を読んだ後、私は今のところ、oauthではなく他の何かを使用する必要があります(また、oauth作成者の1人がこのプロジェクトの方向性に満足していなかったためにプロジェクトを離れました) 「未定」の状態(もちろん、それはほとんど使用できる状態にあると人々は主張しますが、私は気にしません、私はすでに証明されたものが欲しい、大企業がテストするための実験室になりたくないoauth [はい、oauthはあなたの利益ではなく、大企業の利益になります])。

とにかく、私の問題に戻ると、AmazonがAPIを操作する方法が好きでした。実装はとても簡単なので、同じ方向に進んでみませんか?つまり、Amazonは世界最大のAPIプロバイダーの1つであり、Amazonを使用する場合、そうする本当の理由があります。
言ってやった、2時間以内に認証/承認プロトコルを稼働させたのですが、簡単でシンプルで、書くのが楽しいと思います(oauthのせいでイライラすることはありません)。私が始めるのを助けた良い記事はこれでした: http://www.thebuzzmedia.com/designing-a-secure-rest-api-without-oauth-authentication/ これは基本的にあなたがしなければならないことを説明しています行う。

だから、もし私があなたなら、そこから始めます:)

8
Twisted1919

APIクライアントがユーザーに「代わって」行動していない場合、OAuthは私の意見ではやり過ぎです。

発行できる標準のAPIキーが機能します。必要に応じてリクエスト署名を追加することもできます。

いくつかのスリムな例: ここ および ここ

5
Shane O'Grady

多分これは役に立つかもしれません slim HttpBasicAuth

リクエストごとにHTTP基本認証を使用して、リクエストを実行するユーザーが有効なユーザーであるかどうかを検証できます。

2
Yago Riveiro

RESTはステートレスであるため、ユーザーごとに異なるデータ表現(ergo-ステートフル)が必要な場合は、ほとんどの場合、それを処理する必要があります。つまり、リクエストごとにデータを提供します(ユーザーの状態について)。 )特定のエンティティには関係ありません。

したがって、毎回ユーザーを認証するか、一時的なCookie +セッションを認証するか、サードパーティが関与している場合はOAuthを認証します。

参照 Dave Ingram-APIデザインプレゼンテーション

1
Artjom Kurapov