2017-06-23 10 views
2

を維持し、ユーザーセッションは、プロセス
1の下を通して維持することができます)、リソースへの最初のアクセスで、ユーザーID &パスワードを使用して認証するためのチャレンジユーザー。
2)信任状が正しい場合、ユーザーを正常に認証してセッションIDを作成します
3)セッションIDをヘッダーに添付し、要求された情報をユーザーに返します。
4)その後のリクエストで、サーバはヘッダ内の有効なセッションIDを確認します
5)sessionidが有効で期限切れでない場合、認証の必要はなく、ユーザは要求された処理を実行できます。春のセキュリティ:RESTfulなWebサービスと古典JSPやPHPアプリケーションでユーザーセッション

上記の全体のポイントは、ユーザーが資格情報を1回だけ入力することです。

しかし、リソースがajax/jquery呼び出しを通じてアクセスされる完全な設計でこれを達成する方法。古典的なJSPと同様に、私はユーザーに資格情報を一度入力するだけで、これを達成することができます(少なくとも私はajaxリクエストでサーバーにヘッダー(sessionid)を渡す方法を知らない)

私はを使用しています api with spring security - つまり基本認証でフィルタプロキシ(スプリングセキュリティフィルタチェーン)を委任します。そして、私は、ログインするために一度だけ彼の資格情報を入力し、サーバ上の安らかなリソースへの次のAjaxリクエストは、自動的にユーザーが最近サインインしたことを知ることができる必要があり、再認証する。

答えて

1

まず、REST APIをカバーするようにSpring Securityを設定する必要があります。ここでは、これを行う方法の例の1つ - Spring Security for a REST APIです。

ユーザー認証を維持する方法の1つは、セッションIDをクッキーまたは他のストレージに保存することです。この方法でバックエンドはそれを検証できます。バックエンド側では、REST APIはステートレスでなければなりません。だから、最良の方法は、いくつかのセッションテーブルのデータベースにセッションIDを保持することです(Redisはそのような場合の通常の解決策です)。

REST APIをデザインしたい場合は、AJAXコールごとに説明したように、セッションIDをヘッダーで送信します。 1つのAPIメソッドでは、ユーザーを認証し、トークン(またはセッションID)を提供する必要があります。トークン(またはセッションID)は、クライアントによって(クッキーなどの)どこかに格納する必要があります。他のすべてのメソッドでは、リソースにアクセスできるようにする必要があります。ユーザーがログアウトすると、この値は消去され、ユーザーはリソースにアクセスできなくなります。

+0

これは私が期待しているものに非常に近いです。 「各AJAXコールで説明したように、ヘッダーにセッションIDを送信します。」どのようにajax/jqueryを介してこれを達成するための小さなコードスニペット。 – samshers

+0

例が十分に小さくないので、コードを提供することは意味がないと思います。 httpリクエストのヘッダーとして追加するだけです。 –

関連する問題