Sprigsecurity配置ファイルの詳細(アカウント1つを含むローカル登録プロファイル)

14612 ワード

プロファイルの詳細
目次
プロファイルの詳細
3.X
4.X
シングルポイント登録設定session-manage ment
1.1     検知セッションタイムアウト
1.2     concurrency-control
1.3     セッション 固定攻撃保護
3.X
  
  
      
      
      
      
      
      
      
      
      
      
      
          
      
      
      
      
  
  
          
          
  
          
  
  
          
          
          
          
          
  
          
  
   
  
  
          
              
          
          
          
  
      
  
          
          
          
          
          
          
          
      
      
      
      
      
      
      
          
  
      
      
      
      
      
      
      
      
      
      
      
      
          
              
              
              
          
      
      
      
      
      
      
          
  
      
      
      
          
      
  
      
      
4.X
  
  
  
      
  
  
      
      
      
      
  
  
      
          
          
          
          
          
          
          
              
          
  
  
          
  
  
          
              
              
          
  
  
          
      
  
  
      
  
  
      
  
  
      
      
  
  
      
          
      
  
  
      
      
          
          
          
          
      
  
  
      
      
  
  
      
      
          
      
  
  
      
回転:https://www.cnblogs.com/yyxxn/p/8080141.html
シングルポイント登録設定session-manage ment
 
       Spring Securityはhttp元素の下のサブ要素session-managementを通じてHttp Session管理に対するサポートを提供しています。
 
1.1     検知セッションタイムアウト
       Spring Securityは、ユーザがタイムアウトしたsessionIdを使用して要求するときにユーザを指定のページに案内することができます。これは次のような構成で実現できます。
   
      ...
      
      「/session-utimeout.jsp」/>
      ...
   
 
       Sessionタイムアウトのリダイレクトページは認証が必要ではないはずです。そうでなければ、sessionタイムアウトページにリダイレクトすると、直接ユーザ登録ページに転送されます。また、このような方法でsessionのタイムアウトを検出すると、ログインを終了し、ブラウザを閉じていない場合に再度ログインし、Spring Securityはエラーの報告セッションがタイムアウトした可能性があります。これはログインを終了したとしても、sessionを無効にした場合、session情報を保存するクッキーがクリアされていないため、次回の要請時には以前のsessionIdを使って要求することになります。解決策は表示の定義ユーザがログインを終了する際に対応するセッション情報を保存するクッキーを削除することです。
   
      ...
      
      「JSESSIONID」/>
      ...
   
       また、Spring SecurityはすべてのServlet容器に有効であることを保証していません。一体あなたの容器に効果があるかどうかは自分で実験する必要があります。
 
1.2     concurrency-control
       通常、あなたのアプリケーションでは、同じユーザが同時に何度もログインした時に、一つだけがあなたのシステムに成功したということを望むかもしれません。通常対応する行為は、次のログインが前回のログインを無効にしたり、直接に後のログインを制限したりします。Spring Securityのsession-managementはこのような制限を提供してくれました。
       まず、web.xmlで下記のモニターを定義する必要があります。
   
   org.sprigframe ework.security.web.session.HttpSession EventPublisher
   
 
       session-management要素の下にあるconcurrency-control要素は、同じユーザがアプリケーションで同時に存在することができる認証されたsessionの数を制限するために使用される。この値はデフォルトでは1で、concurrency-control要素のmax-sessions属性により指定できます。
   「true」
      ...
      
         「1」/>
      
      ...
   
 
       同一のユーザが同時に存在する認証されたセッションの数がmax-sessionsで指定された値を超えた場合、Spring Securityのデフォルトポリシーは、以前の設定を無効にすることである。ユーザの再登録を制限するなら、concurrency-controlのerror-inf-exceededの値はtrueとする。
 
   「true」
      ...
      
         「1」 error-inf-maximm-exceeded="true"/"
      
      ...
   
 
       error-inf-maximm-exceededをtrueとして設定した後、もしあなたが既に登録していたら、再度ログインしたいと思います。システムはあなたのログインを拒否し、form-loginで指定されたauthentication-failurlにリダイレクトします。再登録がRemember-Mareによって行われた場合、authentication-failurlには転送されず、未許可のエラーコード401をクライアントに返します。もし指定されたページをリダイレクトしたいなら、session-manageのsession-authentication-error-url属性で指定できます。このurlはSpring Securityから管理されない、すなわちhttp元素でsecure="none"を設定する必要があります。
   none pattern=「/none/*」 />
   
      
      
      「/**」 access=「ロレックス」/>
      
      「/none/sessionuuthentication uerror.jsp」
         「1」 error-inf-maximm-exceeded="true"/"
      
      「dataSource」/>
   
 
       上記の構成において、私たちはsession-authentication-error-urlを「/none/session-session uuthentication-uerror.jsp」として配置しました。 pattern=「/none/*」 />「none」で開始するURLはすべてSpring Securityによって制御されないように指定されています。これにより、ユーザーがログインした後、再度Remember-Myeを通じて自動登録を行うと、「/none/session uuthentication.jsp」にリダイレクトされます。
       上記の構成ではなぜ私達は「none」を通す必要がありますか? pattern=「/none/*」 />私達のsession-authentication-error-urlを指定してSpring Securityに制御されませんか?それを「/none/*」access=「IS AUT HENTICATEDoEDUANONYMOUSLY」に変えたらだめですか?これは前に紹介した両者の違いに関連しています。前者はSpring Securityフィルタを一切使用しないという意味で、当然Spring Securityの認証は不要です。後者はSpring SecurityのFilterChinによってフィルタリングされます。対応するURLだけが匿名でアクセスできます。登録不要でアクセスできます。後者を使う時は、REMEMBER_MEFILTERは、ユーザがログインしていないことを検出し、またRemember-Maeに関する情報を提供しています。これはREMEMBER_をもたらします。MEFILTERは自動登録を行います。自動登録時に同じユーザを制限していますので、同じ時間に一回しかログインできません。その後、登録を拒否されます。この時はsession-authentication-error-urlにリダイレクトし、session-authentication-error-urlにリダイレクトして、REMEMBERを経ます。MEFILTERは時又で自動登録されて、死のサイクルになります。だからsession-authentication-error-urlは「none」を使うべきです。 pattern=「/none/*」 />Spring Securityによって制御されないように設定します。
 
       また、expired-url属性により、ユーザが再登録を試みた結果、セッションがタイムアウトした場合にジャンプするページを指定することができます。また、このURLを設定することは認証不要です。
   「true」
      
      
      「/expired.jsp」 access=「IS AUT HENTICATEDUANONY MOUSLY」/>
      「/**」 access=「ロレックス」/>
      
         「1」 expired-url="/expired.jsp" />
      
   
 
1.3     セッション 固定攻撃保護
       session固定とは、サーバがクライアントにセッションを作成した後、このセッションが期限が切れる前に、そのセッションを通じて通信することです。セッション 固定攻撃とは、悪意のある攻撃者がアクセスアプリケーションを通じてsessionを作成し、他のユーザに同じsessionを使用してログインさせること(例えば、sessionIdパラメータを含むリンクを送信することによって)で、他のユーザがログインした後、攻撃者が元のsessionIdアクセスシステムを利用して元のユーザと同じ権限を得ることです。Spring Securityはデフォルトでsession固定攻撃に対して保護措置を取っています。ユーザー登録時に新たなsessionを作成します。もしあなたのアプリケーションがこのような保護や保護措置が必要でないなら、あなたのいくつかの需要と衝突して、session-managementのsession-fixation-protection属性によって保護戦略を変えることができます。この属性のオプション値は以下の3つです。
l migrate Session:これはデフォルトです。ユーザー登録後に新しいセッションを作成し、元のセッションの中のatributeを新しいセッションにコピーするという意味です。
l none:元のセッションを継続して使うことを表します。
l newSession:新たなセッションを作成するという意味ですが、copyオリジナルセッションが持つatributeではありません。
回転:https://www.cnblogs.com/fenglan/p/5913352.html
(注:本文はSpring Security 3.1.6に基づいて書いています。)