問題タブ [spring-session]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - セキュリティで保護された Web サービスの使用 (Spring Session)
この例に示すようにアプリケーションを実装しました
http://spring.io/blog/2015/01/20/the-resource-server-angular-js-and-spring-security-part-iii
1つUiApplication
(ポート 8080) と2 つ ResourceApplication
の s (ポート 8090 および 9000)があります。
認証は、Spring Session と Redis を使用した例に示されているように機能します。
私のシナリオは次のとおりです。
ユーザーがログインしています
UiApplication
ユーザーが
ResourceApplication
Aにリクエストを送信ResourceApplication
A がリクエストを受け取り、ResourceApplication
Bを消費したい
私の問題: A がBResourceApplication
から 401 Unauthorized を受け取るResourceApplication
Aさんにリクエストを送ったユーザーのセッションは利用できますResourceApplication
か?
spring - Spring (HTTP) セッションに保存されたデータは、破棄中に Redis から削除されません
新しくリリースされた Spring Session コンポーネントで PoC を行っています。これは、セッションとセッションに保存されたオブジェクト/データの両方が保持される Redis リポジトリによってバックアップされます。
- アプリケーションでセッションが作成されました
- Redis CLI で「Keys *」コマンドを実行し、新しいエントリを確認しました (「spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164」など)。
- アプリケーションから、カスタム Bean をセッションに追加しました
- Redis CLI で "Keys *" コマンドを実行し、この Bean の新しいエントリをもう 1 つ確認しました ("\xac\xed\x00\x05t\x00\tcustomer1" のように、Bean には値が 'customer1' の文字列があったため)
- 30 秒の自動有効期限を設定し、その間アプリケーションを使用せずに残しました
- sessionDestroyEvent がトリガーされ、ApplicationListener を実装するリスナーでキャプチャされました
- Redis CLI で「Keys *」コマンドを実行すると、セッションの最初に作成されたエントリがなくなりましたが、カスタム Bean オブジェクト (customer1) はまだ Redis に残っていました
質問:
Redis Store をクリーンアップするのはユーザーの責任ですか? セッションに多くのデータ要素が保存されている場合、セッションの破棄 (ログアウトおよびタイムアウト イベント) 中に redis ストアから手動でそれらをクリーンアップする必要があります。
更新:
この質問を投稿して (おそらく 3/4 分後) Redis-CLI に戻ってキーを一覧表示しましたが、Customer1 オブジェクトが見つかりません。つまり、ガベージ コレクションのように、Redis によって一定の間隔でクリーンアップが実行されるということですか?
spring - 組み込み Redis が実際の Redis サーバーに接続しようとすると、例外が発生します
Spring プロファイルに組み込みの redis を使用しようとしていdev
ます (cloud
実際の redis に接続するプロファイルもあります)。
ただし、組み込みの redis 構成が実際の redis に接続しようとしているようです。
dev
プロファイルを実行すると、次のエラーが表示されます。
これJedisDataException NOAUTH
は、実際の Redis サーバーで認証を有効にしており、実際のサーバーに接続しようとしているためです...
これが私のSpring構成です:
「開発」および「テスト」構成:
クラウド構成:
ここに私の依存関係があります:
プロファイル:
編集:
これが私が得る例外であり、対応する構成を以下に示します。
編集した redis 構成は次のとおりです。
java - Spring Session は Web Flow の状態を保持しますか?
Spring Web Flow に適していると思われるウィザードがいくつかありますが、Web Flow は重要なフロー状態をサーバー側に保存しますが、どこにあるのかわかりません。私は迅速な統合と展開のサイクルを使用しているため、サーバーの再起動後の耐久性は必須です。
SessionBindingConversationManager
Web Flow を使用してフロー状態を に保存すると思います。そのHttpSession
ため、Spring Session はその状態を外部セッション ストアに保持します。これは正しいです?その場合、Spring Session を構成してアプリケーションに Web Flow コンポーネントを追加する以外に何かする必要がありますか?
java - Spring Session、Websocket、REST トークンのセキュリティ
現在、データベースの変更に関するリアルタイムの更新を取得するための REST API と Websocket ブローカー エンドポイントを含む Spring アプリケーションがあります。
基本認証で認証する組み込みの redis サーバーを使用して Spring Session プロジェクトに正常に移行し、セッション ID を後続のリクエストで x-auth-token ヘッダーとして使用できます。
私たちが抱えている問題は、Websocket を保護することです。Angular では、stomp.js / sockjs ライブラリのラッパー ディレクティブがありますが、Websocket アップグレード リクエストで x-auth-token ヘッダーを設定する方法がわかりません。
私たちは何か間違ったことをしていますか?この種のセキュリティスキームにアプローチするための推奨される方法は何ですか?
スタック:
- トムキャット 7.0.57
- 春のセキュリティ 4.0.0.RC2
- スプリングセッション 1.0.0.RELEASE
- 春 MVC 4.1.4
- AngularJS 1.2.28
spring-session - spring-session で現在のセッションを取得する
これが私の質問です。私は、プロジェクトを実装するために顧客に提供するプラットフォームを作成しています。したがって、私のプラットフォームでは、、 、 などのSessionService
メソッドを持つ を作成しました。春のセッションの前は、次のように見えました。getCurrentSession
getAttribute
setAttribute
getCurrentMethod
@Override
public HttpSession getCurrentSession() {
if (this.session == null) {
final ServletRequestAttributes attr = (ServletRequestAttributes) RequestContextHolder.currentRequestAttributes();
return attr.getRequest().getSession(true); // true == allow create
}
return this.session;
}
見栄えが悪く、redisのような裏付けがありませんが、これは完全に正常に機能しました。に移行したいのですspring-session
が、を使用しSessionRepository
てユーザーの現在のセッションを見つけたいと思っていましたgetSession(String id)
が、そこにはしか表示されません。IDはCookieに保存されていると思うので、それを使用するには、おそらくHttpServletRequest
コントローラーからファサード、dbレイヤーに非常に近いサービスレイヤーにオブジェクトを渡す必要があります。これは私には非常に悪い考えのように見えるので、私の質問は次のようになります: currentSession を db レイヤーの近くに取得する方法はありますか? 私が考える1つの方法は、コントローラーを呼び出すインターセプターを作成することです。これにより、現在のセッションがリポジトリーまたはサービスに設定されますか? これが正しい方法かどうかはわかりません。
spring-security - 春のセッション リメンバーミー
春のセッションのサンプルを試してみましたが、とても興味深いです。
私は次のことをしようとしています。リクエストに基づいてセッション ID の TTL を変更したい安らかなサービスにスプリング セッションを接続しようとしています。
たとえば、安らかなサービスを利用しているクライアントは、オプションのオン/オフを覚えているかもしれません。
Remember me on の場合、TTL を 90 日として提供したいのに対し、remember me off の場合は TTL を 5 分に設定したいのですが、春のセッションでこれをどのように達成しますか。
また、ユーザーの同時セッションをどのように管理 (制限) するか、Spring セキュリティと統合することで同時セッションを実現できるか、Spring セッションで提供されるのと同じ機能です。
提案してください、どんな助けでも大歓迎です