2016-06-22 7 views
0

私はpasswordグラントタイプを使用しています。このグラントタイプの性質上、クライアントはAPIによって完全に信頼されています。私の場合、彼らは同じ所有者を共有しています。FOSOAuthServerBundle - パスワード付与タイプに無制限のトークン有効期間を設定できますか?

各クライアントは、API所有者によってoauth/v2/tokenエンドポイントに手動で投稿し、アクセストークンを取得し、クライアントのデータベースに手動でドロップすることでAPIに追加されます。

クライアントがAPIサービスを使用するには、常にAPIの完全な可用性が必要です。アクセストークンが期限切れになると、そのAPI呼び出しは401 Unauthorizedの応答を返します。したがって、API所有者がリフレッシュトークンを使用してoauth/v2/tokenエンドポイントに手作業でポストバックし、新しいアクセストークンを受信し、クライアントの外部データベースで新しいクライアントのアクセストークンを更新して使用するまで利用できなくなります。

私の質問: 理想的には、私はアクセストークンが期限切れにならないようにしたいと思います。これはすべて可能ですか?私はバンドル内のコードを見ましたが、そうではありません。そうでない場合、トークンをクライアントのためにシームレスにリフレッシュさせるために、他の人々がこの問題をどのように回避していますか?

答えて

0

それは私の作品が、私はそれは本当に遠い「ベストプラクティス」であることからだと感じているため、これは本当に答え以上のコメントである場合、私は知りません。しかし、私はコメントするのに十分な評判はありません。とにかく:

私がしたことは、手動でaccess_tokenテーブルのヌルに'expires_at'を設定するだけです。私は非常に非常にごくわずかなクライアントとトークンを処理する必要があるため、phpmyadminで手動で行いました。

これを '自動化'したい場合は、AccessTokenエンティティのpre_persistイベントにフックし、持続する前に'expires_at'をnullに設定します。私はそれがうまくいくと思います。

おそらく「ベストプラクティスは、」クライアントアプリケーションでトークンリフレッシュを扱うことであろう。つまり、まずAPIへの接続を行い、401応答(Unauthorized)の場合は、トークンをリフレッシュして接続を再試行します。私はパフォーマンス上の理由からこの方法を試して欲しかった。

関連する問題