問題タブ [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.
http - http セキュリティの hasRole() メソッドはどのように機能しますか
データベース (MongoDB) からユーザー情報を取得し、この REST API を使用するクライアントにそのデータを返す RESTful API を Spring で開発しました。ただし、データが取得される前に、REST API はユーザーが管理者であるかどうかを確認します。管理者のみが GET 操作を実行してユーザー情報を取得できます
したがって、私の securityconfig.java クラスには次のものがあります。
これで、すべてのユーザーにそれぞれの役割が与えられ、呼び出したときにすべてが期待どおりに機能しています。curl adminusername:adminpassword@localhost:8080/users/get/AllUsers
adminusername
のユーザー名を持つユーザーは管理者であり、権限を持っているため、すべてのユーザーを取得できます。しかし、管理者以外のユーザー名に置き換えるadminusername
と、アクセス拒否エラーが発生します。
私の質問は、adminusername:adminpassword
@localhost:8080.... の前の部分は HTTP 要求のヘッダーですか?
私が尋ねる理由は、ログインできるクライアントを作成し、資格情報 (ユーザー名とパスワード) を検証し、ユーザー名とパスワードをセッション IDとして使用する必要があるためです。これにより、クライアントがいつでも HTTP 要求を行うことができます。ログイン後の呼び出しでは、ユーザー名とパスワードがヘッダーに追加され、REST API によって処理されます。
の hasRole()
username:password
セキュリティ設定では@localhost:8080の前に依存しています.... これ@RequestHeader
はスプリングレスト API と同じですか?
spring - 1 つの redis サーバーで 2 つの異なる spring-session アプリケーションを使用することは可能ですか?
クラスター化されたセッションを実装するために、1 つの nginx、2 つの tomcat、および 1 つの redis サーバーで Spring セッションを正常に使用し始めましたが、いくつかの疑問が生じました。まず第一に、異なるアプリケーションについて話すときは、2 つの完全なアプリケーションを意味します。同じアプリケーションの 2 つのインスタンスについては話していません。
2 つ以上の異なる spring-session アプリケーションを使用して、本番環境の Redis サーバーが 1 つだけのセッションを保存できますか?
これらのアプリケーションは異なる tomcats インスタンスで実行できますか?
Springセッションは、1つのredisサーバーを持つ異なるアプリケーション間のセッションIDの競合をどのように回避しますか?
この問題を回避するには、サフィックスまたはプレフィックス ID を追加する必要がありますか?
spring - redis がオンラインでない場合、フォールバックするように RedisHttpSessionConfigure を構成するにはどうすればよいですか
ここに記載されているように、私は spring-session + redis を使用しています: http://docs.spring.io/spring-session/docs/current/reference/html5/guides/httpsession-xml.html
RedisHttpSessionConfigure を構成して、ローカル開発で redis が不要になり、アプリケーションが単純にコンテナー セッション処理をデフォルトにするようにするにはどうすればよいですか?
java - Spring Boot を使用した Spring REST のセッション
Springブートを使用して、Spring RESTでセッションを作成するにはどうすればよいですか? REST API を使用したアプリケーションの準備ができたので、セッションを適用するだけです。Spring REST と Spring Boot の 2 つの方法を見てきました
http://docs.spring.io/spring-session/docs/current/reference/html5/guides/rest.html
および http://docs.spring.io/spring-session/docs/current/reference/html5/guides/boot.html#boot-sample
それで、私は両方を使用していますが、両方の方法を組み合わせる必要がありますか? 助けてください
spring-cloud - spring-session を使用してマイクロサービス間で資格情報を伝播する最良の方法
この spring.io の優れたガイドで説明されているものと非常によく似たアーキテクチャを使用しています。私たちのゲートウェイは認証を処理し、セッションは spring-session を使用して Redis に保存されます。マイクロ サービスのエンドポイントはセキュリティで保護されており、スプリング セッションも使用します。
マイクロ サービスでは、別のマイクロ サービスのエンドポイントを呼び出す必要があります。ディスカバリ クライアントを介して URL を簡単に取得できますが、資格情報を提供する必要があり、それを実現する最善の方法がわかりません。
HttpRequest から SESSION Cookie を取得し、それをある種のスレッド ローカル変数またはリクエスト スコープ Bean に格納し、それを RestTemplate で使用して 2 番目のマイクロ サービスを呼び出すことを考えています。RestTemplate は MVC コントローラーではなくサービス層で使用されるため、このリクエスト スコープ Bean が必要です。Cookie から取得したこのセッション識別子でサービス層メソッドを汚染したくないからです。
このニーズにアプローチするより良い方法はありますか? これに対するSpring Cloudのサポートはすでにありますか?
ご意見をお寄せいただきありがとうございます
spring - セッションを無効にせずに、Spring-Session (Redis) と Spring-security でユーザーをログアウトしますか?
spring-sessionに切り替える前に、春のセキュリティでユーザーを正しくログアウトする方法はうまくいきました。ユーザーがログアウトした後にセッションを無効にしたくありません。
しかし、redis で spring-session を使い始めた後、ユーザーはログアウトされません。私は今使用する必要がありますnew SecurityContextLogoutHandler().logout(request, response, authentication);
これにより、セッションが無効になります。セッションを無効にせずにユーザーをログアウトする方法はありますか?
spring-session - Spring Session + REST および x-auth-token
私はSpring Sessionを使用している初心者です。私の意図は、REST API で Spring Session を使用することです。私は例に従いましたが、いくつかの不明な点があります。私が作成しようとしたフローは次のとおりです。 1.ログインを要求し、http ヘッダーのユーザーとパスワードを提供します。見てきたように、セッションに関する情報は Redis に保存されます。2. sessionID を提供する REST API の任意のリソースにリクエストします。完全な認証を行う必要があるという例外がスローされます。ヘッダーに sessionID を指定すれば十分だと思いましたか? しかし、そうではありません。Spring Sessionを使用して前述のフローを実現することは可能ですか? 前もって感謝します。
spring-session - セキュリティ構成 - configureGlobal
Spring Session REST の例を試してみて、次のフローを作成できるかどうかに興味があります。 1. 最初に、ユーザーは資格情報、ユーザー名、およびパスワードを渡します。2. Spring Session はトークンを生成し、それを Redis 3 に入れます。次にユーザーがいくつかのリソースを要求すると、そのトークンが渡されます。私の問題は、次のコードがハードコードされ
code
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication().withUser("user").password("password").roles("USER");
}
ていることです。前もって感謝します。
spring-security - DB + Spring セキュリティ認証、クラスター環境に保存された Spring セッション
私はSpring 4に1つのアプリケーションを持っています.Spring Securityを認証に使用し、Spring Sessionを使用してクラスター化された環境でセッションを共有します。
私はSpring SessionからsessionRepositoryを実装してセッションをデータベースに保存していたので、サイトの春のセッションに入ると「SESSION」という名前のCookieを作成してDBに保存します。
このセッション DB 実装のアイデアは次のとおりです。
Spring 4 でリレーショナル データベース ベースの HTTP セッション パーシスタンスを行うにはどうすればよいですか?
現時点では、「SESSION」という 1 つの Cookie があります。サイトにログインすると、Spring Security は別の Cookie「JSESSION」を作成しますが、これは DB に保存されず、この Cookie には「認証情報」があります。
私の質問は次のとおりです。この実装は、クラスター化された環境に適していますか? または、別の変更を加える必要がありますか?
前もって感謝します。
編集2:
私は最近アプリをテストしましたが、説明を1つ間違えました。サイトにアクセスすると、「SESSION」Cookieにログインしても「SESSION」Cookieが1つ残っていますが、別のCookieはありません。セッション テーブルを更新し、ユーザーがログオフしているサイトを更新します。これは正しい動作ですか?
編集:
これが SecurityConfig からの「構成」です (WebSecurityConfigurerAdapter から拡張)。
ここで私のログイン成功ハンドラ:
}