1

Railsアプリ用のAPIをリリースし、Oauth2を使用して保護しています。Oauth2プロバイダーを処理するようにDoorkeeperをセットアップしましたが、うまく機能します。ここのチュートリアルに従って、単一のセッションでクライアントを認証およびセットアップできます。APIを介してアカウントにアクセスできるようにGemをリリースしたいのですが、アプリの認証を1回だけ行う必要があります。だから、私はいくつかの質問があります:

  1. これを行うには、アクセストークンを保存する必要がありますか?ほとんどのAPIでは、キーとシークレットを保存する必要がありますが、トークンも保存する必要はありません。
  2. 保存する必要がある場合、保存されている値から新しいトークンをインスタンス化するにはどうすればよいですか?
  3. それを保存する必要がある場合、有効期限が切れていないトークンを持っていることは、セキュリティの観点から問題ですか?その場合、更新トークンを有効にする必要がありますか?

一般的に言って、APIへのより良い/より標準的なアプローチはありますか?ユーザーは出荷可能な注文を作成できるようになるため(つまり、お金がかかる)、セキュリティはここではかなり大きな懸念事項です。

4

1 に答える 1

2

あなたの質問が正しかったことを願っています。そうでない場合はお知らせください。だからここに行きます。OAuth2 にはリソース オーナークライアントがあります。あなたの場合、API のユーザーは client です。通常、彼らはシステム上のリソースへのアクセスを含むリソース所有者にサービスを提供しています。各クライアントは、クライアント固有のクライアント キーとシークレットを取得する必要があります。彼らは、ドアキーパーがアプリケーションに追加する /oauth/applications UI を通じてそれを取得します。ライブラリではなく、このトークンを提供する必要があります。とにかく、キーとシークレットはクライアントごとに一意であるため、それはできませんでした。ここを読むと、流れをよく理解できます。

システムに個別のリソース所有者とクライアントの概念がないため、OAuth2 が本当に必要ない場合もあります。その場合、OAuth2 を使用する必要はありません。単純なトークン認証を使用できます (devise にはそのようなオプションがあると思います。詳細については、この質問を参照してください)。OAuth2 でクライアント資格情報フローを使用することもできますが、それはやり過ぎのように思えます。

于 2012-07-10T17:28:56.497 に答える