ユーザー名とパスワードの許可を使用して、JS クライアントを REST サーバーに接続します。ある意味では、oauth/token によって返されるトークンは私たちのセッションであり、限られた時間だけバックエンドへのアクセスを許可します。
トークンを使用してバックエンドにリクエストを行うたびに、そのセッション/トークンを更新したいと考えています。
サーバーによって発行されたこの更新トークンがあることを知っており、期限切れになった後、それを使用してトークンを更新できます。
問題は、トークンの有効期限が切れた例外をキャッチし、トークンの有効期限が切れる前に再認証または更新をスケジュールすることをクライアントの責任にしたくないということです。セッションのように、トークンが限られた時間使用されなくなるまで、トークンをリフレッシュしたい。(また、すべての「データ」リクエストでリフレッシュリクエストを発行したくありませんが、読んだことは覚えていると思いますが、リフレッシュトークンは一度しか有効ではありません..?!)
春のセキュリティでそれを行う方法はありますか、それともトークンストアまたは選択した部分のカスタム実装を構築する必要がありますか?
私は本当に答えを見つけることができないので(したがって投稿)、考えています:理由はわかりませんが、これを行うのは賢明ではないかもしれません。トークンを盗むことができれば、リフレッシュ トークンも盗むことができます。ですから、そもそもリフレッシュトークンを持つ意味がよくわからないと思います..
編集
Luke Taylor の回答に応えて、ユースケースを明確にします。
- 人のようなアプリケーション データを保持する REST サーバーがあります。また、コンテンツ管理へのアクセスを提供し、クライアントが Facebook に投稿できるようにします。アプリケーションロジックとデータストレージをカプセル化します
- 独自のセキュリティ レイヤーを備え、クライアント資格情報フローを介して REST サーバー上のデータにアクセスするだけの本格的なクライアント アプリケーションが既に配置されています。クライアントサイドで決めたことを誰ができるか
- Facebook の連絡先アプリのように、クライアント資格情報を使用して REST サーバー上のデータにアクセスする中小規模のアプリケーションがいくつかあります。
- 現在、大きなクライアント アプリケーションが行うすべてのことを行うために REST レイヤーにアクセスする JavaScript のみを使用してクライアント アプリケーションを開発していますが、個々のユーザーを認証し、マルチテナントを許可する手段も提供する必要があります。したがって、この新しいクライアント アプリケーションは、ユーザー名とパスワードの許可を使用して認証し、メソッド レベルのセキュリティを使用してユーザーを承認します。
そのため、独自のセキュリティ機能を実行する信頼できるアプリケーションへの完全なアクセスを提供する必要がある REST サーバーがあり、同じサーバーが新しいマルチテナント JavaScript クライアント アプリケーションのユーザーにアクセスを提供する必要があります。本番環境では、それぞれ独自のデータベースを持つ複数の REST サーバーがありますが、コアは常に同じであるため、理論的には 1 つのサーバーですべてを処理できるはずです。